summaryrefslogtreecommitdiffstats
path: root/vendor
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-10-11 09:49:07 +1100
committerJesse Duffield <jessedduffield@gmail.com>2020-10-12 08:26:31 +1100
commitb8ad1883f50104fc6565496144e646ba9d184021 (patch)
tree9368fd214636f18a75bc4d74847532d709821a2a /vendor
parent582fd24d78e5735655c9ba7d6aaa246769398495 (diff)
fix delta
Diffstat (limited to 'vendor')
-rw-r--r--vendor/github.com/jesseduffield/gocui/escape.go37
-rw-r--r--vendor/github.com/jesseduffield/gocui/view.go34
-rw-r--r--vendor/modules.txt2
3 files changed, 68 insertions, 5 deletions
diff --git a/vendor/github.com/jesseduffield/gocui/escape.go b/vendor/github.com/jesseduffield/gocui/escape.go
index 540946117..c8bad21ad 100644
--- a/vendor/github.com/jesseduffield/gocui/escape.go
+++ b/vendor/github.com/jesseduffield/gocui/escape.go
@@ -16,6 +16,19 @@ type escapeInterpreter struct {
csiParam []string
curFgColor, curBgColor Attribute
mode OutputMode
+ instruction instruction
+}
+
+const (
+ NONE = 1 << iota
+ ERASE_IN_LINE
+)
+
+type instruction struct {
+ kind int
+ param1 int
+ param2 int
+ toWrite []rune
}
type escapeState int
@@ -57,10 +70,11 @@ func (ei *escapeInterpreter) runes() []rune {
// terminal escape sequences.
func newEscapeInterpreter(mode OutputMode) *escapeInterpreter {
ei := &escapeInterpreter{
- state: stateNone,
- curFgColor: ColorDefault,
- curBgColor: ColorDefault,
- mode: mode,
+ state: stateNone,
+ curFgColor: ColorDefault,
+ curBgColor: ColorDefault,
+ mode: mode,
+ instruction: instruction{kind: NONE},
}
return ei
}
@@ -73,6 +87,10 @@ func (ei *escapeInterpreter) reset() {
ei.csiParam = nil
}
+func (ei *escapeInterpreter) instructionRead() {
+ ei.instruction.kind = NONE
+}
+
// parseOne parses a rune. If isEscape is true, it means that the rune is part
// of an escape sequence, and as such should not be printed verbatim. Otherwise,
// it's not an escape sequence.
@@ -134,6 +152,17 @@ func (ei *escapeInterpreter) parseOne(ch rune) (isEscape bool, err error) {
ei.state = stateNone
ei.csiParam = nil
return true, nil
+ case ch == 'K':
+ p, err := strconv.Atoi(ei.csiParam[0])
+ if err != nil {
+ return false, errCSIParseError
+ }
+ ei.instruction.kind = ERASE_IN_LINE
+ ei.instruction.param1 = p
+
+ ei.state = stateNone
+ ei.csiParam = nil
+ return true, nil
default:
return false, errCSIParseError
}
diff --git a/vendor/github.com/jesseduffield/gocui/view.go b/vendor/github.com/jesseduffield/gocui/view.go
index 89cb7ab28..3b83d4a0c 100644
--- a/vendor/github.com/jesseduffield/gocui/view.go
+++ b/vendor/github.com/jesseduffield/gocui/view.go
@@ -400,6 +400,15 @@ func (v *View) Write(p []byte) (n int, err error) {
}
default:
cells := v.parseInput(ch)
+ if v.ei.instruction.kind != NONE {
+ switch v.ei.instruction.kind {
+ case ERASE_IN_LINE:
+ v.eraseInLine()
+ }
+ v.ei.instructionRead()
+ continue
+ }
+
if cells == nil {
continue
}
@@ -416,6 +425,31 @@ func (v *View) Write(p []byte) (n int, err error) {
return len(p), nil
}
+func (v *View) eraseInLine() {
+ code := v.ei.instruction.param1
+ switch code {
+ case 0:
+ // need to write till end of the line with cells containing the same bg colour as we currently have.
+
+ if len(v.lines) == 0 {
+ v.lines = append(v.lines, []cell{})
+ }
+ nl := len(v.lines)
+ width, _ := v.Size()
+ cellCount := width - len(v.lines[nl-1])
+ c := cell{
+ fgColor: v.ei.curFgColor,
+ bgColor: v.ei.curBgColor,
+ chr: ' ',
+ }
+ for i := 0; i < cellCount; i++ {
+ v.lines[nl-1] = append(v.lines[nl-1], c)
+ }
+ default:
+ // don't recognise sequence. Until we merge the gocui master branch we can't handle going backwards.
+ }
+}
+
// parseInput parses char by char the input written to the View. It returns nil
// while processing ESC sequences. Otherwise, it returns a cell slice that
// contains the processed data.
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 052b13c27..5ecef1386 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -104,7 +104,7 @@ github.com/jesseduffield/go-git/v5/utils/merkletrie/filesystem
github.com/jesseduffield/go-git/v5/utils/merkletrie/index
github.com/jesseduffield/go-git/v5/utils/merkletrie/internal/frame
github.com/jesseduffield/go-git/v5/utils/merkletrie/noder
-# github.com/jesseduffield/gocui v0.3.1-0.20201007110350-cc51e317126e
+# github.com/jesseduffield/gocui v0.3.1-0.20201010224802-8a6768078fd7
## explicit
github.com/jesseduffield/gocui
# github.com/jesseduffield/termbox-go v0.0.0-20200823212418-a2289ed6aafe