diff options
| author | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-08 10:41:09 -0500 |
|---|---|---|
| committer | David Schlachter <t480-debian-git@schlachter.ca> | 2026-01-08 10:41:09 -0500 |
| commit | f0909c5ce9d3c8c525955422b64a653d54e92dec (patch) | |
| tree | 862adfac82914e9efb1c7aa02e7f2dc9978b02fd /main.go | |
| parent | 09c88bf8b8423dad5b1fd128c9abb192479002a5 (diff) | |
Definition viewport now uses all available space
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 14 |
1 files changed, 11 insertions, 3 deletions
@@ -94,7 +94,7 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { case definitionMsg: m.currentDefinition = string(msg) m.err = nil - m.vp.SetContent(formatDefinitionForDisplay(m.p, m.currentDefinition)) + m.vp.SetContent(formatDefinitionForDisplay(m.p, m.currentDefinition, m.vp.Width)) return m, nil case wordAddedMsg: m.wordAddStatus = fmt.Sprintf("✅ Added '%s' to Anki", string(msg)) @@ -103,6 +103,12 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { m.wordInput.SetValue("") m.vp.SetContent("") m.err = nil + case tea.WindowSizeMsg: + // headerHeight is the height of everything above the definition window. + headerHeight := 11 + m.vp.Width = msg.Width + m.vp.Height = msg.Height - headerHeight + m.vp.SetContent(formatDefinitionForDisplay(m.p, m.currentDefinition, m.vp.Width)) case tea.KeyMsg: switch msg.Type { case tea.KeyCtrlC: @@ -148,14 +154,16 @@ func (m model) View() string { ) + "\n" } -func formatDefinitionForDisplay(policy bluemonday.Policy, definition string) string { +func formatDefinitionForDisplay(policy bluemonday.Policy, definition string, maxWidth int) string { str := strings.ReplaceAll(definition, "<li class=sense>", "<li class=sense>- ") str = strings.ReplaceAll(str, "\t<ul><li><i>", "\n\t<ul><li><i>\x1b[3;39;49m") str = strings.ReplaceAll(str, "</i></li></ul></li>", "</i></li></ul></li>\x1b[0m") str = policy.Sanitize(str) str = strings.ReplaceAll(str, "\t- ", "\x1b[0;33;49m•\x1b[0m ") - return wordwrap.String(str, 72) + width := min(maxWidth, 80) + + return wordwrap.String(str, width) } func formatStatus(lastError error, lastSuccess string) string { |
