From f7275ade1db4b188fa33acf2d3519b3a0c3bada7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20B=C3=BCtow?= <1224732+snonux@users.noreply.github.com> Date: Tue, 24 Jun 2025 15:34:57 +0300 Subject: Rename URL open hotkey --- internal/ui/table.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'internal/ui/table.go') diff --git a/internal/ui/table.go b/internal/ui/table.go index 0ba0144..bac9f0b 100644 --- a/internal/ui/table.go +++ b/internal/ui/table.go @@ -3,6 +3,7 @@ package ui import ( "fmt" "math/rand" + "os/exec" "regexp" "strconv" "strings" @@ -21,6 +22,8 @@ import ( var priorityOptions = []string{"H", "M", "L", ""} +var urlRegex = regexp.MustCompile(`https?://\S+`) + func init() { rand.Seed(time.Now().UnixNano()) } @@ -79,6 +82,8 @@ type Model struct { undoStack []string + browserCmd string + editID int blinkID int @@ -150,8 +155,8 @@ func (m *Model) startBlink(id int, markDone bool) tea.Cmd { } // New creates a new UI model with the provided rows. -func New(filters []string) (Model, error) { - m := Model{filters: filters} +func New(filters []string, browserCmd string) (Model, error) { + m := Model{filters: filters, browserCmd: browserCmd} m.annotateInput = textinput.New() m.annotateInput.Prompt = "annotation: " m.descInput = textinput.New() @@ -625,6 +630,19 @@ func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { return m, m.startBlink(id, true) } } + case "o": + if row := m.tbl.SelectedRow(); row != nil { + desc := m.tasks[m.tbl.Cursor()].Description + re := regexp.MustCompile(`https?://\S+`) + url := re.FindString(desc) + if url != "" { + _ = exec.Command(m.browserCmd, url).Run() + idStr := ansi.Strip(row[1]) + if id, err := strconv.Atoi(idStr); err == nil { + return m, m.startBlink(id, false) + } + } + } case "U": if n := len(m.undoStack); n > 0 { uuid := m.undoStack[n-1] @@ -874,6 +892,7 @@ func (m Model) View() string { "+: add task", "s: toggle start/stop", "d: mark task done", + "o: open URL", "U: undo done", "D: set due date", "r: random due date", -- cgit v1.2.3