Start work on porting unicode input kitten to Go

This commit is contained in:
Kovid Goyal
2023-02-09 19:07:55 +05:30
parent a2e4efbb14
commit 53e33a80ba
20 changed files with 39037 additions and 76658 deletions

View File

@@ -195,11 +195,11 @@ func (self *Loop) Println(args ...any) {
self.QueueWriteString("\r\n")
}
func (self *Loop) SaveCursor() {
func (self *Loop) SaveCursorPosition() {
self.QueueWriteString("\x1b7")
}
func (self *Loop) RestoreCursor() {
func (self *Loop) RestoreCursorPosition() {
self.QueueWriteString("\x1b8")
}
@@ -341,6 +341,12 @@ func (self *Loop) AllowLineWrapping(allow bool) {
}
}
func (self *Loop) SetWindowTitle(title string) {
title = strings.ReplaceAll(title, "\033", "")
title = strings.ReplaceAll(title, "\x9c", "")
self.QueueWriteString("\033]2;" + title + "\033\\")
}
func (self *Loop) ClearScreen() {
self.QueueWriteString("\x1b[H\x1b[2J")
}

View File

@@ -168,6 +168,10 @@ func New(loop *loop.Loop, r RlInit) *Readline {
return ans
}
func (self *Readline) SetPrompt(prompt string) {
self.prompt = self.make_prompt(prompt, false)
}
func (self *Readline) Shutdown() {
self.history.Shutdown()
}

37
tools/tui/ui_kitten.go Normal file
View File

@@ -0,0 +1,37 @@
// License: GPLv3 Copyright: 2023, Kovid Goyal, <kovid at kovidgoyal.net>
package tui
import (
"encoding/json"
"fmt"
"os"
"kitty/tools/utils"
)
var _ = fmt.Print
func KittenOutputSerializer() func(any) (string, error) {
write_with_escape_code := os.Getenv("KITTEN_RUNNING_AS_UI") != ""
os.Unsetenv("KITTEN_RUNNING_AS_UI")
if write_with_escape_code {
return func(what any) (string, error) {
data, err := json.Marshal(what)
if err != nil {
return "", err
}
return "\x1bP@kitty-kitten-result|" + utils.UnsafeBytesToString(data) + "\x1b\\", nil
}
}
return func(what any) (string, error) {
if sval, ok := what.(string); ok {
return sval, nil
}
data, err := json.MarshalIndent(what, "", " ")
if err != nil {
return "", err
}
return utils.UnsafeBytesToString(data), nil
}
}