From 2be83ff9f4040ea0dddce8a9b73222c0372d2446 Mon Sep 17 00:00:00 2001 From: wuyangfan <1102042793@qq.com> Date: Sun, 17 May 2026 10:11:42 +0800 Subject: [PATCH] fix: render textarea placeholder base style once --- textarea/textarea.go | 2 +- textarea/textarea_test.go | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/textarea/textarea.go b/textarea/textarea.go index f0c0ca54..31dadfcf 100644 --- a/textarea/textarea.go +++ b/textarea/textarea.go @@ -1590,7 +1590,7 @@ func (m Model) placeholderView() string { } m.viewport.SetContent(s.String()) - return styles.Base.Render(m.viewport.View()) + return m.viewport.View() } // Blink returns the blink command for the virtual cursor. diff --git a/textarea/textarea_test.go b/textarea/textarea_test.go index 41d51f74..6803a4df 100644 --- a/textarea/textarea_test.go +++ b/textarea/textarea_test.go @@ -1918,6 +1918,29 @@ func TestView(t *testing.T) { } } +func TestPlaceholderWithBaseBorderAppliesBaseStyleOnce(t *testing.T) { + t.Parallel() + + textarea := newTextArea() + textarea.Prompt = "" + textarea.ShowLineNumbers = false + textarea.SetWidth(20) + textarea.SetHeight(3) + + styles := textarea.Styles() + styles.Focused.Base = lipgloss.NewStyle().Border(lipgloss.NormalBorder()).Padding(0, 1) + styles.Blurred.Base = styles.Focused.Base + styles.Focused.CursorLine = lipgloss.NewStyle() + textarea.SetStyles(styles) + + view := stripString(textarea.View()) + for _, border := range []string{"┌", "┐", "└", "┘"} { + if got := strings.Count(view, border); got != 1 { + t.Fatalf("expected placeholder view to render border %q once, got %d:\n%s", border, got, view) + } + } +} + func TestWord(t *testing.T) { textarea := newTextArea()