okami.mom/ultraviolet

git clone https://git.nkp.pet/okami.mom/ultraviolet

Ayman Bagabasfix: lint issuesf678006

main
1.3 KiB56 linesraw
1//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || aix
2// +build darwin dragonfly freebsd linux netbsd openbsd solaris aix
3
4package uv
5
6import (
7	"github.com/charmbracelet/x/term"
8	"github.com/charmbracelet/x/termios"
9)
10
11func makeRaw(inTty, outTty term.File) (inTtyState, outTtyState *term.State, err error) {
12	if inTty == nil && outTty == nil {
13		return nil, nil, ErrNotTerminal
14	}
15
16	// Check if we have a terminal.
17	for _, f := range []term.File{inTty, outTty} {
18		if f == nil {
19			continue
20		}
21		inTtyState, err = term.MakeRaw(f.Fd())
22		if err == nil {
23			break
24		}
25	}
26
27	if err != nil {
28		return nil, nil, err //nolint:wrapcheck
29	}
30
31	return inTtyState, outTtyState, nil
32}
33
34func getWinsize(inTty, outTty term.File) (ws Winsize, err error) {
35	// Try both inTty and outTty to get the size.
36	err = ErrNotTerminal
37	for _, f := range []term.File{inTty, outTty} {
38		if f == nil {
39			continue
40		}
41		size, err := termios.GetWinsize(int(f.Fd()))
42		if err == nil {
43			return Winsize(*size), nil
44		}
45	}
46	return
47}
48
49func getSize(inTty, outTty term.File) (w, h int, err error) {
50	ws, err := getWinsize(inTty, outTty)
51	return int(ws.Col), int(ws.Row), err
52}
53
54func optimizeMovements(state *term.State) (useTabs, useBspace bool) {
55	return supportsHardTabs(uint64(state.Oflag)), supportsBackspace(uint64(state.Lflag)) //nolint:unconvert,nolintlint
56}