project-manager

Project directory management for macOS
git clone git://git.lair.cx/project-manager
Log | Files | Refs | README | LICENSE

keys.go (1528B)


      1 package main
      2 
      3 import (
      4 	"github.com/charmbracelet/bubbles/key"
      5 	"github.com/charmbracelet/bubbles/list"
      6 )
      7 
      8 // keyMap defines a set of keybindings. To work for help it must satisfy
      9 // key.Map. It could also very easily be a map[string]key.Binding.
     10 type keyMap struct {
     11 	list.KeyMap
     12 
     13 	Quit                key.Binding
     14 	ForceQuit           key.Binding
     15 	CloseActionSelector key.Binding
     16 	Select              key.Binding
     17 	Toggle              key.Binding
     18 }
     19 
     20 // ShortHelp returns keybindings to be shown in the mini help view. It's part
     21 // of the key.Map interface.
     22 func (k keyMap) ShortHelp() []key.Binding {
     23 	return []key.Binding{k.ShowFullHelp, k.Quit}
     24 }
     25 
     26 // FullHelp returns keybindings for the expanded help view. It's part of the
     27 // key.Map interface.
     28 func (k keyMap) FullHelp() [][]key.Binding {
     29 	return [][]key.Binding{
     30 		{k.CursorUp, k.CursorDown, k.NextPage, k.NextPage}, // first column
     31 		{k.CloseFullHelp, k.Quit, k.ForceQuit},             // second column
     32 	}
     33 }
     34 
     35 var keys = keyMap{
     36 	KeyMap: list.DefaultKeyMap(),
     37 
     38 	Quit: key.NewBinding(
     39 		key.WithKeys("esc"),
     40 		key.WithHelp("esc", "quit and save all changes"),
     41 	),
     42 	ForceQuit: key.NewBinding(
     43 		key.WithKeys("ctrl+c"),
     44 		key.WithHelp("ctrl+c", "quit without saving changes"),
     45 	),
     46 	CloseActionSelector: key.NewBinding(
     47 		key.WithKeys("esc"),
     48 		key.WithHelp("esc", "clear filter"),
     49 	),
     50 	Select: key.NewBinding(
     51 		key.WithKeys("enter"),
     52 		key.WithHelp("enter", "cd to project"),
     53 	),
     54 	Toggle: key.NewBinding(
     55 		key.WithKeys(" "),
     56 		key.WithHelp("space", "toggle active"),
     57 	),
     58 }