summaryrefslogtreecommitdiff
path: root/internal/client/ui
diff options
context:
space:
mode:
Diffstat (limited to 'internal/client/ui')
-rw-r--r--internal/client/ui/viminput/viminput.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/internal/client/ui/viminput/viminput.go b/internal/client/ui/viminput/viminput.go
index 5017344..270cb73 100644
--- a/internal/client/ui/viminput/viminput.go
+++ b/internal/client/ui/viminput/viminput.go
@@ -7,6 +7,7 @@ import (
tea "github.com/charmbracelet/bubbletea"
"github.com/charmbracelet/lipgloss"
+ "github.com/kyren223/eko/internal/client/config"
"github.com/kyren223/eko/internal/client/ui/colors"
"github.com/kyren223/eko/pkg/assert"
)
@@ -608,6 +609,20 @@ func (m *Model) handleInsertModeKeys(key tea.KeyMsg) {
return
}
+ if key.Type == tea.KeyTab || key.Type == tea.KeyShiftTab {
+ conf := config.Read()
+ var runes []rune
+ if conf.InsertModeTabToSpace {
+ runes = []rune(strings.Repeat(" ", int(conf.InsertModeSpacesPerTab)))
+ } else {
+ runes = []rune{'\t'}
+ }
+ line := m.lines[m.cursorLine]
+ m.lines[m.cursorLine] = slices.Insert(line, m.cursorColumn, runes...)
+ m.SetCursorColumn(m.cursorColumn + len(runes))
+ return
+ }
+
if key.Type == tea.KeyBackspace {
line := m.lines[m.cursorLine]
if m.cursorColumn == 0 && m.cursorLine != 0 {