Fix CI build?
Some checks failed
timw4mail/gilo/pipeline/head There was a failure building this commit
Some checks failed
timw4mail/gilo/pipeline/head There was a failure building this commit
This commit is contained in:
parent
e6513cf3c2
commit
fe1c54317e
@ -4,7 +4,7 @@ import (
|
|||||||
"bufio"
|
"bufio"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"timshome.page/gilo/gilo"
|
gilo2 "timshome.page/gilo/internal/gilo"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Document struct {
|
type Document struct {
|
||||||
@ -107,7 +107,7 @@ func (d *Document) InsertRow(at int, s string) {
|
|||||||
d.dirty = true
|
d.dirty = true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Document) InsertNewline(at *gilo.Point) {
|
func (d *Document) InsertNewline(at *gilo2.Point) {
|
||||||
if at.X == 0 {
|
if at.X == 0 {
|
||||||
d.InsertRow(at.Y, "")
|
d.InsertRow(at.Y, "")
|
||||||
} else {
|
} else {
|
||||||
@ -128,7 +128,7 @@ func (d *Document) MergeRows(to int, from int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (d *Document) ToString() string {
|
func (d *Document) ToString() string {
|
||||||
buf := gilo.NewBuffer()
|
buf := gilo2.NewBuffer()
|
||||||
|
|
||||||
for _, row := range d.rows {
|
for _, row := range d.rows {
|
||||||
buf.Append(row.toString())
|
buf.Append(row.toString())
|
||||||
@ -142,13 +142,13 @@ func (d *Document) RowCount() int {
|
|||||||
return len(d.rows)
|
return len(d.rows)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Document) InsertChar(at *gilo.Point, ch rune) {
|
func (d *Document) InsertChar(at *gilo2.Point, ch rune) {
|
||||||
d.rows[at.Y].insertRune(ch, at.X)
|
d.rows[at.Y].insertRune(ch, at.X)
|
||||||
|
|
||||||
d.dirty = true
|
d.dirty = true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Document) DelChar(at *gilo.Point) {
|
func (d *Document) DelChar(at *gilo2.Point) {
|
||||||
d.rows[at.Y].deleteRune(at.X)
|
d.rows[at.Y].deleteRune(at.X)
|
||||||
|
|
||||||
d.dirty = true
|
d.dirty = true
|
||||||
|
@ -3,7 +3,7 @@ package document
|
|||||||
import (
|
import (
|
||||||
"strings"
|
"strings"
|
||||||
"timshome.page/gilo/editor/highlight"
|
"timshome.page/gilo/editor/highlight"
|
||||||
"timshome.page/gilo/gilo"
|
gilo2 "timshome.page/gilo/internal/gilo"
|
||||||
"unicode"
|
"unicode"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ func (r *Row) RenderSize() int {
|
|||||||
return len(r.render)
|
return len(r.render)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Row) Render(at *gilo.Point) string {
|
func (r *Row) Render(at *gilo2.Point) string {
|
||||||
return string(r.render[at.X:])
|
return string(r.render[at.X:])
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ func (r *Row) deleteRune(at int) {
|
|||||||
|
|
||||||
func (r *Row) update() {
|
func (r *Row) update() {
|
||||||
r.render = r.render[:0]
|
r.render = r.render[:0]
|
||||||
replacement := strings.Repeat(" ", gilo.TabSize)
|
replacement := strings.Repeat(" ", gilo2.TabSize)
|
||||||
|
|
||||||
str := strings.ReplaceAll(string(r.chars), "\t", replacement)
|
str := strings.ReplaceAll(string(r.chars), "\t", replacement)
|
||||||
for _, ch := range str {
|
for _, ch := range str {
|
||||||
@ -131,7 +131,7 @@ func (r *Row) CursorXToRenderX(cursorX int) (renderX int) {
|
|||||||
|
|
||||||
for i := 0; i < cursorX; i++ {
|
for i := 0; i < cursorX; i++ {
|
||||||
if r.chars[i] == '\t' {
|
if r.chars[i] == '\t' {
|
||||||
renderX += (gilo.TabSize - 1) - (renderX % gilo.TabSize)
|
renderX += (gilo2.TabSize - 1) - (renderX % gilo2.TabSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
renderX += 1
|
renderX += 1
|
||||||
@ -146,7 +146,7 @@ func (r *Row) RenderXtoCursorX(renderX int) (cursorX int) {
|
|||||||
|
|
||||||
for cursorX = 0; cursorX < r.Size(); cursorX++ {
|
for cursorX = 0; cursorX < r.Size(); cursorX++ {
|
||||||
if r.chars[cursorX] == '\t' {
|
if r.chars[cursorX] == '\t' {
|
||||||
currentRenderX += (gilo.TabSize - 1) - (currentRenderX % gilo.TabSize)
|
currentRenderX += (gilo2.TabSize - 1) - (currentRenderX % gilo2.TabSize)
|
||||||
} else {
|
} else {
|
||||||
currentRenderX += 1
|
currentRenderX += 1
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"timshome.page/gilo/editor/highlight"
|
"timshome.page/gilo/editor/highlight"
|
||||||
"timshome.page/gilo/gilo"
|
gilo2 "timshome.page/gilo/internal/gilo"
|
||||||
"timshome.page/gilo/terminal"
|
"timshome.page/gilo/terminal"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -17,7 +17,7 @@ import (
|
|||||||
func (e *editor) RefreshScreen() {
|
func (e *editor) RefreshScreen() {
|
||||||
e.scroll()
|
e.scroll()
|
||||||
|
|
||||||
ab := gilo.NewBuffer()
|
ab := gilo2.NewBuffer()
|
||||||
|
|
||||||
ab.Append(terminal.HideCursor)
|
ab.Append(terminal.HideCursor)
|
||||||
ab.Append(terminal.ResetCursor)
|
ab.Append(terminal.ResetCursor)
|
||||||
@ -57,7 +57,7 @@ func (e *editor) scroll() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *editor) drawRows(ab *gilo.Buffer) {
|
func (e *editor) drawRows(ab *gilo2.Buffer) {
|
||||||
for y := 0; y < e.screen.Rows; y++ {
|
for y := 0; y < e.screen.Rows; y++ {
|
||||||
fileRow := y + e.offset.Y
|
fileRow := y + e.offset.Y
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ func (e *editor) drawRows(ab *gilo.Buffer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *editor) drawFileRow(fileRow int, ab *gilo.Buffer) {
|
func (e *editor) drawFileRow(fileRow int, ab *gilo2.Buffer) {
|
||||||
currentColor := terminal.DefaultFGColor
|
currentColor := terminal.DefaultFGColor
|
||||||
row := e.doc.GetRow(fileRow)
|
row := e.doc.GetRow(fileRow)
|
||||||
|
|
||||||
@ -107,11 +107,11 @@ func (e *editor) drawFileRow(fileRow int, ab *gilo.Buffer) {
|
|||||||
ab.Append(terminal.DefaultFGColor)
|
ab.Append(terminal.DefaultFGColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *editor) drawPlaceholderRow(y int, ab *gilo.Buffer) {
|
func (e *editor) drawPlaceholderRow(y int, ab *gilo2.Buffer) {
|
||||||
if e.doc.RowCount() == 0 && y == e.screen.Rows/3 {
|
if e.doc.RowCount() == 0 && y == e.screen.Rows/3 {
|
||||||
welcome := fmt.Sprintf("Gilo editor -- version %s", gilo.Version)
|
welcome := fmt.Sprintf("Gilo editor -- version %s", gilo2.Version)
|
||||||
if len(welcome) > e.screen.Cols {
|
if len(welcome) > e.screen.Cols {
|
||||||
welcome = gilo.Truncate(welcome, e.screen.Cols)
|
welcome = gilo2.Truncate(welcome, e.screen.Cols)
|
||||||
}
|
}
|
||||||
|
|
||||||
padding := (e.screen.Cols - len(welcome)) / 2
|
padding := (e.screen.Cols - len(welcome)) / 2
|
||||||
@ -131,7 +131,7 @@ func (e *editor) drawPlaceholderRow(y int, ab *gilo.Buffer) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *editor) drawStatusBar(ab *gilo.Buffer) {
|
func (e *editor) drawStatusBar(ab *gilo2.Buffer) {
|
||||||
cols := e.screen.Cols
|
cols := e.screen.Cols
|
||||||
|
|
||||||
ab.Append(terminal.InvertColor)
|
ab.Append(terminal.InvertColor)
|
||||||
@ -148,7 +148,7 @@ func (e *editor) drawStatusBar(ab *gilo.Buffer) {
|
|||||||
leftStatus := fmt.Sprintf("%.20s - %d lines %s", fileName, e.doc.RowCount(), modified)
|
leftStatus := fmt.Sprintf("%.20s - %d lines %s", fileName, e.doc.RowCount(), modified)
|
||||||
length := len(leftStatus)
|
length := len(leftStatus)
|
||||||
if length > cols {
|
if length > cols {
|
||||||
leftStatus = gilo.Truncate(leftStatus, cols)
|
leftStatus = gilo2.Truncate(leftStatus, cols)
|
||||||
|
|
||||||
ab.Append(leftStatus)
|
ab.Append(leftStatus)
|
||||||
ab.Append(terminal.ResetColor)
|
ab.Append(terminal.ResetColor)
|
||||||
@ -182,11 +182,11 @@ func (e *editor) drawStatusBar(ab *gilo.Buffer) {
|
|||||||
ab.Append(terminal.ResetColor)
|
ab.Append(terminal.ResetColor)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *editor) drawMessageBar(ab *gilo.Buffer) {
|
func (e *editor) drawMessageBar(ab *gilo2.Buffer) {
|
||||||
ab.Append("\r\n")
|
ab.Append("\r\n")
|
||||||
ab.Append(terminal.ClearLine)
|
ab.Append(terminal.ClearLine)
|
||||||
|
|
||||||
msg := gilo.Truncate(e.status.message, e.screen.Cols)
|
msg := gilo2.Truncate(e.status.message, e.screen.Cols)
|
||||||
if len(msg) > 0 && time.Since(e.status.created).Seconds() < 5.0 {
|
if len(msg) > 0 && time.Since(e.status.created).Seconds() < 5.0 {
|
||||||
ab.Append(msg)
|
ab.Append(msg)
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
"timshome.page/gilo/editor/document"
|
"timshome.page/gilo/editor/document"
|
||||||
"timshome.page/gilo/gilo"
|
gilo2 "timshome.page/gilo/internal/gilo"
|
||||||
"timshome.page/gilo/key"
|
"timshome.page/gilo/key"
|
||||||
"timshome.page/gilo/terminal"
|
"timshome.page/gilo/terminal"
|
||||||
)
|
)
|
||||||
@ -21,8 +21,8 @@ type statusMsg struct {
|
|||||||
|
|
||||||
type editor struct {
|
type editor struct {
|
||||||
screen *terminal.Screen
|
screen *terminal.Screen
|
||||||
cursor *gilo.Point
|
cursor *gilo2.Point
|
||||||
offset *gilo.Point
|
offset *gilo2.Point
|
||||||
doc *document.Document
|
doc *document.Document
|
||||||
status *statusMsg
|
status *statusMsg
|
||||||
search *search
|
search *search
|
||||||
@ -42,12 +42,12 @@ func NewEditor() *editor {
|
|||||||
|
|
||||||
return &editor{
|
return &editor{
|
||||||
screen,
|
screen,
|
||||||
gilo.DefaultPoint(),
|
gilo2.DefaultPoint(),
|
||||||
gilo.DefaultPoint(),
|
gilo2.DefaultPoint(),
|
||||||
document.NewDocument(),
|
document.NewDocument(),
|
||||||
status,
|
status,
|
||||||
newSearch(),
|
newSearch(),
|
||||||
gilo.QuitTimes,
|
gilo2.QuitTimes,
|
||||||
0,
|
0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ func (e *editor) save() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (e *editor) prompt(prompt string, callback func(string, string)) string {
|
func (e *editor) prompt(prompt string, callback func(string, string)) string {
|
||||||
buf := gilo.NewBuffer()
|
buf := gilo2.NewBuffer()
|
||||||
|
|
||||||
// Show the prompt message
|
// Show the prompt message
|
||||||
e.SetStatusMessage(prompt, "")
|
e.SetStatusMessage(prompt, "")
|
||||||
|
@ -2,7 +2,7 @@ package editor
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"timshome.page/gilo/editor/document"
|
"timshome.page/gilo/editor/document"
|
||||||
"timshome.page/gilo/gilo"
|
gilo2 "timshome.page/gilo/internal/gilo"
|
||||||
"timshome.page/gilo/key"
|
"timshome.page/gilo/key"
|
||||||
"timshome.page/gilo/terminal"
|
"timshome.page/gilo/terminal"
|
||||||
)
|
)
|
||||||
@ -74,8 +74,8 @@ func (e *editor) processKeypressChar(ch rune) bool {
|
|||||||
// Clear the quit message and restart the
|
// Clear the quit message and restart the
|
||||||
// confirmation count if confirmation is not
|
// confirmation count if confirmation is not
|
||||||
// completed
|
// completed
|
||||||
if e.quitTimes != gilo.QuitTimes {
|
if e.quitTimes != gilo2.QuitTimes {
|
||||||
e.quitTimes = gilo.QuitTimes
|
e.quitTimes = gilo2.QuitTimes
|
||||||
e.SetStatusMessage("")
|
e.SetStatusMessage("")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,23 +2,23 @@ package editor
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
"timshome.page/gilo/gilo"
|
gilo2 "timshome.page/gilo/internal/gilo"
|
||||||
"timshome.page/gilo/key"
|
"timshome.page/gilo/key"
|
||||||
)
|
)
|
||||||
|
|
||||||
type moveCursor struct {
|
type moveCursor struct {
|
||||||
keys []string
|
keys []string
|
||||||
withFile bool
|
withFile bool
|
||||||
cursor *gilo.Point
|
cursor *gilo2.Point
|
||||||
}
|
}
|
||||||
|
|
||||||
var cursorTests = []moveCursor{
|
var cursorTests = []moveCursor{
|
||||||
{[]string{string(key.Esc)}, false, gilo.DefaultPoint()},
|
{[]string{string(key.Esc)}, false, gilo2.DefaultPoint()},
|
||||||
{[]string{keyRight}, true, gilo.NewPoint(1, 0)},
|
{[]string{keyRight}, true, gilo2.NewPoint(1, 0)},
|
||||||
{[]string{keyDown, keyEnd}, true, gilo.NewPoint(14, 1)},
|
{[]string{keyDown, keyEnd}, true, gilo2.NewPoint(14, 1)},
|
||||||
{[]string{keyEnd, keyHome}, true, gilo.DefaultPoint()},
|
{[]string{keyEnd, keyHome}, true, gilo2.DefaultPoint()},
|
||||||
{[]string{keyRight, keyLeft}, true, gilo.DefaultPoint()},
|
{[]string{keyRight, keyLeft}, true, gilo2.DefaultPoint()},
|
||||||
{[]string{keyDown, keyUp}, true, gilo.DefaultPoint()},
|
{[]string{keyDown, keyUp}, true, gilo2.DefaultPoint()},
|
||||||
// {[]string{keyPageUp}, true, gilo.DefaultPoint()},
|
// {[]string{keyPageUp}, true, gilo.DefaultPoint()},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,13 +2,13 @@ package editor
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"timshome.page/gilo/editor/highlight"
|
"timshome.page/gilo/editor/highlight"
|
||||||
"timshome.page/gilo/gilo"
|
gilo2 "timshome.page/gilo/internal/gilo"
|
||||||
"timshome.page/gilo/key"
|
"timshome.page/gilo/key"
|
||||||
)
|
)
|
||||||
|
|
||||||
type search struct {
|
type search struct {
|
||||||
cursor *gilo.Point
|
cursor *gilo2.Point
|
||||||
offset *gilo.Point
|
offset *gilo2.Point
|
||||||
hlLine int
|
hlLine int
|
||||||
hl []int
|
hl []int
|
||||||
direction int
|
direction int
|
||||||
@ -17,8 +17,8 @@ type search struct {
|
|||||||
|
|
||||||
func newSearch() *search {
|
func newSearch() *search {
|
||||||
return &search{
|
return &search{
|
||||||
cursor: gilo.DefaultPoint(),
|
cursor: gilo2.DefaultPoint(),
|
||||||
offset: gilo.DefaultPoint(),
|
offset: gilo2.DefaultPoint(),
|
||||||
hlLine: -1,
|
hlLine: -1,
|
||||||
hl: []int{},
|
hl: []int{},
|
||||||
lastMatch: -1,
|
lastMatch: -1,
|
||||||
|
1
gilo.go
1
gilo.go
@ -2,6 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"golang.org/x/term"
|
"golang.org/x/term"
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"timshome.page/gilo/editor"
|
"timshome.page/gilo/editor"
|
||||||
"timshome.page/gilo/terminal"
|
"timshome.page/gilo/terminal"
|
||||||
|
Loading…
Reference in New Issue
Block a user