Explorar o código

refactor(config)!: rename keys table to keybinds (#725)

Ayyan hai 3 meses
pai
achega
0dbe115864

+ 1 - 1
internal/app/app.go

@@ -101,7 +101,7 @@ func (a *App) quit() {
 
 func (a *App) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
-	case a.cfg.Keys.Quit:
+	case a.cfg.Keybinds.Quit:
 		a.quit()
 		return nil
 	case "Ctrl+C":

+ 2 - 2
internal/config/config.go

@@ -78,8 +78,8 @@ type (
 
 		Icons Icons `toml:"icons"`
 
-		Keys  Keys  `toml:"keys"`
-		Theme Theme `toml:"theme"`
+		Keybinds Keybinds `toml:"keybinds"`
+		Theme    Theme    `toml:"theme"`
 	}
 )
 

+ 19 - 19
internal/config/config.toml

@@ -4,7 +4,7 @@ auto_focus = true
 
 # Whether to enable mouse or not.
 mouse = true
-# The program to open when the `keys.message_input.editor` keymap is pressed. Set the value to `"default"` to use `$EDITOR`.
+# The program to open when the `message_input.editor` keybind is pressed. Set the value to `"default"` to use `$EDITOR`.
 editor = "default"
 
 # "default" (unknown), "online", "dnd", "idle", "invisible", "offline"
@@ -59,7 +59,7 @@ guild_store = "s-"
 
 # Global shortcuts
 # Esc: Reset message selection or close the channel selection popup.
-[keys]
+[keybinds]
 focus_guilds_tree = "Ctrl+G"
 focus_messages_list = "Ctrl+T"
 focus_message_input = "Ctrl+I"
@@ -73,7 +73,7 @@ quit = "Ctrl+C"
 # Requires re-login upon restart.
 logout = "Ctrl+D"
 
-[keys.picker]
+[keybinds.picker]
 toggle = "Ctrl+K"
 cancel = "Esc"
 up = "Ctrl+P"
@@ -83,11 +83,11 @@ bottom = "End"
 select = "Enter"
 
 # Only while focusing on the guilds tree
-[keys.guilds_tree]
-select_previous = "Rune[k]"
-select_next = "Rune[j]"
-select_first = "Rune[g]"
-select_last = "Rune[G]"
+[keybinds.guilds_tree]
+up = "Rune[k]"
+down = "Rune[j]"
+top = "Rune[g]"
+bottom = "Rune[G]"
 # Select the currently highlighted text-based channel or expand a guild or channel.
 select_current = "Enter"
 yank_id = "Rune[i]"
@@ -95,11 +95,11 @@ collapse_parent_node = "Rune[-]"
 move_to_parent_node = "Rune[p]"
 
 # Only while focusing on sent messages
-[keys.messages_list]
-select_previous = "Rune[k]"
-select_next = "Rune[j]"
-select_first = "Rune[g]"
-select_last = "Rune[G]"
+[keybinds.messages_list]
+select_up = "Rune[k]"
+select_down = "Rune[j]"
+select_top = "Rune[g]"
+select_bottom = "Rune[G]"
 # Scroll the messages list without changing the selection.
 scroll_up = "Rune[K]"
 scroll_down = "Rune[J]"
@@ -125,7 +125,7 @@ yank_id = "Rune[i]"
 
 # Only while typing a message
 # Alt+Enter: Insert a new line to the current text.
-[keys.message_input]
+[keybinds.message_input]
 # paste from clipboard (supports both text and images)
 paste = "Ctrl+V"
 send = "Enter"
@@ -137,11 +137,11 @@ tab_complete = "Tab"
 open_editor = "Ctrl+E"
 open_file_picker = "Ctrl+Rune[\\]"
 
-[keys.mentions_list]
-select_previous = "Ctrl+P"
-select_next = "Ctrl+N"
-select_first = "Home"
-select_last = "End"
+[keybinds.mentions_list]
+up = "Ctrl+P"
+down = "Ctrl+N"
+top = "Home"
+bottom = "End"
 
 # style = { foreground = "", background = "", attributes = "" or [""] }
 [theme.title]

+ 89 - 0
internal/config/keybinds.go

@@ -0,0 +1,89 @@
+package config
+
+type NavigationKeybinds struct {
+	Up     string `toml:"up"`
+	Down   string `toml:"down"`
+	Top    string `toml:"top"`
+	Bottom string `toml:"bottom"`
+}
+
+type ScrollKeybinds struct {
+	ScrollUp     string `toml:"scroll_up"`
+	ScrollDown   string `toml:"scroll_down"`
+	ScrollTop    string `toml:"scroll_top"`
+	ScrollBottom string `toml:"scroll_bottom"`
+}
+
+type SelectionKeybinds struct {
+	SelectUp     string `toml:"select_up"`
+	SelectDown   string `toml:"select_down"`
+	SelectTop    string `toml:"select_top"`
+	SelectBottom string `toml:"select_bottom"`
+}
+
+type PickerKeybinds struct {
+	NavigationKeybinds
+	Toggle string `toml:"toggle"`
+	Cancel string `toml:"cancel"`
+	Select string `toml:"select"`
+}
+
+type GuildsTreeKeybinds struct {
+	NavigationKeybinds
+	SelectCurrent string `toml:"select_current"`
+	YankID        string `toml:"yank_id"`
+
+	CollapseParentNode string `toml:"collapse_parent_node"`
+	MoveToParentNode   string `toml:"move_to_parent_node"`
+}
+
+type MessagesListKeybinds struct {
+	SelectionKeybinds
+	ScrollKeybinds
+
+	SelectReply  string `toml:"select_reply"`
+	Reply        string `toml:"reply"`
+	ReplyMention string `toml:"reply_mention"`
+
+	Cancel        string `toml:"cancel"`
+	Edit          string `toml:"edit"`
+	Delete        string `toml:"delete"`
+	DeleteConfirm string `toml:"delete_confirm"`
+	Open          string `toml:"open"`
+
+	YankContent string `toml:"yank_content"`
+	YankURL     string `toml:"yank_url"`
+	YankID      string `toml:"yank_id"`
+}
+
+type MessageInputKeybinds struct {
+	Paste       string `toml:"paste"`
+	Send        string `toml:"send"`
+	Cancel      string `toml:"cancel"`
+	TabComplete string `toml:"tab_complete"`
+
+	OpenEditor     string `toml:"open_editor"`
+	OpenFilePicker string `toml:"open_file_picker"`
+}
+
+type MentionsListKeybinds struct {
+	NavigationKeybinds
+}
+
+type Keybinds struct {
+	FocusGuildsTree   string `toml:"focus_guilds_tree"`
+	FocusMessagesList string `toml:"focus_messages_list"`
+	FocusMessageInput string `toml:"focus_message_input"`
+	FocusPrevious     string `toml:"focus_previous"`
+	FocusNext         string `toml:"focus_next"`
+	ToggleGuildsTree  string `toml:"toggle_guilds_tree"`
+
+	Picker       PickerKeybinds       `toml:"picker"`
+	GuildsTree   GuildsTreeKeybinds   `toml:"guilds_tree"`
+	MessagesList MessagesListKeybinds `toml:"messages_list"`
+	MessageInput MessageInputKeybinds `toml:"message_input"`
+	MentionsList MentionsListKeybinds `toml:"mentions_list"`
+
+	Logout string `toml:"logout"`
+	Quit   string `toml:"quit"`
+}

+ 0 - 87
internal/config/keys.go

@@ -1,87 +0,0 @@
-package config
-
-type (
-	SelectionKeys struct {
-		SelectPrevious string `toml:"select_previous"`
-		SelectNext     string `toml:"select_next"`
-		SelectFirst    string `toml:"select_first"`
-		SelectLast     string `toml:"select_last"`
-	}
-
-	GuildsTreeKeys struct {
-		SelectionKeys
-		SelectCurrent string `toml:"select_current"`
-		YankID        string `toml:"yank_id"`
-
-		CollapseParentNode string `toml:"collapse_parent_node"`
-		MoveToParentNode   string `toml:"move_to_parent_node"`
-	}
-
-	MessagesListKeys struct {
-		SelectionKeys
-		ScrollUp     string `toml:"scroll_up"`
-		ScrollDown   string `toml:"scroll_down"`
-		ScrollTop    string `toml:"scroll_top"`
-		ScrollBottom string `toml:"scroll_bottom"`
-
-		SelectReply  string `toml:"select_reply"`
-		Reply        string `toml:"reply"`
-		ReplyMention string `toml:"reply_mention"`
-
-		Cancel        string `toml:"cancel"`
-		Edit          string `toml:"edit"`
-		Delete        string `toml:"delete"`
-		DeleteConfirm string `toml:"delete_confirm"`
-		Open          string `toml:"open"`
-
-		YankContent string `toml:"yank_content"`
-		YankURL     string `toml:"yank_url"`
-		YankID      string `toml:"yank_id"`
-	}
-
-	MessageInputKeys struct {
-		Paste       string `toml:"paste"`
-		Send        string `toml:"send"`
-		Cancel      string `toml:"cancel"`
-		TabComplete string `toml:"tab_complete"`
-
-		OpenEditor     string `toml:"open_editor"`
-		OpenFilePicker string `toml:"open_file_picker"`
-	}
-
-	MentionsListKeys struct {
-		SelectionKeys
-	}
-
-	NavigationKeys struct {
-		Up     string `toml:"up"`
-		Down   string `toml:"down"`
-		Top    string `toml:"top"`
-		Bottom string `toml:"bottom"`
-	}
-
-	PickerKeys struct {
-		Toggle string `toml:"toggle"`
-		Cancel string `toml:"cancel"`
-		NavigationKeys
-		Select string `toml:"select"`
-	}
-
-	Keys struct {
-		FocusGuildsTree   string `toml:"focus_guilds_tree"`
-		FocusMessagesList string `toml:"focus_messages_list"`
-		FocusMessageInput string `toml:"focus_message_input"`
-		FocusPrevious     string `toml:"focus_previous"`
-		FocusNext         string `toml:"focus_next"`
-		ToggleGuildsTree  string `toml:"toggle_guilds_tree"`
-
-		Picker       PickerKeys       `toml:"picker"`
-		GuildsTree   GuildsTreeKeys   `toml:"guilds_tree"`
-		MessagesList MessagesListKeys `toml:"messages_list"`
-		MessageInput MessageInputKeys `toml:"message_input"`
-		MentionsList MentionsListKeys `toml:"mentions_list"`
-
-		Logout string `toml:"logout"`
-		Quit   string `toml:"quit"`
-	}
-)

+ 6 - 6
internal/ui/chat/channels_picker.go

@@ -31,12 +31,12 @@ func newChannelsPicker(cfg *config.Config, chatView *View) *channelsPicker {
 	cp.SetSelectedFunc(cp.onSelected)
 	cp.SetTitle("Channels")
 	cp.SetKeyMap(&picker.KeyMap{
-		Cancel: cfg.Keys.Picker.Cancel,
-		Up:     cfg.Keys.Picker.Up,
-		Down:   cfg.Keys.Picker.Down,
-		Top:    cfg.Keys.Picker.Top,
-		Bottom: cfg.Keys.Picker.Bottom,
-		Select: cfg.Keys.Picker.Select,
+		Cancel: cfg.Keybinds.Picker.Cancel,
+		Up:     cfg.Keybinds.Picker.Up,
+		Down:   cfg.Keybinds.Picker.Down,
+		Top:    cfg.Keybinds.Picker.Top,
+		Bottom: cfg.Keybinds.Picker.Bottom,
+		Select: cfg.Keybinds.Picker.Select,
 	})
 	return cp
 }

+ 8 - 8
internal/ui/chat/guilds_tree.go

@@ -256,27 +256,27 @@ func (gt *guildsTree) collapseParentNode(node *tview.TreeNode) {
 
 func (gt *guildsTree) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
-	case gt.cfg.Keys.GuildsTree.CollapseParentNode:
+	case gt.cfg.Keybinds.GuildsTree.CollapseParentNode:
 		gt.collapseParentNode(gt.GetCurrentNode())
 		return nil
-	case gt.cfg.Keys.GuildsTree.MoveToParentNode:
+	case gt.cfg.Keybinds.GuildsTree.MoveToParentNode:
 		return tcell.NewEventKey(tcell.KeyRune, "K", tcell.ModNone)
 
-	case gt.cfg.Keys.GuildsTree.SelectPrevious:
+	case gt.cfg.Keybinds.GuildsTree.Up:
 		return tcell.NewEventKey(tcell.KeyUp, "", tcell.ModNone)
-	case gt.cfg.Keys.GuildsTree.SelectNext:
+	case gt.cfg.Keybinds.GuildsTree.Down:
 		return tcell.NewEventKey(tcell.KeyDown, "", tcell.ModNone)
-	case gt.cfg.Keys.GuildsTree.SelectFirst:
+	case gt.cfg.Keybinds.GuildsTree.Top:
 		gt.Move(gt.GetRowCount() * -1)
 		// return tcell.NewEventKey(tcell.KeyHome, 0, tcell.ModNone)
-	case gt.cfg.Keys.GuildsTree.SelectLast:
+	case gt.cfg.Keybinds.GuildsTree.Bottom:
 		gt.Move(gt.GetRowCount())
 		// return tcell.NewEventKey(tcell.KeyEnd, 0, tcell.ModNone)
 
-	case gt.cfg.Keys.GuildsTree.SelectCurrent:
+	case gt.cfg.Keybinds.GuildsTree.SelectCurrent:
 		return tcell.NewEventKey(tcell.KeyEnter, "", tcell.ModNone)
 
-	case gt.cfg.Keys.GuildsTree.YankID:
+	case gt.cfg.Keybinds.GuildsTree.YankID:
 		gt.yankID()
 	}
 

+ 10 - 10
internal/ui/chat/message_input.go

@@ -102,11 +102,11 @@ func (mi *messageInput) stopTypingTimer() {
 
 func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
-	case mi.cfg.Keys.MessageInput.Paste:
+	case mi.cfg.Keybinds.MessageInput.Paste:
 		mi.paste()
 		return tcell.NewEventKey(tcell.KeyCtrlV, "", tcell.ModNone)
 
-	case mi.cfg.Keys.MessageInput.Send:
+	case mi.cfg.Keybinds.MessageInput.Send:
 		if mi.chatView.GetVisibile(mentionsListPageName) {
 			mi.tabComplete()
 			return nil
@@ -114,15 +114,15 @@ func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 
 		mi.send()
 		return nil
-	case mi.cfg.Keys.MessageInput.OpenEditor:
+	case mi.cfg.Keybinds.MessageInput.OpenEditor:
 		mi.stopTabCompletion()
 		mi.editor()
 		return nil
-	case mi.cfg.Keys.MessageInput.OpenFilePicker:
+	case mi.cfg.Keybinds.MessageInput.OpenFilePicker:
 		mi.stopTabCompletion()
 		mi.openFilePicker()
 		return nil
-	case mi.cfg.Keys.MessageInput.Cancel:
+	case mi.cfg.Keybinds.MessageInput.Cancel:
 		if mi.chatView.GetVisibile(mentionsListPageName) {
 			mi.stopTabCompletion()
 		} else {
@@ -130,7 +130,7 @@ func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 		}
 
 		return nil
-	case mi.cfg.Keys.MessageInput.TabComplete:
+	case mi.cfg.Keybinds.MessageInput.TabComplete:
 		go mi.chatView.app.QueueUpdateDraw(func() { mi.tabComplete() })
 		return nil
 	default:
@@ -151,16 +151,16 @@ func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 		if mi.chatView.GetVisibile(mentionsListPageName) {
 			handler := mi.mentionsList.InputHandler()
 			switch event.Name() {
-			case mi.cfg.Keys.MentionsList.SelectPrevious:
+			case mi.cfg.Keybinds.MentionsList.Up:
 				handler(tcell.NewEventKey(tcell.KeyUp, "", tcell.ModNone), nil)
 				return nil
-			case mi.cfg.Keys.MentionsList.SelectNext:
+			case mi.cfg.Keybinds.MentionsList.Down:
 				handler(tcell.NewEventKey(tcell.KeyDown, "", tcell.ModNone), nil)
 				return nil
-			case mi.cfg.Keys.MentionsList.SelectFirst:
+			case mi.cfg.Keybinds.MentionsList.Top:
 				handler(tcell.NewEventKey(tcell.KeyHome, "", tcell.ModNone), nil)
 				return nil
-			case mi.cfg.Keys.MentionsList.SelectLast:
+			case mi.cfg.Keybinds.MentionsList.Bottom:
 				handler(tcell.NewEventKey(tcell.KeyEnd, "", tcell.ModNone), nil)
 				return nil
 			}

+ 24 - 24
internal/ui/chat/messages_list.go

@@ -288,51 +288,51 @@ func (ml *messagesList) selectedMessage() (*discord.Message, error) {
 
 func (ml *messagesList) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
-	case ml.cfg.Keys.MessagesList.ScrollUp:
+	case ml.cfg.Keybinds.MessagesList.ScrollUp:
 		ml.ScrollUp()
 		return nil
-	case ml.cfg.Keys.MessagesList.ScrollDown:
+	case ml.cfg.Keybinds.MessagesList.ScrollDown:
 		ml.ScrollDown()
 		return nil
-	case ml.cfg.Keys.MessagesList.ScrollTop:
+	case ml.cfg.Keybinds.MessagesList.ScrollTop:
 		ml.ScrollToStart()
 		return nil
-	case ml.cfg.Keys.MessagesList.ScrollBottom:
+	case ml.cfg.Keybinds.MessagesList.ScrollBottom:
 		ml.ScrollToEnd()
 		return nil
 
-	case ml.cfg.Keys.MessagesList.Cancel:
+	case ml.cfg.Keybinds.MessagesList.Cancel:
 		ml.clearSelection()
 		return nil
 
-	case ml.cfg.Keys.MessagesList.SelectPrevious, ml.cfg.Keys.MessagesList.SelectNext, ml.cfg.Keys.MessagesList.SelectFirst, ml.cfg.Keys.MessagesList.SelectLast, ml.cfg.Keys.MessagesList.SelectReply:
+	case ml.cfg.Keybinds.MessagesList.SelectUp, ml.cfg.Keybinds.MessagesList.SelectDown, ml.cfg.Keybinds.MessagesList.SelectTop, ml.cfg.Keybinds.MessagesList.SelectBottom, ml.cfg.Keybinds.MessagesList.SelectReply:
 		ml._select(event.Name())
 		return nil
-	case ml.cfg.Keys.MessagesList.YankID:
+	case ml.cfg.Keybinds.MessagesList.YankID:
 		ml.yankID()
 		return nil
-	case ml.cfg.Keys.MessagesList.YankContent:
+	case ml.cfg.Keybinds.MessagesList.YankContent:
 		ml.yankContent()
 		return nil
-	case ml.cfg.Keys.MessagesList.YankURL:
+	case ml.cfg.Keybinds.MessagesList.YankURL:
 		ml.yankURL()
 		return nil
-	case ml.cfg.Keys.MessagesList.Open:
+	case ml.cfg.Keybinds.MessagesList.Open:
 		ml.open()
 		return nil
-	case ml.cfg.Keys.MessagesList.Reply:
+	case ml.cfg.Keybinds.MessagesList.Reply:
 		ml.reply(false)
 		return nil
-	case ml.cfg.Keys.MessagesList.ReplyMention:
+	case ml.cfg.Keybinds.MessagesList.ReplyMention:
 		ml.reply(true)
 		return nil
-	case ml.cfg.Keys.MessagesList.Edit:
+	case ml.cfg.Keybinds.MessagesList.Edit:
 		ml.edit()
 		return nil
-	case ml.cfg.Keys.MessagesList.Delete:
+	case ml.cfg.Keybinds.MessagesList.Delete:
 		ml.delete()
 		return nil
-	case ml.cfg.Keys.MessagesList.DeleteConfirm:
+	case ml.cfg.Keybinds.MessagesList.DeleteConfirm:
 		ml.confirmDelete()
 		return nil
 	}
@@ -349,7 +349,7 @@ func (ml *messagesList) _select(name string) {
 	cursor := ml.Cursor()
 
 	switch name {
-	case ml.cfg.Keys.MessagesList.SelectPrevious:
+	case ml.cfg.Keybinds.MessagesList.SelectUp:
 		switch {
 		case cursor == -1:
 			cursor = len(messages) - 1
@@ -383,18 +383,18 @@ func (ml *messagesList) _select(name string) {
 			ml.messages = slices.Concat(older, ml.messages)
 			cursor = len(messages) - 1
 		}
-	case ml.cfg.Keys.MessagesList.SelectNext:
+	case ml.cfg.Keybinds.MessagesList.SelectDown:
 		switch {
 		case cursor == -1:
 			cursor = len(messages) - 1
 		case cursor < len(messages)-1:
 			cursor++
 		}
-	case ml.cfg.Keys.MessagesList.SelectFirst:
+	case ml.cfg.Keybinds.MessagesList.SelectTop:
 		cursor = 0
-	case ml.cfg.Keys.MessagesList.SelectLast:
+	case ml.cfg.Keybinds.MessagesList.SelectBottom:
 		cursor = len(messages) - 1
-	case ml.cfg.Keys.MessagesList.SelectReply:
+	case ml.cfg.Keybinds.MessagesList.SelectReply:
 		if cursor == -1 || cursor >= len(messages) {
 			return
 		}
@@ -509,13 +509,13 @@ func (ml *messagesList) showAttachmentsList(urls []string, attachments []discord
 	list.
 		SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
 			switch event.Name() {
-			case ml.cfg.Keys.MessagesList.SelectPrevious:
+			case ml.cfg.Keybinds.MessagesList.SelectUp:
 				return tcell.NewEventKey(tcell.KeyUp, "", tcell.ModNone)
-			case ml.cfg.Keys.MessagesList.SelectNext:
+			case ml.cfg.Keybinds.MessagesList.SelectDown:
 				return tcell.NewEventKey(tcell.KeyDown, "", tcell.ModNone)
-			case ml.cfg.Keys.MessagesList.SelectFirst:
+			case ml.cfg.Keybinds.MessagesList.SelectTop:
 				return tcell.NewEventKey(tcell.KeyHome, "", tcell.ModNone)
-			case ml.cfg.Keys.MessagesList.SelectLast:
+			case ml.cfg.Keybinds.MessagesList.SelectBottom:
 				return tcell.NewEventKey(tcell.KeyEnd, "", tcell.ModNone)
 			}
 

+ 8 - 8
internal/ui/chat/view.go

@@ -181,24 +181,24 @@ func (v *View) focusNext() {
 
 func (v *View) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
-	case v.cfg.Keys.FocusGuildsTree:
+	case v.cfg.Keybinds.FocusGuildsTree:
 		v.messageInput.removeMentionsList()
 		v.focusGuildsTree()
 		return nil
-	case v.cfg.Keys.FocusMessagesList:
+	case v.cfg.Keybinds.FocusMessagesList:
 		v.messageInput.removeMentionsList()
 		v.app.SetFocus(v.messagesList)
 		return nil
-	case v.cfg.Keys.FocusMessageInput:
+	case v.cfg.Keybinds.FocusMessageInput:
 		v.focusMessageInput()
 		return nil
-	case v.cfg.Keys.FocusPrevious:
+	case v.cfg.Keybinds.FocusPrevious:
 		v.focusPrevious()
 		return nil
-	case v.cfg.Keys.FocusNext:
+	case v.cfg.Keybinds.FocusNext:
 		v.focusNext()
 		return nil
-	case v.cfg.Keys.Logout:
+	case v.cfg.Keybinds.Logout:
 		if v.onLogout != nil {
 			v.onLogout()
 		}
@@ -209,10 +209,10 @@ func (v *View) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 		}
 
 		return nil
-	case v.cfg.Keys.ToggleGuildsTree:
+	case v.cfg.Keybinds.ToggleGuildsTree:
 		v.toggleGuildsTree()
 		return nil
-	case v.cfg.Keys.Picker.Toggle:
+	case v.cfg.Keybinds.Picker.Toggle:
 		v.togglePicker()
 		return nil
 	}