Display centered welcome message
This commit is contained in:
parent
ca6e38fc51
commit
1173818135
23
fn/fn.go
Normal file
23
fn/fn.go
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
package fn
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
func TruncateString(s string, length int) string {
|
||||||
|
if length < 1 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
var buf strings.Builder
|
||||||
|
count := 0
|
||||||
|
|
||||||
|
for _, char := range s {
|
||||||
|
if count == length {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
buf.WriteRune(char)
|
||||||
|
count++
|
||||||
|
}
|
||||||
|
|
||||||
|
return buf.String()
|
||||||
|
}
|
@ -3,11 +3,14 @@ package editor
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
"timshome.page/gilo/fn"
|
||||||
"timshome.page/gilo/internal/ansi"
|
"timshome.page/gilo/internal/ansi"
|
||||||
"timshome.page/gilo/internal/char"
|
"timshome.page/gilo/internal/char"
|
||||||
"timshome.page/gilo/internal/terminal"
|
"timshome.page/gilo/internal/terminal"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const KiloVersion = "0.0.1"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// !Editor
|
// !Editor
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@ -52,7 +55,28 @@ func (e *editor) ProcessKeypress() bool {
|
|||||||
|
|
||||||
func (e *editor) drawRows(ab *buffer) {
|
func (e *editor) drawRows(ab *buffer) {
|
||||||
for y :=0; y < e.rows; y += 1 {
|
for y :=0; y < e.rows; y += 1 {
|
||||||
ab.appendRune('~')
|
if y == e.rows / 3 {
|
||||||
|
welcome := fmt.Sprintf("Gilo editor -- version %s", KiloVersion)
|
||||||
|
if len(welcome) > e.cols {
|
||||||
|
welcome = fn.TruncateString(welcome, e.cols)
|
||||||
|
}
|
||||||
|
|
||||||
|
padding := (e.cols - len(welcome)) / 2
|
||||||
|
if padding > 0 {
|
||||||
|
ab.appendRune('~')
|
||||||
|
padding--
|
||||||
|
}
|
||||||
|
|
||||||
|
for padding > 0 {
|
||||||
|
padding--
|
||||||
|
ab.appendRune(' ')
|
||||||
|
}
|
||||||
|
|
||||||
|
ab.append(welcome)
|
||||||
|
} else {
|
||||||
|
ab.appendRune('~')
|
||||||
|
}
|
||||||
|
|
||||||
ab.append(ansi.ClearLine)
|
ab.append(ansi.ClearLine)
|
||||||
|
|
||||||
if y < (e.rows - 1) {
|
if y < (e.rows - 1) {
|
||||||
@ -99,4 +123,4 @@ func (b *buffer) appendLn(s string) int {
|
|||||||
|
|
||||||
func (b *buffer) toString() string {
|
func (b *buffer) toString() string {
|
||||||
return b.buf.String()
|
return b.buf.String()
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user