mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-08 14:18:26 +02:00
DRYer
This commit is contained in:
@@ -110,11 +110,10 @@ func run_plain_text_loop(opts *Options) (err error) {
|
|||||||
defer tempfile.Close()
|
defer tempfile.Close()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications)
|
lp, err := loop.NewForSimpleInteraction()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lp.NoRoundtripToTerminalOnExit = true
|
|
||||||
dest := "c"
|
dest := "c"
|
||||||
if opts.UsePrimary {
|
if opts.UsePrimary {
|
||||||
dest = "p"
|
dest = "p"
|
||||||
|
|||||||
@@ -286,11 +286,10 @@ func parse_aliases(raw []string) (map[string][]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func run_get_loop(opts *Options, args []string) (err error) {
|
func run_get_loop(opts *Options, args []string) (err error) {
|
||||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
lp, err := loop.NewForSimpleInteraction()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
lp.NoRoundtripToTerminalOnExit = true
|
|
||||||
var available_mimes []string
|
var available_mimes []string
|
||||||
var wg sync.WaitGroup
|
var wg sync.WaitGroup
|
||||||
var getting_data_for string
|
var getting_data_for string
|
||||||
|
|||||||
@@ -43,11 +43,10 @@ func (self *Input) has_mime_matching(predicate func(string) bool) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func write_loop(inputs []*Input, opts *Options) (err error) {
|
func write_loop(inputs []*Input, opts *Options) (err error) {
|
||||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
lp, err := loop.NewForSimpleInteraction()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
lp.NoRoundtripToTerminalOnExit = true
|
|
||||||
var waiting_for_write loop.IdType
|
var waiting_for_write loop.IdType
|
||||||
var buf [4096]byte
|
var buf [4096]byte
|
||||||
aliases, aerr := parse_aliases(opts.Alias)
|
aliases, aerr := parse_aliases(opts.Alias)
|
||||||
|
|||||||
@@ -21,12 +21,11 @@ func DetectSupport(timeout time.Duration) (memory, files, direct bool, err error
|
|||||||
temp_files_to_delete := make([]string, 0, 8)
|
temp_files_to_delete := make([]string, 0, 8)
|
||||||
shm_files_to_delete := make([]shm.MMap, 0, 8)
|
shm_files_to_delete := make([]shm.MMap, 0, 8)
|
||||||
var direct_query_id, file_query_id, memory_query_id uint32
|
var direct_query_id, file_query_id, memory_query_id uint32
|
||||||
lp, e := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
lp, e := loop.NewForSimpleInteraction()
|
||||||
if e != nil {
|
if e != nil {
|
||||||
err = e
|
err = e
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
lp.NoRoundtripToTerminalOnExit = true
|
|
||||||
print_error := func(format string, args ...any) {
|
print_error := func(format string, args ...any) {
|
||||||
lp.Println(fmt.Sprintf(format, args...))
|
lp.Println(fmt.Sprintf(format, args...))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -112,11 +112,10 @@ func (p *parsed_data) generate_chunks(callback func(string)) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *parsed_data) run_loop() (err error) {
|
func (p *parsed_data) run_loop() (err error) {
|
||||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoMouseTracking, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
lp, err := loop.NewForSimpleInteraction()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
lp.NoRoundtripToTerminalOnExit = true
|
|
||||||
activated := -1
|
activated := -1
|
||||||
prefix := ESC_CODE_PREFIX + "i=" + p.identifier
|
prefix := ESC_CODE_PREFIX + "i=" + p.identifier
|
||||||
|
|
||||||
|
|||||||
@@ -26,11 +26,10 @@ func main(cmd *cli.Command, opts *Options, args []string) (rc int, err error) {
|
|||||||
queries[i] = x
|
queries[i] = x
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoKeyboardStateChange, loop.NoMouseTracking, loop.NoRestoreColors, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
lp, err := loop.NewForSimpleInteraction()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 1, err
|
return 1, err
|
||||||
}
|
}
|
||||||
lp.NoRoundtripToTerminalOnExit = true
|
|
||||||
timed_out := false
|
timed_out := false
|
||||||
lp.OnInitialize = func() (string, error) {
|
lp.OnInitialize = func() (string, error) {
|
||||||
lp.QueryTerminal(queries...)
|
lp.QueryTerminal(queries...)
|
||||||
|
|||||||
@@ -27,19 +27,15 @@ func is_stream_response(serialized_response []byte) bool {
|
|||||||
|
|
||||||
func do_chunked_io(io_data *rc_io_data) (serialized_response []byte, err error) {
|
func do_chunked_io(io_data *rc_io_data) (serialized_response []byte, err error) {
|
||||||
serialized_response = make([]byte, 0)
|
serialized_response = make([]byte, 0)
|
||||||
// we cant do inbandresize notification as in the --no-response case the
|
lp, err := loop.NewForSimpleInteraction()
|
||||||
// command can cause a resize and the loop can quit before the notification
|
|
||||||
// arrives, leading to the notification being sent to whatever is executed
|
|
||||||
// after us. Similarly no focus tracking.
|
|
||||||
lp, err := loop.New(loop.NoAlternateScreen, loop.NoRestoreColors, loop.NoInBandResizeNotifications, loop.NoFocusTracking)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if io_data.on_key_event != nil {
|
if io_data.on_key_event != nil {
|
||||||
lp.FullKeyboardProtocol()
|
lp.FullKeyboardProtocol()
|
||||||
|
lp.NoRoundtripToTerminalOnExit = false
|
||||||
} else {
|
} else {
|
||||||
lp.NoKeyboardStateChange()
|
lp.NoKeyboardStateChange()
|
||||||
lp.NoRoundtripToTerminalOnExit = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|||||||
@@ -141,6 +141,21 @@ func New(options ...func(self *Loop)) (*Loop, error) {
|
|||||||
return l, nil
|
return l, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create a loop that does not change terminal state such as keyboard mode,
|
||||||
|
// resize/focus notifications, mouse tracking, alternate screen etc. Useful
|
||||||
|
// for special purpose kittens such as icat/clipboard/@ etc.
|
||||||
|
func NewForSimpleInteraction() (*Loop, error) {
|
||||||
|
lp, err := New(
|
||||||
|
NoAlternateScreen, NoRestoreColors, NoMouseTracking, NoInBandResizeNotifications,
|
||||||
|
NoFocusTracking, NoKeyboardStateChange,
|
||||||
|
)
|
||||||
|
if err == nil {
|
||||||
|
lp.NoRoundtripToTerminalOnExit = true
|
||||||
|
lp.terminal_options.color_scheme_change_notification = false
|
||||||
|
}
|
||||||
|
return lp, err
|
||||||
|
}
|
||||||
|
|
||||||
func (self *Loop) AddTimer(interval time.Duration, repeats bool, callback TimerCallback) (IdType, error) {
|
func (self *Loop) AddTimer(interval time.Duration, repeats bool, callback TimerCallback) (IdType, error) {
|
||||||
return self.add_timer(interval, repeats, callback)
|
return self.add_timer(interval, repeats, callback)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user