瀏覽代碼

refactor(config): rename autocomplete to mentions_list

ayn2op 10 月之前
父節點
當前提交
9026c75040
共有 4 個文件被更改,包括 35 次插入36 次删除
  1. 29 28
      cmd/message_input.go
  2. 2 4
      internal/config/config.toml
  3. 2 2
      internal/config/keys.go
  4. 2 2
      internal/config/theme.go

+ 29 - 28
cmd/message_input.go

@@ -31,9 +31,10 @@ var mentionRegex = regexp.MustCompile("@[a-zA-Z0-9._]+")
 
 type messageInput struct {
 	*tview.TextArea
-	cfg            *config.Config
+	cfg *config.Config
+
 	cache          *cache.Cache
-	autocomplete   *tview.List
+	mentionsList   *tview.List
 	replyMessageID discord.MessageID
 	lastSearch     time.Time
 }
@@ -45,7 +46,7 @@ func newMessageInput(cfg *config.Config) *messageInput {
 		TextArea:     tview.NewTextArea(),
 		cfg:          cfg,
 		cache:        cache.NewCache(),
-		autocomplete: tview.NewList(),
+		mentionsList: tview.NewList(),
 	}
 
 	mi.Box = ui.ConfigureBox(mi.Box, &cfg.Theme)
@@ -59,16 +60,16 @@ func newMessageInput(cfg *config.Config) *messageInput {
 		}).
 		SetInputCapture(mi.onInputCapture)
 
-	mi.autocomplete.Box = ui.ConfigureBox(mi.autocomplete.Box, &mi.cfg.Theme)
-	mi.autocomplete.
+	mi.mentionsList.Box = ui.ConfigureBox(mi.mentionsList.Box, &mi.cfg.Theme)
+	mi.mentionsList.
 		ShowSecondaryText(false).
 		SetSelectedStyle(tcell.StyleDefault.Background(tcell.ColorWhite).Foreground(tcell.ColorBlack)).
 		SetTitle("Mentions").
 		SetRect(0, 0, 0, 0)
 
-	b := mi.autocomplete.GetBorderSet()
+	b := mi.mentionsList.GetBorderSet()
 	b.BottomLeft, b.BottomRight = b.BottomT, b.BottomT
-	mi.autocomplete.SetBorderSet(b)
+	mi.mentionsList.SetBorderSet(b)
 
 	return mi
 }
@@ -108,17 +109,17 @@ func (mi *messageInput) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 
 	if mi.cfg.AutocompleteLimit > 0 {
 		if app.pages.GetVisibile(mentionsListPageName) {
-			count := mi.autocomplete.GetItemCount()
-			cur := mi.autocomplete.GetCurrentItem()
+			count := mi.mentionsList.GetItemCount()
+			cur := mi.mentionsList.GetCurrentItem()
 			switch event.Name() {
-			case mi.cfg.Keys.Autocomplete.Down:
-				mi.autocomplete.SetCurrentItem((cur + 1) % count)
+			case mi.cfg.Keys.MentionsList.Down:
+				mi.mentionsList.SetCurrentItem((cur + 1) % count)
 				return nil
-			case mi.cfg.Keys.Autocomplete.Up:
+			case mi.cfg.Keys.MentionsList.Up:
 				if cur == 0 {
 					cur = count
 				}
-				mi.autocomplete.SetCurrentItem(cur - 1)
+				mi.mentionsList.SetCurrentItem(cur - 1)
 				return nil
 			}
 		}
@@ -239,10 +240,10 @@ func (mi *messageInput) tabComplete(isAuto bool) {
 			}
 			return
 		}
-		if mi.autocomplete.GetItemCount() == 0 {
+		if mi.mentionsList.GetItemCount() == 0 {
 			return
 		}
-		_, name = mi.autocomplete.GetItemText(mi.autocomplete.GetCurrentItem())
+		_, name = mi.mentionsList.GetItemText(mi.mentionsList.GetCurrentItem())
 		mi.Replace(pos, posEnd, "@"+name+" ")
 		mi.stopTabCompletion()
 		return
@@ -255,7 +256,7 @@ func (mi *messageInput) tabComplete(isAuto bool) {
 			return
 		}
 		shown := make(map[string]bool)
-		mi.autocomplete.Clear()
+		mi.mentionsList.Clear()
 		for _, m := range msgs {
 			if shown[m.Author.Username] {
 				continue
@@ -270,7 +271,7 @@ func (mi *messageInput) tabComplete(isAuto bool) {
 		}
 	} else {
 		mi.searchMember(gID, name)
-		mi.autocomplete.Clear()
+		mi.mentionsList.Clear()
 		mems, err := discordState.Cabinet.Members(gID)
 		if err != nil {
 			slog.Error("fetching members failed", "err", err)
@@ -288,7 +289,7 @@ func (mi *messageInput) tabComplete(isAuto bool) {
 		}
 	}
 
-	if mi.autocomplete.GetItemCount() == 0 {
+	if mi.mentionsList.GetItemCount() == 0 {
 		mi.stopTabCompletion()
 		return
 	}
@@ -349,22 +350,22 @@ func (mi *messageInput) showMentionList(col int) {
 	if mi.cfg.Theme.Border.Enabled {
 		borders = 1
 	}
-	l := mi.autocomplete
+	l := mi.mentionsList
 	x, _, _, _ := mi.GetInnerRect()
 	_, y, _, _ := mi.GetRect()
 	_, _, maxW, maxH := app.messagesList.GetInnerRect()
-	if t := int(mi.cfg.Theme.Autocomplete.MaxHeight); t != 0 {
+	if t := int(mi.cfg.Theme.MentionsList.MaxHeight); t != 0 {
 		maxH = min(maxH, t)
 	}
 	count := l.GetItemCount() + borders
 	h := min(count, maxH) + borders + mi.cfg.Theme.Border.Padding[1]
 	y -= h
-	w := int(mi.cfg.Theme.Autocomplete.MinWidth)
+	w := int(mi.cfg.Theme.MentionsList.MinWidth)
 	if w == 0 {
 		w = maxW
 	} else {
 		for i := range count - 1 {
-			t, _ := mi.autocomplete.GetItemText(i)
+			t, _ := mi.mentionsList.GetItemText(i)
 			w = max(w, tview.TaggedStringWidth(t))
 		}
 		w = min(w+borders*2, maxW)
@@ -384,7 +385,7 @@ func (mi *messageInput) addAutocompleteItem(gID discord.GuildID, m *discord.Memb
 		return false
 	}
 	var dname string
-	if mi.cfg.Theme.Autocomplete.ShowNicknames && m.Nick != "" {
+	if mi.cfg.Theme.MentionsList.ShowNicknames && m.Nick != "" {
 		dname = m.Nick
 	} else {
 		dname = m.User.DisplayName
@@ -393,7 +394,7 @@ func (mi *messageInput) addAutocompleteItem(gID discord.GuildID, m *discord.Memb
 		dname = tview.Escape(dname)
 	}
 	// this is WAY faster than discordState.MemberColor
-	if mi.cfg.Theme.Autocomplete.ShowUsernameColors {
+	if mi.cfg.Theme.MentionsList.ShowUsernameColors {
 		if c, ok := state.MemberColor(m, func(id discord.RoleID) *discord.Role {
 			r, _ := discordState.Cabinet.Role(gID, id)
 			return r
@@ -410,11 +411,11 @@ func (mi *messageInput) addAutocompleteItem(gID discord.GuildID, m *discord.Memb
 		username = "[::d]" + username + "[::D]"
 	}
 	if dname != "" {
-		mi.autocomplete.AddItem(dname+" ("+username+")", m.User.Username, 0, nil)
+		mi.mentionsList.AddItem(dname+" ("+username+")", m.User.Username, 0, nil)
 	} else {
-		mi.autocomplete.AddItem(username, m.User.Username, 0, nil)
+		mi.mentionsList.AddItem(username, m.User.Username, 0, nil)
 	}
-	return mi.autocomplete.GetItemCount() > int(mi.cfg.AutocompleteLimit)
+	return mi.mentionsList.GetItemCount() > int(mi.cfg.AutocompleteLimit)
 }
 
 func (mi *messageInput) removeMentionsList() {
@@ -425,7 +426,7 @@ func (mi *messageInput) removeMentionsList() {
 
 func (mi *messageInput) stopTabCompletion() {
 	if mi.cfg.AutocompleteLimit > 0 {
-		mi.autocomplete.Clear()
+		mi.mentionsList.Clear()
 		mi.removeMentionsList()
 		app.SetFocus(mi)
 	}

+ 2 - 4
internal/config/config.toml

@@ -95,9 +95,7 @@ cancel = "Esc"
 # Complete usernames when mentioning
 tab_complete = "Tab"
 
-# When typing and there's an autocomplete list visible,
-# pressing these keys will focus on the list instead of the message input.
-[keys.autocomplete]
+[keys.mentions_list]
 up = "Up"
 down = "Down"
 
@@ -143,7 +141,7 @@ emoji_style = { foreground = "green", background = "default" }
 url_style = { foreground = "blue", background = "default" }
 attachment_style = { foreground = "yellow", background = "default" }
 
-[theme.autocomplete]
+[theme.mentions_list]
 show_user_nicks = true
 show_user_colors = true
 

+ 2 - 2
internal/config/keys.go

@@ -17,7 +17,7 @@ type (
 		GuildsTree   GuildsTreeKeys   `toml:"guilds_tree"`
 		MessagesList MessagesListKeys `toml:"messages_list"`
 		MessageInput MessageInputKeys `toml:"message_input"`
-		Autocomplete AutocompleteKeys `toml:"autocomplete"`
+		MentionsList MentionsListKeys `toml:"mentions_list"`
 
 		Logout string `toml:"logout"`
 		Quit   string `toml:"quit"`
@@ -54,7 +54,7 @@ type (
 		TabComplete string `toml:"tab_complete"`
 	}
 
-	AutocompleteKeys struct {
+	MentionsListKeys struct {
 		Up   string `toml:"up"`
 		Down string `toml:"down"`
 	}

+ 2 - 2
internal/config/theme.go

@@ -127,7 +127,7 @@ type (
 		AttachmentStyle StyleWrapper `toml:"attachment_style"`
 	}
 
-	AutocompleteTheme struct {
+	MentionsListTheme struct {
 		ShowNicknames      bool `toml:"show_user_nicks"`
 		ShowUsernameColors bool `toml:"show_user_colors"`
 
@@ -143,6 +143,6 @@ type (
 
 		GuildsTree   GuildsTreeTheme   `toml:"guilds_tree"`
 		MessagesList MessagesListTheme `toml:"messages_list"`
-		Autocomplete AutocompleteTheme `toml:"autocomplete"`
+		MentionsList MentionsListTheme `toml:"mentions_list"`
 	}
 )