@@ -21,6 +21,7 @@ const (
2121 ActionNone Action = iota // user quit without selecting
2222 ActionSelect // user pressed enter — print the route
2323 ActionExecute // user pressed x — execute the GET endpoint
24+ ActionCopy // user pressed c — copy the route path
2425)
2526
2627// Result is returned after the browser exits.
@@ -58,6 +59,10 @@ func Run(api *spec.API, apiURL string) (*Result, error) {
5859 key .WithKeys ("B" ),
5960 key .WithHelp ("B" , "open docs" ),
6061 ),
62+ Copy : key .NewBinding (
63+ key .WithKeys ("c" ),
64+ key .WithHelp ("c" , "copy path" ),
65+ ),
6166 Execute : key .NewBinding (
6267 key .WithKeys ("x" ),
6368 key .WithHelp ("x" , "execute GET" ),
@@ -69,10 +74,10 @@ func Run(api *spec.API, apiURL string) (*Result, error) {
6974 }
7075
7176 l .AdditionalShortHelpKeys = func () []key.Binding {
72- return []key.Binding {keys .Select , keys .Open , keys .Execute }
77+ return []key.Binding {keys .Select , keys .Copy , keys . Open , keys .Execute }
7378 }
7479 l .AdditionalFullHelpKeys = func () []key.Binding {
75- return []key.Binding {keys .Select , keys .Open , keys .Execute }
80+ return []key.Binding {keys .Select , keys .Copy , keys . Open , keys .Execute }
7681 }
7782
7883 m := model {list : l , keys : keys , apiURL : apiURL }
@@ -91,6 +96,7 @@ func Run(api *spec.API, apiURL string) (*Result, error) {
9196
9297type keyMap struct {
9398 Open key.Binding
99+ Copy key.Binding
94100 Execute key.Binding
95101 Select key.Binding
96102}
@@ -131,6 +137,13 @@ func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
131137 }
132138 }
133139 return m , nil
140+ case key .Matches (msg , m .keys .Copy ):
141+ if item , ok := m .list .SelectedItem ().(routeItem ); ok {
142+ r := item .route
143+ m .result = & Result {Route : & r , Action : ActionCopy }
144+ return m , tea .Quit
145+ }
146+ return m , nil
134147 case msg .String () == "enter" :
135148 if item , ok := m .list .SelectedItem ().(routeItem ); ok {
136149 r := item .route
0 commit comments