Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions internal/commands/commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,38 @@ func convertItems(its []store.Item) []list.Item {
return items
}

func (c Commands) OpenBody(url string) tea.Cmd {
// for _, o := range c.config.Openers {
// match, err := regexp.MatchString(o.Regex, url)
// if err != nil {
// return tea.Quit
// }

// if match {
// c := fmt.Sprintf(o.Cmd, url)
// parts := strings.Fields(c)
// cmd := exec.Command(parts[0], parts[1:]...)

// if o.Takeover {
// return tea.ExecProcess(cmd, func(err error) tea.Msg {
// log.Println("OpenLink: takeover exec:", err)
// return nil
// })
// } else {
// if err := cmd.Run(); err != nil {
// log.Println("OpenLink: exec: ", err)
// return tea.Quit
// }
// return nil
// }
// }
// }

// c.OpenInBrowser(url)

return nil
}

func (c Commands) OpenLink(url string) tea.Cmd {
for _, o := range c.config.Openers {
match, err := regexp.MatchString(o.Regex, url)
Expand Down
14 changes: 12 additions & 2 deletions internal/commands/key.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ type ListKeyMapT struct {
MarkAllRead key.Binding
ToggleFavourites key.Binding
Refresh key.Binding
OpenInEditor key.Binding
OpenInBrowser key.Binding
Sort key.Binding
oQuit key.Binding
Expand All @@ -31,6 +32,7 @@ type ListKeyMapT struct {
type ViewportKeyMapT struct {
Quit key.Binding
Escape key.Binding
OpenInEditor key.Binding
OpenInBrowser key.Binding
Favourite key.Binding
Read key.Binding
Expand Down Expand Up @@ -73,6 +75,10 @@ var ListKeyMap = ListKeyMapT{
key.WithKeys("r"),
key.WithHelp("r", "refresh"),
),
OpenInEditor: key.NewBinding(
key.WithKeys("e"),
key.WithHelp("e", "open in $EDITOR"),
),
OpenInBrowser: key.NewBinding(
key.WithKeys("o"),
key.WithHelp("o", "open in browser"),
Expand Down Expand Up @@ -138,6 +144,10 @@ var ViewportKeyMap = ViewportKeyMapT{
key.WithKeys("ctrl+z"),
key.WithHelp("ctrl+z", "suspend"),
),
OpenInEditor: key.NewBinding(
key.WithKeys("e"),
key.WithHelp("e", "open in $EDITOR"),
),
OpenInBrowser: key.NewBinding(
key.WithKeys("o"),
key.WithHelp("o", "open in browser"),
Expand Down Expand Up @@ -174,7 +184,7 @@ func (k ViewportKeyMapT) FullHelp() [][]key.Binding {
return [][]key.Binding{
{v.Up, v.Down, v.HalfPageUp, v.HalfPageDown},
{k.GotoStart, k.GotoEnd, v.PageUp, v.PageDown},
{k.Next, k.Prev, k.OpenInBrowser, k.Favourite, k.Read},
{k.Next, k.Prev, k.OpenInEditor, k.OpenInBrowser, k.Favourite, k.Read},
{k.Escape, k.Quit, k.CloseFullHelp},
}
}
Expand All @@ -191,7 +201,7 @@ func (k ViewportKeyMapT) ShortHelp() []key.Binding {
func (k ListKeyMapT) FullHelp() []key.Binding {
return []key.Binding{
k.Open, k.Read, k.Favourite, k.Refresh,
k.OpenInBrowser, k.Sort, k.ToggleFavourites, k.ToggleReads,
k.OpenInEditor, k.OpenInBrowser, k.Sort, k.ToggleFavourites, k.ToggleReads,
k.MarkAllRead, k.EditConfig,
}
}
Expand Down
14 changes: 14 additions & 0 deletions internal/commands/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,20 @@ func updateList(msg tea.Msg, m model) (tea.Model, tea.Cmd) {
m.commands.config.ToggleShowFavourites()
cmds = append(cmds, m.UpdateList())

case key.Matches(msg, ViewportKeyMap.OpenInEditor):
if m.list.SettingFilter() {
break
}

item := m.list.SelectedItem()
if item == nil {
return m, m.list.NewStatusMessage("No link selected.")
}

current := item.(TUIItem)
cmd = m.commands.OpenBody(current.URL)
cmds = append(cmds, cmd)

case key.Matches(msg, ViewportKeyMap.OpenInBrowser):
if m.list.SettingFilter() {
break
Expand Down
10 changes: 10 additions & 0 deletions internal/commands/viewport.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,16 @@ func updateViewport(msg tea.Msg, m model) (tea.Model, tea.Cmd) {
m.selectedArticle = nil
cmds = append(cmds, m.UpdateList())

case key.Matches(msg, ViewportKeyMap.OpenInEditor):
current, err := m.commands.store.GetItemByID(*m.selectedArticle)
if err != nil {
return m, nil
}

it := ItemToTUIItem(current)
cmd = m.commands.OpenBody(it.URL)
cmds = append(cmds, cmd)

case key.Matches(msg, ViewportKeyMap.OpenInBrowser):
current, err := m.commands.store.GetItemByID(*m.selectedArticle)
if err != nil {
Expand Down