2024-04-28 22:50:09 +02:00
package cmd
import (
"fmt"
"strings"
"github.com/ddworken/hishtory/client/hctx"
"github.com/ddworken/hishtory/client/lib"
2024-08-11 21:19:41 +02:00
2024-04-28 22:50:09 +02:00
"github.com/spf13/cobra"
)
var getKeyBindingsCmd = & cobra . Command {
Use : "key-bindings" ,
Short : "Get the currently configured key bindings for the TUI" ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
ctx := hctx . MakeContext ( )
config := hctx . GetConf ( ctx )
fmt . Println ( "up: \t\t\t" + strings . Join ( config . KeyBindings . Up , " " ) )
fmt . Println ( "down: \t\t\t" + strings . Join ( config . KeyBindings . Down , " " ) )
fmt . Println ( "page-up: \t\t" + strings . Join ( config . KeyBindings . PageUp , " " ) )
fmt . Println ( "page-down: \t\t" + strings . Join ( config . KeyBindings . PageDown , " " ) )
fmt . Println ( "select-entry: \t\t" + strings . Join ( config . KeyBindings . SelectEntry , " " ) )
fmt . Println ( "select-entry-and-cd: \t" + strings . Join ( config . KeyBindings . SelectEntryAndChangeDir , " " ) )
fmt . Println ( "left: \t\t\t" + strings . Join ( config . KeyBindings . Left , " " ) )
fmt . Println ( "right: \t\t\t" + strings . Join ( config . KeyBindings . Right , " " ) )
fmt . Println ( "table-left: \t\t" + strings . Join ( config . KeyBindings . TableLeft , " " ) )
fmt . Println ( "table-right: \t\t" + strings . Join ( config . KeyBindings . TableRight , " " ) )
fmt . Println ( "delete-entry: \t\t" + strings . Join ( config . KeyBindings . DeleteEntry , " " ) )
fmt . Println ( "help: \t\t\t" + strings . Join ( config . KeyBindings . Help , " " ) )
fmt . Println ( "quit: \t\t\t" + strings . Join ( config . KeyBindings . Quit , " " ) )
fmt . Println ( "jump-start-of-input: \t" + strings . Join ( config . KeyBindings . JumpStartOfInput , " " ) )
fmt . Println ( "jump-end-of-input: \t" + strings . Join ( config . KeyBindings . JumpEndOfInput , " " ) )
fmt . Println ( "word-left: \t\t" + strings . Join ( config . KeyBindings . WordLeft , " " ) )
fmt . Println ( "word-right: \t\t" + strings . Join ( config . KeyBindings . WordRight , " " ) )
} ,
}
var setKeyBindingsCmd = & cobra . Command {
Use : "key-bindings" ,
Short : "Set custom key bindings for the TUI" ,
Args : cobra . MinimumNArgs ( 2 ) ,
Run : func ( cmd * cobra . Command , args [ ] string ) {
ctx := hctx . MakeContext ( )
config := hctx . GetConf ( ctx )
switch args [ 0 ] {
case "up" :
config . KeyBindings . Up = args [ 1 : ]
case "down" :
config . KeyBindings . Down = args [ 1 : ]
case "page-up" :
config . KeyBindings . PageUp = args [ 1 : ]
case "page-down" :
config . KeyBindings . PageDown = args [ 1 : ]
case "select-entry" :
config . KeyBindings . SelectEntry = args [ 1 : ]
case "select-entry-and-cd" :
config . KeyBindings . SelectEntryAndChangeDir = args [ 1 : ]
case "left" :
config . KeyBindings . Left = args [ 1 : ]
case "right" :
config . KeyBindings . Right = args [ 1 : ]
case "table-left" :
config . KeyBindings . TableLeft = args [ 1 : ]
case "table-right" :
config . KeyBindings . TableRight = args [ 1 : ]
case "delete-entry" :
config . KeyBindings . DeleteEntry = args [ 1 : ]
case "help" :
config . KeyBindings . Help = args [ 1 : ]
case "quit" :
config . KeyBindings . Quit = args [ 1 : ]
case "jump-start-of-input" :
config . KeyBindings . JumpStartOfInput = args [ 1 : ]
case "jump-end-of-input" :
config . KeyBindings . JumpEndOfInput = args [ 1 : ]
case "word-left" :
config . KeyBindings . WordLeft = args [ 1 : ]
case "word-right" :
config . KeyBindings . WordRight = args [ 1 : ]
default :
lib . CheckFatalError ( fmt . Errorf ( "unknown action %q, run `hishtory config-get keybindings` to see the list of currently configured key bindings" , args [ 0 ] ) )
}
lib . CheckFatalError ( hctx . SetConfig ( config ) )
} ,
}
func init ( ) {
configGetCmd . AddCommand ( getKeyBindingsCmd )
configSetCmd . AddCommand ( setKeyBindingsCmd )
}