main
Raw Download raw file
 1package ansi
 2
 3// Modes represents the terminal modes that can be set or reset. By default,
 4// all modes are [ModeNotRecognized].
 5type Modes map[Mode]ModeSetting
 6
 7// NewModes creates a new Modes map. By default, all modes are
 8// [ModeNotRecognized].
 9func NewModes() Modes {
10	return make(Modes)
11}
12
13// Get returns the setting of a terminal mode. If the mode is not set, it
14// returns [ModeNotRecognized].
15func (m Modes) Get(mode Mode) ModeSetting {
16	return m[mode]
17}
18
19// Delete deletes a terminal mode. This has the same effect as setting the mode
20// to [ModeNotRecognized].
21func (m Modes) Delete(mode Mode) {
22	delete(m, mode)
23}
24
25// Set sets a terminal mode to [ModeSet].
26func (m Modes) Set(modes ...Mode) {
27	for _, mode := range modes {
28		m[mode] = ModeSet
29	}
30}
31
32// PermanentlySet sets a terminal mode to [ModePermanentlySet].
33func (m Modes) PermanentlySet(modes ...Mode) {
34	for _, mode := range modes {
35		m[mode] = ModePermanentlySet
36	}
37}
38
39// Reset sets a terminal mode to [ModeReset].
40func (m Modes) Reset(modes ...Mode) {
41	for _, mode := range modes {
42		m[mode] = ModeReset
43	}
44}
45
46// PermanentlyReset sets a terminal mode to [ModePermanentlyReset].
47func (m Modes) PermanentlyReset(modes ...Mode) {
48	for _, mode := range modes {
49		m[mode] = ModePermanentlyReset
50	}
51}
52
53// IsSet returns true if the mode is set to [ModeSet] or [ModePermanentlySet].
54func (m Modes) IsSet(mode Mode) bool {
55	return m[mode].IsSet()
56}
57
58// IsPermanentlySet returns true if the mode is set to [ModePermanentlySet].
59func (m Modes) IsPermanentlySet(mode Mode) bool {
60	return m[mode].IsPermanentlySet()
61}
62
63// IsReset returns true if the mode is set to [ModeReset] or [ModePermanentlyReset].
64func (m Modes) IsReset(mode Mode) bool {
65	return m[mode].IsReset()
66}
67
68// IsPermanentlyReset returns true if the mode is set to [ModePermanentlyReset].
69func (m Modes) IsPermanentlyReset(mode Mode) bool {
70	return m[mode].IsPermanentlyReset()
71}