mirror of
https://github.com/makew0rld/amfora.git
synced 2025-02-02 15:07:34 -05:00
Adding bindings to yank the current URL and the selected URL (#225)
This commit is contained in:
parent
5a02c2b7a5
commit
40e9d2106a
@ -242,6 +242,8 @@ func Init() error {
|
|||||||
viper.SetDefault("keybindings.bind_tab8", "*")
|
viper.SetDefault("keybindings.bind_tab8", "*")
|
||||||
viper.SetDefault("keybindings.bind_tab9", "(")
|
viper.SetDefault("keybindings.bind_tab9", "(")
|
||||||
viper.SetDefault("keybindings.bind_tab0", ")")
|
viper.SetDefault("keybindings.bind_tab0", ")")
|
||||||
|
viper.SetDefault("keybindings.bind_copy_page_url", "C")
|
||||||
|
viper.SetDefault("keybindings.bind_copy_target_url", "c")
|
||||||
viper.SetDefault("keybindings.shift_numbers", "")
|
viper.SetDefault("keybindings.shift_numbers", "")
|
||||||
viper.SetDefault("url-handlers.other", "off")
|
viper.SetDefault("url-handlers.other", "off")
|
||||||
viper.SetDefault("cache.max_size", 0)
|
viper.SetDefault("cache.max_size", 0)
|
||||||
|
@ -158,6 +158,8 @@ scrollbar = "auto"
|
|||||||
# bind_help
|
# bind_help
|
||||||
# bind_sub: for viewing the subscriptions page
|
# bind_sub: for viewing the subscriptions page
|
||||||
# bind_add_sub
|
# bind_add_sub
|
||||||
|
# bind_copy_page_url
|
||||||
|
# bind_copy_target_url
|
||||||
|
|
||||||
[url-handlers]
|
[url-handlers]
|
||||||
# Allows setting the commands to run for various URL schemes.
|
# Allows setting the commands to run for various URL schemes.
|
||||||
|
@ -52,6 +52,8 @@ const (
|
|||||||
CmdHelp
|
CmdHelp
|
||||||
CmdSub
|
CmdSub
|
||||||
CmdAddSub
|
CmdAddSub
|
||||||
|
CmdCopyPageURL
|
||||||
|
CmdCopyTargetURL
|
||||||
)
|
)
|
||||||
|
|
||||||
type keyBinding struct {
|
type keyBinding struct {
|
||||||
@ -147,35 +149,37 @@ func parseBinding(cmd Command, binding string) {
|
|||||||
// Called by config.Init()
|
// Called by config.Init()
|
||||||
func KeyInit() {
|
func KeyInit() {
|
||||||
configBindings := map[Command]string{
|
configBindings := map[Command]string{
|
||||||
CmdLink1: "keybindings.bind_link1",
|
CmdLink1: "keybindings.bind_link1",
|
||||||
CmdLink2: "keybindings.bind_link2",
|
CmdLink2: "keybindings.bind_link2",
|
||||||
CmdLink3: "keybindings.bind_link3",
|
CmdLink3: "keybindings.bind_link3",
|
||||||
CmdLink4: "keybindings.bind_link4",
|
CmdLink4: "keybindings.bind_link4",
|
||||||
CmdLink5: "keybindings.bind_link5",
|
CmdLink5: "keybindings.bind_link5",
|
||||||
CmdLink6: "keybindings.bind_link6",
|
CmdLink6: "keybindings.bind_link6",
|
||||||
CmdLink7: "keybindings.bind_link7",
|
CmdLink7: "keybindings.bind_link7",
|
||||||
CmdLink8: "keybindings.bind_link8",
|
CmdLink8: "keybindings.bind_link8",
|
||||||
CmdLink9: "keybindings.bind_link9",
|
CmdLink9: "keybindings.bind_link9",
|
||||||
CmdLink0: "keybindings.bind_link0",
|
CmdLink0: "keybindings.bind_link0",
|
||||||
CmdBottom: "keybindings.bind_bottom",
|
CmdBottom: "keybindings.bind_bottom",
|
||||||
CmdEdit: "keybindings.bind_edit",
|
CmdEdit: "keybindings.bind_edit",
|
||||||
CmdHome: "keybindings.bind_home",
|
CmdHome: "keybindings.bind_home",
|
||||||
CmdBookmarks: "keybindings.bind_bookmarks",
|
CmdBookmarks: "keybindings.bind_bookmarks",
|
||||||
CmdAddBookmark: "keybindings.bind_add_bookmark",
|
CmdAddBookmark: "keybindings.bind_add_bookmark",
|
||||||
CmdSave: "keybindings.bind_save",
|
CmdSave: "keybindings.bind_save",
|
||||||
CmdReload: "keybindings.bind_reload",
|
CmdReload: "keybindings.bind_reload",
|
||||||
CmdBack: "keybindings.bind_back",
|
CmdBack: "keybindings.bind_back",
|
||||||
CmdForward: "keybindings.bind_forward",
|
CmdForward: "keybindings.bind_forward",
|
||||||
CmdPgup: "keybindings.bind_pgup",
|
CmdPgup: "keybindings.bind_pgup",
|
||||||
CmdPgdn: "keybindings.bind_pgdn",
|
CmdPgdn: "keybindings.bind_pgdn",
|
||||||
CmdNewTab: "keybindings.bind_new_tab",
|
CmdNewTab: "keybindings.bind_new_tab",
|
||||||
CmdCloseTab: "keybindings.bind_close_tab",
|
CmdCloseTab: "keybindings.bind_close_tab",
|
||||||
CmdNextTab: "keybindings.bind_next_tab",
|
CmdNextTab: "keybindings.bind_next_tab",
|
||||||
CmdPrevTab: "keybindings.bind_prev_tab",
|
CmdPrevTab: "keybindings.bind_prev_tab",
|
||||||
CmdQuit: "keybindings.bind_quit",
|
CmdQuit: "keybindings.bind_quit",
|
||||||
CmdHelp: "keybindings.bind_help",
|
CmdHelp: "keybindings.bind_help",
|
||||||
CmdSub: "keybindings.bind_sub",
|
CmdSub: "keybindings.bind_sub",
|
||||||
CmdAddSub: "keybindings.bind_add_sub",
|
CmdAddSub: "keybindings.bind_add_sub",
|
||||||
|
CmdCopyPageURL: "keybindings.bind_copy_page_url",
|
||||||
|
CmdCopyTargetURL: "keybindings.bind_copy_target_url",
|
||||||
}
|
}
|
||||||
// This is split off to allow shift_numbers to override bind_tab[1-90]
|
// This is split off to allow shift_numbers to override bind_tab[1-90]
|
||||||
// (This is needed for older configs so that the default bind_tab values
|
// (This is needed for older configs so that the default bind_tab values
|
||||||
|
@ -155,6 +155,8 @@ scrollbar = "auto"
|
|||||||
# bind_help
|
# bind_help
|
||||||
# bind_sub: for viewing the subscriptions page
|
# bind_sub: for viewing the subscriptions page
|
||||||
# bind_add_sub
|
# bind_add_sub
|
||||||
|
# bind_copy_page_url
|
||||||
|
# bind_copy_target_url
|
||||||
|
|
||||||
[url-handlers]
|
[url-handlers]
|
||||||
# Allows setting the commands to run for various URL schemes.
|
# Allows setting the commands to run for various URL schemes.
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"code.rocketnine.space/tslocum/cview"
|
"code.rocketnine.space/tslocum/cview"
|
||||||
|
"github.com/atotto/clipboard"
|
||||||
"github.com/gdamore/tcell/v2"
|
"github.com/gdamore/tcell/v2"
|
||||||
"github.com/makeworld-the-better-one/amfora/cache"
|
"github.com/makeworld-the-better-one/amfora/cache"
|
||||||
"github.com/makeworld-the-better-one/amfora/config"
|
"github.com/makeworld-the-better-one/amfora/config"
|
||||||
@ -352,6 +353,36 @@ func Init(version, commit, builtBy string) {
|
|||||||
case config.CmdAddSub:
|
case config.CmdAddSub:
|
||||||
go addSubscription()
|
go addSubscription()
|
||||||
return nil
|
return nil
|
||||||
|
case config.CmdCopyPageURL:
|
||||||
|
currentURL := tabs[curTab].page.URL
|
||||||
|
err := clipboard.WriteAll(currentURL)
|
||||||
|
if err != nil {
|
||||||
|
Error("Copy Error", err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
case config.CmdCopyTargetURL:
|
||||||
|
currentURL := tabs[curTab].page.URL
|
||||||
|
selectedURL := tabs[curTab].HighlightedURL()
|
||||||
|
if selectedURL == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
u, _ := url.Parse(currentURL)
|
||||||
|
copiedURL, err := u.Parse(selectedURL)
|
||||||
|
if err != nil {
|
||||||
|
err := clipboard.WriteAll(selectedURL)
|
||||||
|
if err != nil {
|
||||||
|
Error("Copy Error", err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
err = clipboard.WriteAll(copiedURL.String())
|
||||||
|
if err != nil {
|
||||||
|
Error("Copy Error", err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Number key: 1-9, 0, LINK1-LINK10
|
// Number key: 1-9, 0, LINK1-LINK10
|
||||||
|
@ -28,6 +28,8 @@ var helpCells = strings.TrimSpace(
|
|||||||
"\tinstead of the current one.\n" +
|
"\tinstead of the current one.\n" +
|
||||||
"%s\tGo to links 1-10 respectively.\n" +
|
"%s\tGo to links 1-10 respectively.\n" +
|
||||||
"%s\tEdit current URL\n" +
|
"%s\tEdit current URL\n" +
|
||||||
|
"%s\tCopy current page URL\n" +
|
||||||
|
"%s\tCopy current selected URL\n" +
|
||||||
"Enter, Tab\tOn a page this will start link highlighting.\n" +
|
"Enter, Tab\tOn a page this will start link highlighting.\n" +
|
||||||
"\tPress Tab and Shift-Tab to pick different links.\n" +
|
"\tPress Tab and Shift-Tab to pick different links.\n" +
|
||||||
"\tPress Enter again to go to one, or Esc to stop.\n" +
|
"\tPress Enter again to go to one, or Esc to stop.\n" +
|
||||||
@ -85,6 +87,8 @@ func helpInit() {
|
|||||||
config.GetKeyBinding(config.CmdBottom),
|
config.GetKeyBinding(config.CmdBottom),
|
||||||
linkKeys,
|
linkKeys,
|
||||||
config.GetKeyBinding(config.CmdEdit),
|
config.GetKeyBinding(config.CmdEdit),
|
||||||
|
config.GetKeyBinding(config.CmdCopyPageURL),
|
||||||
|
config.GetKeyBinding(config.CmdCopyTargetURL),
|
||||||
tabKeys,
|
tabKeys,
|
||||||
config.GetKeyBinding(config.CmdTab0),
|
config.GetKeyBinding(config.CmdTab0),
|
||||||
config.GetKeyBinding(config.CmdPrevTab),
|
config.GetKeyBinding(config.CmdPrevTab),
|
||||||
|
@ -323,3 +323,15 @@ func (t *tab) applyAll() {
|
|||||||
t.applyBottomBar()
|
t.applyBottomBar()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HighlightedURL returns the currently selected URL
|
||||||
|
func (t *tab) HighlightedURL() string {
|
||||||
|
currentSelection := tabs[curTab].view.GetHighlights()
|
||||||
|
|
||||||
|
if len(currentSelection) > 0 {
|
||||||
|
linkN, _ := strconv.Atoi(currentSelection[0])
|
||||||
|
selectedURL := tabs[curTab].page.Links[linkN]
|
||||||
|
return selectedURL
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
1
go.mod
1
go.mod
@ -4,6 +4,7 @@ go 1.14
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
code.rocketnine.space/tslocum/cview v1.5.4
|
code.rocketnine.space/tslocum/cview v1.5.4
|
||||||
|
github.com/atotto/clipboard v0.1.4
|
||||||
github.com/dustin/go-humanize v1.0.0
|
github.com/dustin/go-humanize v1.0.0
|
||||||
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
||||||
github.com/gdamore/tcell/v2 v2.2.1-0.20210305060500-f4d402906fa3
|
github.com/gdamore/tcell/v2 v2.2.1-0.20210305060500-f4d402906fa3
|
||||||
|
2
go.sum
2
go.sum
@ -28,6 +28,8 @@ github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9Pq
|
|||||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||||
|
github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4=
|
||||||
|
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||||
|
Loading…
Reference in New Issue
Block a user