terms_dynamic.go (1550B)
1 //go:build !tcell_minimal && !nacl && !js && !zos && !plan9 && !windows && !android 2 // +build !tcell_minimal,!nacl,!js,!zos,!plan9,!windows,!android 3 4 // Copyright 2019 The TCell Authors 5 // 6 // Licensed under the Apache License, Version 2.0 (the "License"); 7 // you may not use file except in compliance with the License. 8 // You may obtain a copy of the license at 9 // 10 // http://www.apache.org/licenses/LICENSE-2.0 11 // 12 // Unless required by applicable law or agreed to in writing, software 13 // distributed under the License is distributed on an "AS IS" BASIS, 14 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 // See the License for the specific language governing permissions and 16 // limitations under the License. 17 18 package tcell 19 20 import ( 21 // This imports a dynamic version of the terminal database, which 22 // is built using infocmp. This relies on a working installation 23 // of infocmp (typically supplied with ncurses). We only do this 24 // for systems likely to have that -- i.e. UNIX based hosts. We 25 // also don't support Android here, because you really don't want 26 // to run external programs there. Generally the android terminals 27 // will be automatically included anyway. 28 "github.com/gdamore/tcell/v2/terminfo" 29 "github.com/gdamore/tcell/v2/terminfo/dynamic" 30 31 "fmt" 32 ) 33 34 func loadDynamicTerminfo(term string) (*terminfo.Terminfo, error) { 35 if term == "" { 36 return nil, fmt.Errorf("%w: term not set", ErrTermNotFound) 37 } 38 ti, _, e := dynamic.LoadTerminfo(term) 39 if e != nil { 40 return nil, e 41 } 42 return ti, nil 43 }