From 9e3f12d2903d0ad14b86e25eeb7b3f79f3db1df3 Mon Sep 17 00:00:00 2001 From: Kyren223 Date: Wed, 18 Dec 2024 17:51:21 +0200 Subject: Implemented support for placeholders to prompt the user to send a message (only if there is exactly 1 blank line) --- internal/client/ui/viminput/viminput.go | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'internal/client/ui') diff --git a/internal/client/ui/viminput/viminput.go b/internal/client/ui/viminput/viminput.go index ec391b7..6044ae7 100644 --- a/internal/client/ui/viminput/viminput.go +++ b/internal/client/ui/viminput/viminput.go @@ -123,13 +123,16 @@ func (m Model) View() string { lineDecoration := m.LineDecoration(i, m) builder.WriteString(lineDecoration) - if m.cursorLine != i { - builder.WriteString(string(line)) - } else if len(m.lines) == 1 && len(line) == 0 && m.Placeholder != "" { + if len(m.lines) == 1 && len(line) == 0 && m.Placeholder != "" { cursorChar := m.PlaceholderStyle.Render(m.Placeholder[0:1]) rest := m.PlaceholderStyle.Render(m.Placeholder[1:]) builder.WriteString(CursorStyle.Render(cursorChar)) builder.WriteString(rest) + continue + } + + if m.cursorLine != i { + builder.WriteString(string(line)) } else if m.cursorColumn == len(line) { builder.WriteString(string(line)) builder.WriteString(CursorStyle.Render(" ")) @@ -152,6 +155,14 @@ func (m Model) View() string { lineDecoration := m.LineDecoration(i, m) builder.WriteString(lineDecoration) + if len(m.lines) == 1 && len(line) == 0 && m.Placeholder != "" { + cursorChar := m.PlaceholderStyle.Render(m.Placeholder[0:1]) + rest := m.PlaceholderStyle.Render(m.Placeholder[1:]) + builder.WriteString(CursorStyle.Render(cursorChar)) + builder.WriteString(rest) + continue + } + before := isAnchorBefore && m.vline < i && i < m.cursorLine after := !isAnchorBefore && m.cursorLine < i && i < m.vline isInBetween := before || after @@ -252,6 +263,14 @@ func (m Model) View() string { lineDecoration := m.LineDecoration(i, m) builder.WriteString(lineDecoration) + if len(m.lines) == 1 && len(line) == 0 && m.Placeholder != "" { + cursorChar := m.PlaceholderStyle.Render(m.Placeholder[0:1]) + rest := m.PlaceholderStyle.Render(m.Placeholder[1:]) + builder.WriteString(CursorStyle.Render(cursorChar)) + builder.WriteString(rest) + continue + } + before := isAnchorBefore && m.vline <= i && i < m.cursorLine after := !isAnchorBefore && m.cursorLine < i && i <= m.vline isInBetween := before || after -- cgit v1.3.1