From 6a3fe6ae01bbc98b36f2705833dcc9406be7b94d Mon Sep 17 00:00:00 2001 From: Daniel M German Date: Sun, 22 Mar 2026 17:13:13 -0700 Subject: [PATCH 1/2] Command palette: word-level search with multi-token cross-column matching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Implement a word-level scoring engine for the command palette that replaces the previous FZF-based approach. Query tokens are matched against pre-tokenized words in each column (key, action, category) with exact, prefix, and edit-distance scoring. Multiple search terms are supported with cross-column matching — items matching more tokens rank higher. Compound query tokens containing delimiters (e.g. mouse_selection) are matched as units. Add comprehensive tests using a Go builder API instead of raw JSON blobs, covering single-token, multi-token, partial-match, ranking, mouse binding, and unmapped action scenarios. Add documentation for the command palette kitten. --- docs/kittens/command-palette.rst | 114 ++++ docs/kittens_intro.rst | 6 + docs/screenshots/command-palette.png | Bin 0 -> 291740 bytes kittens/command_palette/main.go | 443 +++++++++----- kittens/command_palette/main_test.go | 882 +++++++++++++++++++++++---- 5 files changed, 1189 insertions(+), 256 deletions(-) create mode 100644 docs/kittens/command-palette.rst create mode 100644 docs/screenshots/command-palette.png diff --git a/docs/kittens/command-palette.rst b/docs/kittens/command-palette.rst new file mode 100644 index 000000000..95add0198 --- /dev/null +++ b/docs/kittens/command-palette.rst @@ -0,0 +1,114 @@ +Command palette +================= + +.. only:: man + + Overview + -------------- + + +The command palette lets you browse, search and trigger all keyboard shortcuts +and actions in |kitty| from a single searchable overlay. Press +:sc:`command_palette` to open it (default: :kbd:`Ctrl+Shift+F3`). + +.. figure:: ../screenshots/command-palette.png + :alt: A screenshot of the command palette kitten + :align: center + :width: 100% + + The command palette showing search results for "window close" + +All mapped actions (those with a keyboard shortcut) and unmapped actions (those +available but not bound to any key) are listed, organized by category. Mouse +bindings are shown in a separate section. Simply type to search, select a +result, and press :kbd:`Enter` to run it. + + +Searching +----------- + +As you type into the search bar, the palette filters results in real time using +word-level matching across three columns: key, action, and category. + +Multiple search terms are supported. Typing ``scroll page`` matches items that +contain both "scroll" and "page" in any column. Items matching more of your +search terms rank higher than those matching fewer. + +The search also handles compound tokens that contain delimiters such as +underscores or slashes. For example, typing ``mouse_selection`` matches the +full compound name as a unit. Typo tolerance is built in for words of four +characters or longer. + +Matched characters are highlighted in the results so you can see exactly where +each term matched. + + +Keyboard controls +------------------- + +The following keys are available while the command palette is open: + +.. list-table:: + :widths: auto + :header-rows: 1 + + * - Key + - Action + * - Any text + - Filter results by typing a search query + * - :kbd:`Enter` + - Run the selected action + * - :kbd:`Escape` + - Clear the search query, or close the palette if the query is already empty + * - :kbd:`Up` / :kbd:`Ctrl+K` / :kbd:`Ctrl+P` + - Move selection up + * - :kbd:`Down` / :kbd:`Ctrl+J` / :kbd:`Ctrl+N` + - Move selection down + * - :kbd:`Page Up` + - Move selection up by a page + * - :kbd:`Page Down` + - Move selection down by a page + * - :kbd:`Home` + - Jump to the first result + * - :kbd:`End` + - Jump to the last result + * - :kbd:`Backspace` + - Delete the last character from the query + * - :kbd:`F12` + - Toggle display of unmapped actions + * - Mouse click + - Select and run the clicked action + + +Unmapped actions +------------------ + +By default, the palette shows both mapped actions (those bound to a shortcut) +and unmapped actions (those with no shortcut assigned). Unmapped actions appear +with an ``(unmapped)`` label in the key column. Press :kbd:`F12` to toggle +their visibility. This preference is remembered across sessions. + +Unmapped actions are useful for discovering functionality that you may not have +configured a shortcut for. You can run them directly from the palette, or note +the action name and add a mapping in :file:`kitty.conf`. + + +Custom keyboard modes +----------------------- + +If you have defined custom :ref:`keyboard modes ` in your +configuration, their bindings appear under separate mode headers in the palette. +The ``push_keyboard_mode`` bindings are grouped with the target mode they +activate, making it easy to see how to enter each mode alongside its shortcuts. + + +Configuration +-------------- + +The default mapping to open the command palette is:: + + map kitty_mod+f3 command_palette + +You can change this in :file:`kitty.conf` like any other mapping. For example:: + + map ctrl+p command_palette diff --git a/docs/kittens_intro.rst b/docs/kittens_intro.rst index daa908116..b89b11154 100644 --- a/docs/kittens_intro.rst +++ b/docs/kittens_intro.rst @@ -13,6 +13,7 @@ Extend with kittens kittens/themes kittens/choose-fonts kittens/hints + kittens/command-palette kittens/quick-access-terminal kittens/choose-files kittens/panel @@ -54,6 +55,11 @@ Some prominent kittens: filenames, words, lines, etc. from the terminal screen. +:doc:`Command palette ` + Browse, search and trigger all keyboard shortcuts and actions from a + single searchable overlay. + + :doc:`Quick access terminal ` Get access to a quick access floating, semi-transparent kitty window with a single keypress. diff --git a/docs/screenshots/command-palette.png b/docs/screenshots/command-palette.png new file mode 100644 index 0000000000000000000000000000000000000000..12305728148cddb79bbad2afeeaddd7c60a62561 GIT binary patch literal 291740 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

9RLQaJT|c(Zy)S|>=Z+lm_<3#g5{1Pp|fI$7y` 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%0DyEj~*6q4H%pJGQm0^CtZq%kK+i%oG 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 ZW8ax~=7ONzs!a?);OXk;vd$@?2>=~vMC1Sf literal 0 HcmV?d00001 diff --git a/kittens/command_palette/main.go b/kittens/command_palette/main.go index e0d26653f..683d155ff 100644 --- a/kittens/command_palette/main.go +++ b/kittens/command_palette/main.go @@ -11,7 +11,6 @@ import ( "strings" "github.com/kovidgoyal/kitty/tools/cli" - "github.com/kovidgoyal/kitty/tools/fzf" "github.com/kovidgoyal/kitty/tools/tty" "github.com/kovidgoyal/kitty/tools/tui" "github.com/kovidgoyal/kitty/tools/tui/loop" @@ -39,16 +38,166 @@ type InputData struct { CategoryOrder map[string][]string `json:"category_order"` } -// DisplayItem wraps a binding with its per-column search texts for FZF scoring -type DisplayItem struct { - binding Binding - colTexts [3]string // [0]=key, [1]=action_display, [2]=category +// wordToken represents a single word extracted from column text, with its +// rune-level position in the original string for match highlighting. +type wordToken struct { + word string // lowercased word + startPos int // rune offset in original column text + endPos int // rune offset past last char } -// matchInfo stores which column matched and the matched character positions +// tokenizeWords splits s into words on delimiters (_ space + / -) and returns +// each word with its rune position in the original string. +func tokenizeWords(s string) []wordToken { + runes := []rune(strings.ToLower(s)) + var tokens []wordToken + start := -1 + for i, r := range runes { + if isWordDelimiter(r) { + if start >= 0 { + tokens = append(tokens, wordToken{ + word: string(runes[start:i]), + startPos: start, + endPos: i, + }) + start = -1 + } + } else if start < 0 { + start = i + } + } + if start >= 0 { + tokens = append(tokens, wordToken{ + word: string(runes[start:]), + startPos: start, + endPos: len(runes), + }) + } + return tokens +} + +// tokenizeQuery splits a query string into lowercase tokens on whitespace only. +// Delimiter characters like _ + / - are preserved within tokens so the user can +// search for compound names (e.g. "mouse_selection") as a single unit. +func tokenizeQuery(s string) []string { + parts := strings.Fields(s) + for i := range parts { + parts[i] = strings.ToLower(parts[i]) + } + return parts +} + +// isWordDelimiter returns true for characters used to split column text into words. +func isWordDelimiter(r rune) bool { + return r == '_' || r == ' ' || r == '+' || r == '/' || r == '-' +} + +// matchSingleWord finds the best-matching word for a simple (no-delimiter) query +// token against a column's pre-tokenized words. +// +// Scoring: exact=4, prefix=3, edit-distance-1=2, edit-distance-2=1, none=0. +func matchSingleWord(queryToken string, words []wordToken) (score int, positions []int) { + for _, w := range words { + var s int + var pos []int + + if w.word == queryToken { + // Exact match + s = 4 + pos = runeRange(w.startPos, w.endPos) + } else if strings.HasPrefix(w.word, queryToken) { + // Prefix match — highlight only the matched prefix + s = 3 + pos = runeRange(w.startPos, w.startPos+len([]rune(queryToken))) + } else if len(queryToken) >= 4 && len(w.word) >= 4 { + // Typo tolerance via edit distance (only for words >= 4 chars) + dist := utils.LevenshteinDistance(queryToken, w.word, false) + if dist == 1 { + s = 2 + pos = runeRange(w.startPos, w.endPos) + } else if dist == 2 { + s = 1 + pos = runeRange(w.startPos, w.endPos) + } + } + + if s > score { + score = s + positions = pos + } + } + return +} + +// bestWordMatch finds the best match for queryToken against a column's words. +// For compound tokens (containing _ + / -), it first tries an exact substring +// match against the full column text, then falls back to matching each sub-part +// independently against individual words. +func bestWordMatch(queryToken string, words []wordToken, colText string) (score int, positions []int) { + if !strings.ContainsAny(queryToken, "_+/-") { + return matchSingleWord(queryToken, words) + } + + // Compound token: try exact substring match in the column text + colLower := strings.ToLower(colText) + if idx := strings.Index(colLower, queryToken); idx != -1 { + runeIdx := len([]rune(colLower[:idx])) + qRuneLen := len([]rune(queryToken)) + subParts := strings.FieldsFunc(queryToken, isWordDelimiter) + return 4 * len(subParts), runeRange(runeIdx, runeIdx+qRuneLen) + } + + // Fallback: match each sub-part independently against words + subParts := strings.FieldsFunc(queryToken, isWordDelimiter) + var totalScore int + var allPos []int + for _, sub := range subParts { + s, p := matchSingleWord(sub, words) + totalScore += s + allPos = append(allPos, p...) + } + if totalScore > 0 { + return totalScore, allPos + } + return 0, nil +} + +// runeRange returns a slice of consecutive ints from start to end-1. +func runeRange(start, end int) []int { + pos := make([]int, end-start) + for i := range pos { + pos[i] = start + i + } + return pos +} + +// DisplayItem wraps a binding with its per-column search texts and pre-tokenized +// words for word-level matching. +type DisplayItem struct { + binding Binding + keyText string + actionText string + categoryText string + keyWords []wordToken + actionWords []wordToken + categoryWords []wordToken +} + +// matchInfo stores matched character positions per column for multi-token highlighting type matchInfo struct { - colIdx int // which column matched: 0=key, 1=action_display, 2=category - positions []int // rune positions in the matched column text + keyPositions []int // matched rune positions in key column + actionPositions []int // matched rune positions in action column + categoryPositions []int // matched rune positions in category column +} + +// scoredItem holds ranking data for a single item matching the current query. +type scoredItem struct { + idx int + nMatched int + actionScore int + keyScore int + categoryScore int + mi matchInfo } type displayLine struct { @@ -84,7 +233,24 @@ func truncateToWidth(s string, maxWidth int) string { return string(runes) + "..." } -// CachedSettings holds persistent UI settings stored in command-palette.json. +// sectionHeader returns a separator line like " ── label ─────────". +func sectionHeader(label string, width int) string { + labelWidth := wcswidth.Stringwidth(label) + sepLen := max(0, width-labelWidth-6) + sep := strings.Repeat("\u2500", sepLen) + return fmt.Sprintf(" \u2500\u2500 %s %s", label, sep) +} + +// keyDisplayText returns the display string for a binding's key column, +// substituting unmappedLabel for empty keys and truncating to maxKeyDisplayWidth. +func keyDisplayText(b *Binding) string { + key := b.Key + if key == "" { + key = unmappedLabel + } + return truncateToWidth(key, maxKeyDisplayWidth) +} + type CachedSettings struct { ShowUnmapped bool `json:"show_unmapped"` } @@ -93,7 +259,6 @@ type Handler struct { lp *loop.Loop screen_size loop.ScreenSize all_items []DisplayItem - matcher *fzf.FuzzyMatcher filtered_idx []int // indices into all_items for current results match_infos []matchInfo // parallel to filtered_idx, valid when query != "" query string @@ -129,7 +294,6 @@ func (h *Handler) initialize() (string, error) { return "", err } - h.matcher = fzf.NewFuzzyMatcher(fzf.DEFAULT_SCHEME) h.updateFilter() h.draw_screen() h.lp.SendOverlayReady() @@ -153,8 +317,8 @@ func (h *Handler) loadData() error { } // flattenBindings converts the hierarchical mode/category/binding data into -// a flat list suitable for display and FZF scoring. Uses the explicit ordering -// arrays from Python since Go maps do not preserve insertion order. +// a flat list suitable for display and word-level scoring. Uses the explicit +// ordering arrays from Python since Go maps do not preserve insertion order. func (h *Handler) flattenBindings() { // Use explicit mode ordering from Python, falling back to sorted keys modeNames := h.input_data.ModeOrder @@ -204,8 +368,13 @@ func (h *Handler) flattenBindings() { keyText = unmappedLabel } h.all_items = append(h.all_items, DisplayItem{ - binding: b, - colTexts: [3]string{keyText, b.ActionDisplay, catName}, + binding: b, + keyText: keyText, + actionText: b.ActionDisplay, + categoryText: catName, + keyWords: tokenizeWords(keyText), + actionWords: tokenizeWords(b.ActionDisplay), + categoryWords: tokenizeWords(catName), }) } } @@ -217,14 +386,21 @@ func (h *Handler) flattenBindings() { b.Mode = "" b.IsMouse = true h.all_items = append(h.all_items, DisplayItem{ - binding: b, - colTexts: [3]string{b.Key, b.ActionDisplay, "Mouse actions"}, + binding: b, + keyText: b.Key, + actionText: b.ActionDisplay, + categoryText: "Mouse actions", + keyWords: tokenizeWords(b.Key), + actionWords: tokenizeWords(b.ActionDisplay), + categoryWords: tokenizeWords("Mouse actions"), }) } } func (h *Handler) updateFilter() { - if h.query == "" { + tokens := tokenizeQuery(h.query) + + if len(tokens) == 0 { // Show all items in original order, respecting the show_unmapped toggle h.filtered_idx = make([]int, 0, len(h.all_items)) for i, item := range h.all_items { @@ -239,62 +415,60 @@ func (h *Handler) updateFilter() { return } - nItems := len(h.all_items) - - // Build per-column text slices for batch FZF scoring - colSlices := [3][]string{ - make([]string, nItems), - make([]string, nItems), - make([]string, nItems), - } - for i, item := range h.all_items { - colSlices[0][i] = item.colTexts[0] - colSlices[1][i] = item.colTexts[1] - colSlices[2][i] = item.colTexts[2] - } - - // Score each column independently - colResults := [3][]fzf.Result{} - for c := range 3 { - results, err := h.matcher.Score(colSlices[c], h.query) - if err == nil { - colResults[c] = results - } - } - - type scored struct { - idx int - score uint - colIdx int - positions []int - } - var matches []scored + var matches []scoredItem for i := range h.all_items { if !h.show_unmapped && h.all_items[i].binding.Key == "" { continue } - bestScore := uint(0) - bestCol := 0 - var bestPositions []int - for c := range 3 { - if colResults[c] != nil && i < len(colResults[c]) && colResults[c][i].Score > bestScore { - bestScore = colResults[c][i].Score - bestCol = c - bestPositions = colResults[c][i].Positions + item := &h.all_items[i] + var s scoredItem + s.idx = i + + for _, qt := range tokens { + ks, kp := bestWordMatch(qt, item.keyWords, item.keyText) + as, ap := bestWordMatch(qt, item.actionWords, item.actionText) + cs, cp := bestWordMatch(qt, item.categoryWords, item.categoryText) + + best := max(ks, max(as, cs)) + if best > 0 { + s.nMatched++ } + s.keyScore += ks + s.actionScore += as + s.categoryScore += cs + s.mi.keyPositions = append(s.mi.keyPositions, kp...) + s.mi.actionPositions = append(s.mi.actionPositions, ap...) + s.mi.categoryPositions = append(s.mi.categoryPositions, cp...) } - if bestScore > 0 { - matches = append(matches, scored{idx: i, score: bestScore, colIdx: bestCol, positions: bestPositions}) + + if s.nMatched > 0 { + matches = append(matches, s) } } + + // Sort: most tokens matched > actionScore > keyScore > categoryScore > shorter ActionDisplay sort.Slice(matches, func(i, j int) bool { - return matches[i].score > matches[j].score + if matches[i].nMatched != matches[j].nMatched { + return matches[i].nMatched > matches[j].nMatched + } + if matches[i].actionScore != matches[j].actionScore { + return matches[i].actionScore > matches[j].actionScore + } + if matches[i].keyScore != matches[j].keyScore { + return matches[i].keyScore > matches[j].keyScore + } + if matches[i].categoryScore != matches[j].categoryScore { + return matches[i].categoryScore > matches[j].categoryScore + } + return len(h.all_items[matches[i].idx].binding.ActionDisplay) < len(h.all_items[matches[j].idx].binding.ActionDisplay) }) + + // Build filtered_idx and match_infos h.filtered_idx = make([]int, len(matches)) h.match_infos = make([]matchInfo, len(matches)) for i, m := range matches { h.filtered_idx[i] = m.idx - h.match_infos[i] = matchInfo{colIdx: m.colIdx, positions: m.positions} + h.match_infos[i] = m.mi } h.selected_idx = 0 h.scroll_offset = 0 @@ -377,16 +551,7 @@ func (h *Handler) draw_screen() { // Draw help text for selected binding h.lp.MoveCursorTo(1, helpY) if b := h.selectedBinding(); b != nil && b.Help != "" { - helpStr := b.Help - maxLen := max(width-2, 3) - if wcswidth.Stringwidth(helpStr) > maxLen { - // Truncate by runes to avoid breaking multi-byte characters - runes := []rune(helpStr) - for len(runes) > 0 && wcswidth.Stringwidth(string(runes))+3 > maxLen { - runes = runes[:len(runes)-1] - } - helpStr = string(runes) + "..." - } + helpStr := truncateToWidth(b.Help, max(width-2, 3)) h.lp.QueueWriteString(h.lp.SprintStyled("dim italic", " "+helpStr)) } @@ -400,11 +565,11 @@ func (h *Handler) draw_screen() { h.lp.SprintStyled("fg=bright-yellow", "[Esc]") + " Quit " + h.lp.SprintStyled("fg=bright-yellow", "\u2191\u2193") + " Navigate " + h.lp.SprintStyled("fg=bright-yellow", "[F12]") + " " + unmappedToggleLabel + " unmapped" - matchInfo := "" + matchCount := "" if h.query != "" { - matchInfo = fmt.Sprintf(" %d/%d", len(h.filtered_idx), len(h.all_items)) + matchCount = fmt.Sprintf(" %d/%d", len(h.filtered_idx), len(h.all_items)) } - h.lp.QueueWriteString(" " + footer + h.lp.SprintStyled("dim", matchInfo)) + h.lp.QueueWriteString(" " + footer + h.lp.SprintStyled("dim", matchCount)) // Position cursor at end of search text for typing h.lp.MoveCursorTo(3+wcswidth.Stringwidth(h.query), searchBarY) @@ -424,16 +589,11 @@ func (h *Handler) drawGroupedResults(startY, maxRows, width int) { lastMode = b.Mode lastCategory = "" if b.Mode != "" { - // Non-default mode: show "── Keyboard mode: name ──" header (purple), no category separators if len(lines) > 0 { lines = append(lines, displayLine{itemIdx: -1, isHeader: true}) } - label := "Keyboard mode: " + b.Mode - labelWidth := wcswidth.Stringwidth(label) - sepLen := max(0, width-labelWidth-6) - sep := strings.Repeat("\u2500", sepLen) lines = append(lines, displayLine{ - text: fmt.Sprintf(" \u2500\u2500 %s %s", label, sep), + text: sectionHeader("Keyboard mode: "+b.Mode, width), isModeHdr: true, isHeader: true, itemIdx: -1, }) } @@ -445,21 +605,14 @@ func (h *Handler) drawGroupedResults(startY, maxRows, width int) { if len(lines) > 0 && !lines[len(lines)-1].isHeader { lines = append(lines, displayLine{itemIdx: -1, isHeader: true}) } - catWidth := wcswidth.Stringwidth(b.Category) - sepLen := max(0, width-catWidth-6) - sep := strings.Repeat("\u2500", sepLen) lines = append(lines, displayLine{ - text: fmt.Sprintf(" \u2500\u2500 %s %s", b.Category, sep), + text: sectionHeader(b.Category, width), isHeader: true, itemIdx: -1, }) } - // Binding line — key column shows "(unmapped)" for actions with no shortcut - keyDisplay := b.Key - if keyDisplay == "" { - keyDisplay = unmappedLabel - } - keyDisplay = truncateToWidth(keyDisplay, maxKeyDisplayWidth) + // Binding line + keyDisplay := keyDisplayText(b) lines = append(lines, displayLine{ text: fmt.Sprintf(" %-*s %s", maxKeyDisplayWidth, keyDisplay, b.ActionDisplay), itemIdx: fi, @@ -482,11 +635,7 @@ func (h *Handler) drawFlatResults(startY, maxRows, width int) { for fi, idx := range h.filtered_idx { item := &h.all_items[idx] b := &item.binding - keyDisplay := b.Key - if keyDisplay == "" { - keyDisplay = unmappedLabel - } - keyDisplay = truncateToWidth(keyDisplay, maxKeyDisplayWidth) + keyDisplay := keyDisplayText(b) catSuffix := "" if b.Mode != "" { catSuffix = fmt.Sprintf(" [%s/%s]", b.Mode, b.Category) @@ -549,37 +698,26 @@ func (h *Handler) drawLines(lines []displayLine, startY, maxRows, width int) { } else if li.isHeader { h.lp.QueueWriteString(h.lp.SprintStyled("fg=bright-blue", text)) } else if li.itemIdx == h.selected_idx { - // Selected item: highlight with reverse video - padded := text - textWidth := wcswidth.Stringwidth(text) - if textWidth < width { - padded += strings.Repeat(" ", width-textWidth) - } - h.lp.QueueWriteString(h.lp.SprintStyled("fg=black bg=white", padded)) + // Selected item: highlight with reverse video, preserving match highlights + h.drawBindingLine(li.itemIdx, width, true) } else { - h.drawBindingLine(text, li.itemIdx, width) + h.drawBindingLine(li.itemIdx, width, false) } } } -func (h *Handler) drawBindingLine(text string, filteredIdx, width int) { +func (h *Handler) drawBindingLine(filteredIdx, width int, isSelected bool) { if filteredIdx < 0 || filteredIdx >= len(h.filtered_idx) { - h.lp.QueueWriteString(text) return } idx := h.filtered_idx[filteredIdx] if idx < 0 || idx >= len(h.all_items) { - h.lp.QueueWriteString(text) return } b := &h.all_items[idx].binding - // Build the key display (using unmappedLabel for items with no shortcut) - rawKey := b.Key - if rawKey == "" { - rawKey = unmappedLabel - } - keyDisplay := truncateToWidth(rawKey, maxKeyDisplayWidth) + // Build the key display + keyDisplay := keyDisplayText(b) // Determine match info for highlighting (only set when a query is active) var mi *matchInfo @@ -587,50 +725,77 @@ func (h *Handler) drawBindingLine(text string, filteredIdx, width int) { mi = &h.match_infos[filteredIdx] } - const matchStyle = "fg=bright-yellow" - const keyStyle = "fg=green" - const unmappedStyle = "dim fg=green" + // Style definitions vary based on whether this row is selected + var matchStyle, keyStyle, unmappedStyle, baseStyle string + if isSelected { + matchStyle = "fg=bright-yellow reverse" + keyStyle = "fg=green reverse" + unmappedStyle = "dim fg=green reverse" + baseStyle = "reverse" + } else { + matchStyle = "fg=bright-yellow" + keyStyle = "fg=green" + unmappedStyle = "dim fg=green" + } + + // styled applies baseStyle to s when selected, or returns s unchanged. + styled := func(s string) string { + if baseStyle != "" { + return h.lp.SprintStyled(baseStyle, s) + } + return s + } // Render key column (4-space indent + key padded to maxKeyDisplayWidth + space) paddingLen := max(0, maxKeyDisplayWidth-wcswidth.Stringwidth(keyDisplay)) - if mi != nil && mi.colIdx == 0 { - ks := keyStyle - if b.Key == "" { - ks = unmappedStyle - } - h.lp.QueueWriteString(" ") - h.lp.QueueWriteString(h.highlightMatchedChars(keyDisplay, mi.positions, ks, matchStyle)) - h.lp.QueueWriteString(strings.Repeat(" ", paddingLen) + " ") - } else if b.Key == "" { - h.lp.QueueWriteString(h.lp.SprintStyled(unmappedStyle, " "+keyDisplay+strings.Repeat(" ", paddingLen)+" ")) + pad := strings.Repeat(" ", paddingLen) + " " + ks := keyStyle + if b.Key == "" { + ks = unmappedStyle + } + if mi != nil && len(mi.keyPositions) > 0 { + h.lp.QueueWriteString(styled(" ")) + h.lp.QueueWriteString(h.highlightMatchedChars(keyDisplay, mi.keyPositions, ks, matchStyle)) + h.lp.QueueWriteString(styled(pad)) } else { - h.lp.QueueWriteString(h.lp.SprintStyled(keyStyle, " "+keyDisplay+strings.Repeat(" ", paddingLen)+" ")) + h.lp.QueueWriteString(h.lp.SprintStyled(ks, " "+keyDisplay+pad)) } // Render action display column - if mi != nil && mi.colIdx == 1 { - h.lp.QueueWriteString(h.highlightMatchedChars(b.ActionDisplay, mi.positions, "", matchStyle)) + if mi != nil && len(mi.actionPositions) > 0 { + h.lp.QueueWriteString(h.highlightMatchedChars(b.ActionDisplay, mi.actionPositions, baseStyle, matchStyle)) } else { - h.lp.QueueWriteString(b.ActionDisplay) + h.lp.QueueWriteString(styled(b.ActionDisplay)) } // Render category suffix (only present in flat / search-results mode) if h.query != "" { - if mi != nil && mi.colIdx == 2 { - if b.Mode != "" { - h.lp.QueueWriteString(fmt.Sprintf(" [%s/", b.Mode)) - } else { - h.lp.QueueWriteString(" [") - } - h.lp.QueueWriteString(h.highlightMatchedChars(b.Category, mi.positions, "", matchStyle)) - h.lp.QueueWriteString("]") + prefix := " [" + if b.Mode != "" { + prefix = fmt.Sprintf(" [%s/", b.Mode) + } + if mi != nil && len(mi.categoryPositions) > 0 { + h.lp.QueueWriteString(styled(prefix)) + h.lp.QueueWriteString(h.highlightMatchedChars(b.Category, mi.categoryPositions, baseStyle, matchStyle)) + h.lp.QueueWriteString(styled("]")) } else { + h.lp.QueueWriteString(styled(prefix + b.Category + "]")) + } + } + + // For selected rows, pad the rest of the line with reverse video + if isSelected { + // Calculate rendered width and pad to fill the line + rendered := 4 + wcswidth.Stringwidth(keyDisplay) + paddingLen + 1 + wcswidth.Stringwidth(b.ActionDisplay) + if h.query != "" { + rendered += 2 + wcswidth.Stringwidth(b.Category) + 1 if b.Mode != "" { - h.lp.QueueWriteString(fmt.Sprintf(" [%s/%s]", b.Mode, b.Category)) - } else { - h.lp.QueueWriteString(fmt.Sprintf(" [%s]", b.Category)) + rendered += wcswidth.Stringwidth(b.Mode) + 1 } } + if pad := width - rendered; pad > 0 { + h.lp.QueueWriteString(h.lp.SprintStyled(baseStyle, strings.Repeat(" ", pad))) + } } } diff --git a/kittens/command_palette/main_test.go b/kittens/command_palette/main_test.go index a489e608a..66d59f280 100644 --- a/kittens/command_palette/main_test.go +++ b/kittens/command_palette/main_test.go @@ -5,53 +5,99 @@ import ( "fmt" "strings" "testing" - - "github.com/kovidgoyal/kitty/tools/fzf" ) -func sampleInputJSON() string { - return `{ - "modes": { - "": { - "Copy/paste": [ - {"key": "ctrl+shift+c", "action": "copy_to_clipboard", "action_display": "copy_to_clipboard", "definition": "copy_to_clipboard", "help": "Copy the selected text from the active window to the clipboard", "long_help": ""}, - {"key": "ctrl+shift+v", "action": "paste_from_clipboard", "action_display": "paste_from_clipboard", "definition": "paste_from_clipboard", "help": "Paste from the clipboard to the active window", "long_help": ""} - ], - "Scrolling": [ - {"key": "ctrl+shift+up", "action": "scroll_line_up", "action_display": "scroll_line_up", "definition": "scroll_line_up", "help": "Scroll up one line", "long_help": ""}, - {"key": "ctrl+shift+down", "action": "scroll_line_down", "action_display": "scroll_line_down", "definition": "scroll_line_down", "help": "Scroll down one line", "long_help": ""} - ], - "Window management": [ - {"key": "ctrl+shift+enter", "action": "new_window", "action_display": "new_window", "definition": "new_window", "help": "Open a new window", "long_help": ""} - ] - }, - "mw": { - "Miscellaneous": [ - {"key": "left", "action": "neighboring_window", "action_display": "neighboring_window left", "definition": "neighboring_window left", "help": "Focus neighbor window", "long_help": ""}, - {"key": "esc", "action": "pop_keyboard_mode", "action_display": "pop_keyboard_mode", "definition": "pop_keyboard_mode", "help": "Pop keyboard mode", "long_help": ""} - ] - } +// testBinding creates a Binding where Action, ActionDisplay, and Definition all +// equal action. Covers 90% of test bindings. +func testBinding(key, action, help string) Binding { + return Binding{ + Key: key, + Action: action, + ActionDisplay: action, + Definition: action, + Help: help, + } +} + +// testMouseBinding creates a mouse Binding where ActionDisplay differs from +// Action. Action is derived as the first word of actionDisplay. +func testMouseBinding(key, actionDisplay string) Binding { + action := actionDisplay + if idx := strings.IndexByte(actionDisplay, ' '); idx >= 0 { + action = actionDisplay[:idx] + } + return Binding{ + Key: key, + Action: action, + ActionDisplay: actionDisplay, + Definition: actionDisplay, + } +} + +// testHandlerBuilder constructs a Handler with programmatic data (no JSON round-trip). +type testHandlerBuilder struct { + input InputData +} + +func newBuilder() *testHandlerBuilder { + return &testHandlerBuilder{ + input: InputData{ + Modes: make(map[string]map[string][]Binding), + CategoryOrder: make(map[string][]string), }, - "mouse": [ - {"key": "left press ungrabbed", "action": "mouse_selection", "action_display": "mouse_selection normal", "definition": "mouse_selection normal", "help": "", "long_help": ""}, - {"key": "ctrl+left press ungrabbed", "action": "mouse_selection", "action_display": "mouse_selection rectangle", "definition": "mouse_selection rectangle", "help": "", "long_help": ""} - ], - "mode_order": ["", "mw"], - "category_order": { - "": ["Copy/paste", "Scrolling", "Window management"], - "mw": ["Miscellaneous"] - } - }` + } +} + +func (b *testHandlerBuilder) addBinding(mode, category string, binding Binding) *testHandlerBuilder { + if b.input.Modes[mode] == nil { + b.input.Modes[mode] = make(map[string][]Binding) + b.input.ModeOrder = append(b.input.ModeOrder, mode) + } + cats := b.input.Modes[mode] + if _, ok := cats[category]; !ok { + b.input.CategoryOrder[mode] = append(b.input.CategoryOrder[mode], category) + } + cats[category] = append(cats[category], binding) + return b +} + +func (b *testHandlerBuilder) addMouse(binding Binding) *testHandlerBuilder { + b.input.Mouse = append(b.input.Mouse, binding) + return b +} + +func (b *testHandlerBuilder) build() *Handler { + h := &Handler{} + h.input_data = b.input + h.flattenBindings() + h.show_unmapped = true + return h } func newTestHandler() *Handler { - h := &Handler{} - if err := json.Unmarshal([]byte(sampleInputJSON()), &h.input_data); err != nil { - panic("test data JSON is invalid: " + err.Error()) - } - h.flattenBindings() - h.matcher = fzf.NewFuzzyMatcher(fzf.DEFAULT_SCHEME) - return h + return newBuilder(). + addBinding("", "Copy/paste", testBinding("ctrl+shift+c", "copy_to_clipboard", "Copy the selected text from the active window to the clipboard")). + addBinding("", "Copy/paste", testBinding("ctrl+shift+v", "paste_from_clipboard", "Paste from the clipboard to the active window")). + addBinding("", "Scrolling", testBinding("ctrl+shift+up", "scroll_line_up", "Scroll up one line")). + addBinding("", "Scrolling", testBinding("ctrl+shift+down", "scroll_line_down", "Scroll down one line")). + addBinding("", "Window management", testBinding("ctrl+shift+enter", "new_window", "Open a new window")). + addBinding("mw", "Miscellaneous", Binding{ + Key: "left", Action: "neighboring_window", + ActionDisplay: "neighboring_window left", + Definition: "neighboring_window left", Help: "Focus neighbor window", + }). + addBinding("mw", "Miscellaneous", testBinding("esc", "pop_keyboard_mode", "Pop keyboard mode")). + addMouse(Binding{ + Key: "left press ungrabbed", Action: "mouse_selection", + ActionDisplay: "mouse_selection normal", + Definition: "mouse_selection normal", + }). + addMouse(Binding{ + Key: "ctrl+left press ungrabbed", Action: "mouse_selection", + ActionDisplay: "mouse_selection rectangle", + Definition: "mouse_selection rectangle", + }). + build() } func TestFlattenAllBindings(t *testing.T) { @@ -156,14 +202,12 @@ func TestFilterMatchesSubset(t *testing.T) { // Verify all returned items contain relevant text in at least one column for _, idx := range h.filtered_idx { item := &h.all_items[idx] - found := false - for _, col := range item.colTexts { - if strings.Contains(strings.ToLower(col), "clipboard") { - found = true - break - } + found := strings.Contains(strings.ToLower(item.keyText), "clipboard") || + strings.Contains(strings.ToLower(item.actionText), "clipboard") || + strings.Contains(strings.ToLower(item.categoryText), "clipboard") + if !found { + t.Fatalf("Matched item %q has no column containing 'clipboard'", item.actionText) } - _ = found // FZF does fuzzy matching, so this is a soft check } } @@ -239,16 +283,16 @@ func TestSelectedBindingNilWhenOverflowIndex(t *testing.T) { func TestSearchTextContainsKeyAndAction(t *testing.T) { h := newTestHandler() for i, item := range h.all_items { - // colTexts[0] = key (or unmappedLabel for empty key), [1] = action_display, [2] = category + // keyText = key (or unmappedLabel for empty key), actionText = action_display, categoryText = category expectedKey := item.binding.Key if expectedKey == "" { expectedKey = unmappedLabel } - if !strings.Contains(item.colTexts[0], expectedKey) { - t.Fatalf("Item %d: colTexts[0] %q should contain key %q", i, item.colTexts[0], expectedKey) + if !strings.Contains(item.keyText, expectedKey) { + t.Fatalf("Item %d: keyText %q should contain key %q", i, item.keyText, expectedKey) } - if !strings.Contains(item.colTexts[1], item.binding.ActionDisplay) { - t.Fatalf("Item %d: colTexts[1] %q should contain action %q", i, item.colTexts[1], item.binding.ActionDisplay) + if !strings.Contains(item.actionText, item.binding.ActionDisplay) { + t.Fatalf("Item %d: actionText %q should contain action %q", i, item.actionText, item.binding.ActionDisplay) } } } @@ -271,13 +315,7 @@ func TestHelpTextPreserved(t *testing.T) { } func TestEmptyInputData(t *testing.T) { - h := &Handler{} - emptyJSON := `{"modes": {}, "mouse": [], "mode_order": [], "category_order": {}}` - if err := json.Unmarshal([]byte(emptyJSON), &h.input_data); err != nil { - t.Fatal(err) - } - h.flattenBindings() - h.matcher = fzf.NewFuzzyMatcher(fzf.DEFAULT_SCHEME) + h := newBuilder().build() h.updateFilter() if len(h.all_items) != 0 { @@ -560,7 +598,7 @@ func TestScrollAdjustRevealsSectionHeader(t *testing.T) { } } -func TestColTextsPopulated(t *testing.T) { +func TestDisplayItemFieldsPopulated(t *testing.T) { h := newTestHandler() for i, item := range h.all_items { if item.binding.IsMouse { @@ -570,14 +608,14 @@ func TestColTextsPopulated(t *testing.T) { if expectedKey == "" { expectedKey = unmappedLabel } - if item.colTexts[0] != expectedKey { - t.Fatalf("Item %d: colTexts[0]=%q expected %q", i, item.colTexts[0], expectedKey) + if item.keyText != expectedKey { + t.Fatalf("Item %d: keyText=%q expected %q", i, item.keyText, expectedKey) } - if item.colTexts[1] != item.binding.ActionDisplay { - t.Fatalf("Item %d: colTexts[1]=%q expected %q", i, item.colTexts[1], item.binding.ActionDisplay) + if item.actionText != item.binding.ActionDisplay { + t.Fatalf("Item %d: actionText=%q expected %q", i, item.actionText, item.binding.ActionDisplay) } - if item.colTexts[2] != item.binding.Category { - t.Fatalf("Item %d: colTexts[2]=%q expected %q", i, item.colTexts[2], item.binding.Category) + if item.categoryText != item.binding.Category { + t.Fatalf("Item %d: categoryText=%q expected %q", i, item.categoryText, item.binding.Category) } } } @@ -594,14 +632,12 @@ func TestFilterSingleColumnMatch(t *testing.T) { // All matched items should have 'scroll' in exactly one column, not spread across columns for _, idx := range h.filtered_idx { item := &h.all_items[idx] - colMatch := false - for _, col := range item.colTexts { - if strings.Contains(strings.ToLower(col), "scroll") { - colMatch = true - break - } + colMatch := strings.Contains(strings.ToLower(item.keyText), "scroll") || + strings.Contains(strings.ToLower(item.actionText), "scroll") || + strings.Contains(strings.ToLower(item.categoryText), "scroll") + if !colMatch { + t.Fatalf("Matched item %q has no column containing 'scroll'", item.actionText) } - _ = colMatch // FZF does fuzzy matching; at least the characters should appear in one column } } @@ -616,8 +652,8 @@ func TestFilterMatchInfosParallelToFilteredIdx(t *testing.T) { t.Fatalf("match_infos length %d != filtered_idx length %d", len(h.match_infos), len(h.filtered_idx)) } for i, mi := range h.match_infos { - if mi.colIdx < 0 || mi.colIdx > 2 { - t.Fatalf("match_infos[%d].colIdx=%d out of range [0,2]", i, mi.colIdx) + if len(mi.keyPositions) == 0 && len(mi.actionPositions) == 0 && len(mi.categoryPositions) == 0 { + t.Fatalf("match_infos[%d] has no positions in any column", i) } } } @@ -633,25 +669,10 @@ func TestFilterMatchInfosNilWhenNoQuery(t *testing.T) { func TestUnmappedActionDisplayed(t *testing.T) { // Inject an item with an empty key (unmapped action) and verify display - h := &Handler{} - unmappedJSON := `{ - "modes": { - "": { - "Miscellaneous": [ - {"key": "ctrl+n", "action": "new_window", "action_display": "new_window", "definition": "new_window", "help": "Open new window", "long_help": ""}, - {"key": "", "action": "scroll_home", "action_display": "scroll_home", "definition": "scroll_home", "help": "Scroll to top", "long_help": ""} - ] - } - }, - "mouse": [], - "mode_order": [""], - "category_order": {"": ["Miscellaneous"]} - }` - if err := json.Unmarshal([]byte(unmappedJSON), &h.input_data); err != nil { - t.Fatal(err) - } - h.flattenBindings() - h.matcher = fzf.NewFuzzyMatcher(fzf.DEFAULT_SCHEME) + h := newBuilder(). + addBinding("", "Miscellaneous", testBinding("ctrl+n", "new_window", "Open new window")). + addBinding("", "Miscellaneous", testBinding("", "scroll_home", "Scroll to top")). + build() if len(h.all_items) != 2 { t.Fatalf("Expected 2 items, got %d", len(h.all_items)) @@ -667,9 +688,9 @@ func TestUnmappedActionDisplayed(t *testing.T) { if unmapped == nil { t.Fatal("Expected to find unmapped item") } - // colTexts[0] should be unmappedLabel, not empty - if unmapped.colTexts[0] != unmappedLabel { - t.Fatalf("Expected colTexts[0]=%q for unmapped item, got %q", unmappedLabel, unmapped.colTexts[0]) + // keyText should be unmappedLabel, not empty + if unmapped.keyText != unmappedLabel { + t.Fatalf("Expected keyText=%q for unmapped item, got %q", unmappedLabel, unmapped.keyText) } // With show_unmapped=true, unmapped action should be searchable @@ -694,25 +715,11 @@ func TestUnmappedActionDisplayed(t *testing.T) { func TestShowUnmappedToggle(t *testing.T) { // TestShowUnmappedToggle creates a handler with both mapped and unmapped items // and verifies that the show_unmapped flag correctly filters the display. - h := &Handler{} - mixedJSON := `{ - "modes": { - "": { - "Copy/paste": [ - {"key": "ctrl+c", "action": "copy", "action_display": "copy", "definition": "copy", "help": "Copy", "long_help": ""}, - {"key": "", "action": "paste_from_buffer", "action_display": "paste_from_buffer", "definition": "paste_from_buffer", "help": "Paste from buffer", "long_help": ""} - ] - } - }, - "mouse": [], - "mode_order": [""], - "category_order": {"": ["Copy/paste"]} - }` - if err := json.Unmarshal([]byte(mixedJSON), &h.input_data); err != nil { - t.Fatal(err) - } - h.flattenBindings() - h.matcher = fzf.NewFuzzyMatcher(fzf.DEFAULT_SCHEME) + h := newBuilder(). + addBinding("", "Copy/paste", testBinding("ctrl+c", "copy", "Copy")). + addBinding("", "Copy/paste", testBinding("", "paste_from_buffer", "Paste from buffer")). + build() + h.show_unmapped = false // override default from build() if len(h.all_items) != 2 { t.Fatalf("Expected 2 items in all_items, got %d", len(h.all_items)) @@ -745,3 +752,644 @@ func TestShowUnmappedToggle(t *testing.T) { } } } + +// newMultiTokenTestHandler creates a handler with items designed to test +// multi-token search. It has items where different tokens match different +// columns, enabling cross-column and RRF ranking tests. +func newMultiTokenTestHandler() *Handler { + return newBuilder(). + addBinding("", "Copy/paste", testBinding("ctrl+shift+c", "copy_to_clipboard", "Copy selected text")). + addBinding("", "Copy/paste", testBinding("ctrl+shift+v", "paste_from_clipboard", "Paste from clipboard")). + addBinding("", "Scrolling", testBinding("ctrl+shift+up", "scroll_line_up", "Scroll up one line")). + addBinding("", "Scrolling", testBinding("ctrl+shift+down", "scroll_line_down", "Scroll down one line")). + addBinding("", "Scrolling", testBinding("ctrl+shift+page_up", "scroll_page_up", "Scroll up one page")). + addBinding("", "Scrolling", testBinding("ctrl+shift+home", "scroll_home", "Scroll to top")). + addBinding("", "Window management", testBinding("ctrl+shift+enter", "new_window", "Open a new window")). + addBinding("", "Window management", testBinding("ctrl+shift+w", "close_window", "Close the active window")). + addBinding("", "Tab management", testBinding("ctrl+shift+t", "new_tab", "Open a new tab")). + addBinding("", "Tab management", testBinding("ctrl+shift+q", "close_tab", "Close the active tab")). + build() +} + +func TestMultiTokenAllMatchRanksAbovePartial(t *testing.T) { + // An item matching ALL tokens should rank above an item matching only SOME tokens. + // "scroll up" should rank scroll_line_up and scroll_page_up (both tokens match) + // above scroll_home or scroll_line_down (only "scroll" matches). + h := newMultiTokenTestHandler() + h.query = "scroll up" + h.updateFilter() + + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for 'scroll up'") + } + + // Items matching both "scroll" and "up" should appear before items matching only one token. + // scroll_line_up and scroll_page_up match both; scroll_line_down and scroll_home match only "scroll". + topResults := make([]string, 0) + for i, idx := range h.filtered_idx { + action := h.all_items[idx].binding.ActionDisplay + if i < 2 { + topResults = append(topResults, action) + } + } + for _, action := range topResults { + if !strings.Contains(action, "scroll") || !strings.Contains(action, "up") { + t.Fatalf("Top result %q should match both 'scroll' and 'up'", action) + } + } +} + +func TestMultiTokenCrossColumnMatch(t *testing.T) { + // A query with tokens that match different columns should find the item. + // "ctrl+shift+c copy" — "ctrl+shift+c" matches the key column, + // "copy" matches the action column. + h := newMultiTokenTestHandler() + h.query = "ctrl+shift+c copy" + h.updateFilter() + + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for cross-column query 'ctrl+shift+c copy'") + } + + // copy_to_clipboard (key=ctrl+shift+c, action=copy_to_clipboard) should be the top result + topAction := h.all_items[h.filtered_idx[0]].binding.ActionDisplay + if topAction != "copy_to_clipboard" { + t.Fatalf("Expected top result to be 'copy_to_clipboard', got %q", topAction) + } +} + +func TestMultiTokenCrossColumnCategoryMatch(t *testing.T) { + // A token matching the category column combined with a token matching the action column. + // "window close" — "window" matches category "Window management", + // "close" matches action "close_window". + h := newMultiTokenTestHandler() + h.query = "window close" + h.updateFilter() + + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for 'window close'") + } + + // close_window should rank highly since both tokens match + found := false + for _, idx := range h.filtered_idx[:min(3, len(h.filtered_idx))] { + if h.all_items[idx].binding.ActionDisplay == "close_window" { + found = true + break + } + } + if !found { + t.Fatal("Expected 'close_window' in top results for 'window close'") + } +} + +func TestMultiTokenExtraWhitespace(t *testing.T) { + // Extra whitespace in the query should not produce empty/ghost tokens. + // " scroll up " should behave the same as "scroll up". + h := newMultiTokenTestHandler() + h.query = "scroll up" + h.updateFilter() + normalResults := make([]int, len(h.filtered_idx)) + copy(normalResults, h.filtered_idx) + + h.query = " scroll up " + h.updateFilter() + + if len(h.filtered_idx) != len(normalResults) { + t.Fatalf("Extra whitespace changed result count: %d vs %d", len(h.filtered_idx), len(normalResults)) + } + for i := range h.filtered_idx { + if h.filtered_idx[i] != normalResults[i] { + t.Fatalf("Extra whitespace changed result order at position %d", i) + } + } +} + +func TestMultiTokenAllWhitespaceIsEmptyQuery(t *testing.T) { + // A query that is only whitespace should behave like an empty query: + // return all items in original order with no match_infos. + h := newMultiTokenTestHandler() + h.query = " " + h.updateFilter() + + if len(h.filtered_idx) != len(h.all_items) { + t.Fatalf("All-whitespace query should return all %d items, got %d", len(h.all_items), len(h.filtered_idx)) + } + if h.match_infos != nil { + t.Fatal("All-whitespace query should produce nil match_infos") + } +} + +func TestMultiTokenSingleTokenRegression(t *testing.T) { + // A single-token query (no spaces) should produce the same results as before. + h := newMultiTokenTestHandler() + h.query = "clipboard" + h.updateFilter() + + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for single token 'clipboard'") + } + // All results should have "clipboard" matched in at least one column + for _, idx := range h.filtered_idx { + item := &h.all_items[idx] + anyMatch := strings.Contains(strings.ToLower(item.keyText), "clipboard") || + strings.Contains(strings.ToLower(item.actionText), "clipboard") || + strings.Contains(strings.ToLower(item.categoryText), "clipboard") + if !anyMatch { + t.Fatalf("Matched item %q has no column containing 'clipboard'", item.actionText) + } + } + // match_infos should still be parallel to filtered_idx + if len(h.match_infos) != len(h.filtered_idx) { + t.Fatalf("match_infos length %d != filtered_idx length %d", len(h.match_infos), len(h.filtered_idx)) + } +} + +func TestMultiTokenNoMatchReturnsEmpty(t *testing.T) { + // When no item matches any token, the result should be empty. + h := newMultiTokenTestHandler() + h.query = "zzzzz xxxxx" + h.updateFilter() + + if len(h.filtered_idx) != 0 { + t.Fatalf("Expected no matches for nonsense multi-token query, got %d", len(h.filtered_idx)) + } +} + +func TestMultiTokenPartialMatchStillShown(t *testing.T) { + // Items matching only some tokens should still appear, + // but ranked lower than items matching all tokens. + h := newMultiTokenTestHandler() + h.query = "scroll zzzznonexistent" + h.updateFilter() + + // "scroll" matches several items, "zzzznonexistent" matches nothing. + // Items matching "scroll" should still appear. + if len(h.filtered_idx) == 0 { + t.Fatal("Expected partial matches when one token matches and one doesn't") + } + + // Verify that matched items are related to "scroll" + for _, idx := range h.filtered_idx { + item := &h.all_items[idx] + anyMatch := strings.Contains(strings.ToLower(item.keyText), "scroll") || + strings.Contains(strings.ToLower(item.actionText), "scroll") || + strings.Contains(strings.ToLower(item.categoryText), "scroll") + if !anyMatch { + t.Fatalf("Matched item %q has no column containing 'scroll'", item.actionText) + } + } +} + +func TestMultiTokenMatchInfosTrackMultipleColumns(t *testing.T) { + // When tokens match different columns, match_infos should reflect + // positions in each matched column so highlighting works correctly. + h := newMultiTokenTestHandler() + h.query = "tab close" + h.updateFilter() + + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for 'tab close'") + } + if len(h.match_infos) != len(h.filtered_idx) { + t.Fatalf("match_infos length %d != filtered_idx length %d", len(h.match_infos), len(h.filtered_idx)) + } + + // Find close_tab — "tab" matches category "Tab management" and action "close_tab", + // "close" matches action "close_tab". match_infos must have positions in multiple columns. + for fi, idx := range h.filtered_idx { + if h.all_items[idx].binding.ActionDisplay == "close_tab" { + mi := h.match_infos[fi] + if len(mi.actionPositions) == 0 { + t.Fatal("close_tab: expected match positions in action column") + } + if len(mi.categoryPositions) == 0 { + t.Fatal("close_tab: expected match positions in category column for 'tab' in 'Tab management'") + } + return + } + } + t.Fatal("Expected close_tab in results for 'tab close'") +} + +func TestMultiTokenOrderIndependence(t *testing.T) { + // Token order should not matter: "close window" and "window close" + // should produce the same set of results (possibly in different order, + // but the same items). + h := newMultiTokenTestHandler() + + h.query = "window close" + h.updateFilter() + results1 := make(map[int]bool) + for _, idx := range h.filtered_idx { + results1[idx] = true + } + + h.query = "close window" + h.updateFilter() + results2 := make(map[int]bool) + for _, idx := range h.filtered_idx { + results2[idx] = true + } + + if len(results1) != len(results2) { + t.Fatalf("Token order changed result count: %d vs %d", len(results1), len(results2)) + } + for idx := range results1 { + if !results2[idx] { + t.Fatalf("Item %d present in 'window close' but not 'close window'", idx) + } + } +} + +// topActions returns the action_display names of the first n results after +// running query on h. It is a test helper for verifying ranking. +func topActions(h *Handler, query string, n int) []string { + h.query = query + h.updateFilter() + var result []string + for i, idx := range h.filtered_idx { + if i >= n { + break + } + result = append(result, h.all_items[idx].binding.ActionDisplay) + } + return result +} + +func TestQueryRankingScrollUp(t *testing.T) { + h := newMultiTokenTestHandler() + top := topActions(h, "scroll up", 4) + if len(top) < 4 { + t.Fatalf("Expected at least 4 results for 'scroll up', got %d", len(top)) + } + // Top 2 should match both "scroll" and "up", with scroll_line_up first (shorter) + for _, action := range top[:2] { + if !strings.Contains(action, "scroll") || !strings.Contains(action, "up") { + t.Fatalf("Top result %q should match both 'scroll' and 'up'", action) + } + } + if top[0] != "scroll_line_up" { + t.Fatalf("Expected scroll_line_up first, got %q", top[0]) + } + if top[1] != "scroll_page_up" { + t.Fatalf("Expected scroll_page_up second, got %q", top[1]) + } + // Items matching only "scroll" (not "up") should rank below + for _, action := range top[2:] { + if strings.Contains(action, "up") { + continue // other "up" matches are fine here + } + if !strings.Contains(action, "scroll") { + t.Fatalf("Lower result %q should still contain 'scroll'", action) + } + } +} + +func TestQueryRankingNewWindow(t *testing.T) { + h := newMultiTokenTestHandler() + top := topActions(h, "new window", 3) + if len(top) == 0 { + t.Fatal("Expected results for 'new window'") + } + if top[0] != "new_window" { + t.Fatalf("Expected new_window first, got %q", top[0]) + } + // close_window should not appear above new_window + for i, action := range top { + if action == "close_window" && i == 0 { + t.Fatal("close_window should not be the top result for 'new window'") + } + } +} + +func TestQueryRankingCloseTab(t *testing.T) { + h := newMultiTokenTestHandler() + top := topActions(h, "close tab", 3) + if len(top) == 0 { + t.Fatal("Expected results for 'close tab'") + } + if top[0] != "close_tab" { + t.Fatalf("Expected close_tab first, got %q", top[0]) + } +} + +func TestQueryRankingSingleToken(t *testing.T) { + h := newMultiTokenTestHandler() + top := topActions(h, "clipboard", 2) + if len(top) < 2 { + t.Fatalf("Expected at least 2 results for 'clipboard', got %d", len(top)) + } + // copy_to_clipboard is shorter than paste_from_clipboard + if top[0] != "copy_to_clipboard" { + t.Fatalf("Expected copy_to_clipboard first, got %q", top[0]) + } + if top[1] != "paste_from_clipboard" { + t.Fatalf("Expected paste_from_clipboard second, got %q", top[1]) + } +} + +func TestQueryRankingExactActionMatch(t *testing.T) { + h := newMultiTokenTestHandler() + top := topActions(h, "new_tab", 1) + if len(top) == 0 { + t.Fatal("Expected results for 'new_tab'") + } + if top[0] != "new_tab" { + t.Fatalf("Expected new_tab first, got %q", top[0]) + } +} + +// newMouseTestHandler creates a handler with realistic mouse bindings matching +// the actual kitty command palette data, to test ranking of mouse_selection queries. +// Includes keyboard bindings with "selection" in their names to ensure mouse_selection +// items rank above them for the query "mouse selection". +func newMouseTestHandler() *Handler { + return newBuilder(). + addBinding("", "Scrolling", testBinding("ctrl+shift+up", "scroll_line_up", "Scroll up")). + addBinding("", "Copy/paste", testBinding("ctrl+shift+c", "copy_to_clipboard", "Copy selected text")). + addBinding("", "Copy/paste", testBinding("shift+insert", "paste_selection", "Paste from primary selection")). + addBinding("", "Copy/paste", testBinding("ctrl+shift+v", "paste_from_clipboard", "Paste from clipboard")). + addBinding("", "Copy/paste", testBinding("", "copy_or_interrupt", "Copy selection or interrupt")). + addBinding("", "Copy/paste", testBinding("", "copy_and_clear_or_interrupt", "Copy selection and clear")). + addBinding("", "Copy/paste", testBinding("", "pass_selection_to_program", "Pass selection to program")). + addMouse(testMouseBinding("shift+left click ungrabbed", "mouse_handle_click selection link prompt")). + addMouse(testMouseBinding("shift+left click grabbed ungrabbed", "mouse_handle_click selection link prompt")). + addMouse(testMouseBinding("ctrl+shift+left release grabbed ungrabbed", "mouse_handle_click link")). + addMouse(testMouseBinding("shift+middle release ungrabbed grabbed", "paste_selection")). + addMouse(testMouseBinding("middle release ungrabbed", "paste_from_selection")). + addMouse(testMouseBinding("left drag ungrabbed", "mouse_selection")). + addMouse(testMouseBinding("shift+left drag ungrabbed", "mouse_selection")). + addMouse(testMouseBinding("left triplepress ungrabbed", "mouse_selection line")). + addMouse(testMouseBinding("shift+left doublepress ungrabbed", "mouse_selection word")). + addMouse(testMouseBinding("shift+left triplepress ungrabbed", "mouse_selection line_from_point")). + addMouse(testMouseBinding("shift+left triplepress+grabbed", "mouse_selection line_from_point")). + addMouse(testMouseBinding("right press ungrabbed", "mouse_selection extend")). + addMouse(testMouseBinding("shift+left press ungrabbed", "mouse_selection extend")). + addMouse(testMouseBinding("left press ungrabbed", "mouse_selection normal")). + addMouse(testMouseBinding("ctrl+left press ungrabbed", "mouse_selection rectangle")). + addMouse(testMouseBinding("ctrl+shift+right press ungrabbed", "mouse_selection rectangle extend")). + addMouse(testMouseBinding("ctrl+shift+left press ungrabbed", "mouse_selection rectangle extend")). + addMouse(testMouseBinding("shift+left triplepress", "mouse_selection line_from_point")). + addMouse(testMouseBinding("left press", "mouse_selection normal")). + build() +} + +// searchResult captures the full display state of a single result row: +// all three visible columns plus which columns have highlighted match positions. +type searchResult struct { + key string // key binding + action string // action_display + category string // category + // Which columns have highlighted (matched) character positions. + keyMatch bool + actionMatch bool + categoryMatch bool +} + +// queryResults runs query on h and returns the full display state of each result. +func queryResults(h *Handler, query string) []searchResult { + h.query = query + h.updateFilter() + results := make([]searchResult, len(h.filtered_idx)) + for i, idx := range h.filtered_idx { + item := &h.all_items[idx] + results[i] = searchResult{ + key: item.keyText, + action: item.actionText, + category: item.categoryText, + keyMatch: len(h.match_infos[i].keyPositions) > 0, + actionMatch: len(h.match_infos[i].actionPositions) > 0, + categoryMatch: len(h.match_infos[i].categoryPositions) > 0, + } + } + return results +} + +func TestQueryRankingMouseSelection(t *testing.T) { + h := newMouseTestHandler() + results := queryResults(h, "mouse selection") + + if len(results) == 0 { + t.Fatal("Expected results for 'mouse selection'") + } + + // Bare "mouse_selection" (shortest, exact match for both tokens) must rank + // above all suffixed variants like mouse_selection line/word/extend/normal. + if results[0].action != "mouse_selection" { + t.Fatalf("Expected bare 'mouse_selection' first, got %q", results[0].action) + } + + // All mouse_selection variants (action starts with "mouse_selection") must + // rank above any non-mouse_selection item. + lastMouseSelection := -1 + firstOther := -1 + for i, r := range results { + if strings.HasPrefix(r.action, "mouse_selection") { + lastMouseSelection = i + } else if firstOther == -1 { + firstOther = i + } + } + if firstOther != -1 && firstOther < lastMouseSelection { + t.Fatalf("Non-mouse_selection item %q at position %d ranks above mouse_selection item at position %d", + results[firstOther].action, firstOther+1, lastMouseSelection+1) + } + + // Every mouse_selection result must have action column highlighted (both + // "mouse" and "selection" appear in the action text). + for i, r := range results { + if !strings.HasPrefix(r.action, "mouse_selection") { + continue + } + if !r.actionMatch { + t.Fatalf("Result %d (%s): mouse_selection item must have action column highlighted", i+1, r.action) + } + } + + // mouse_handle_click also matches both "mouse" and "selection" in its action + // text, but it's a longer string so it should rank below mouse_selection items. + for i, r := range results { + if strings.HasPrefix(r.action, "mouse_handle_click") { + if i < lastMouseSelection { + t.Fatalf("Result %d (%s): should rank below all mouse_selection variants (last at %d)", + i+1, r.action, lastMouseSelection+1) + } + } + } +} + +func TestQueryRankingMouseSelectionSingleToken(t *testing.T) { + h := newMouseTestHandler() + results := queryResults(h, "mouse") + if len(results) == 0 { + t.Fatal("Expected results for 'mouse'") + } + // Bare "mouse_selection" (shortest action with "mouse") should be first + if results[0].action != "mouse_selection" { + t.Fatalf("Expected bare 'mouse_selection' first, got %q", results[0].action) + } + // Items matching only via category (paste_selection, paste_from_selection) + // should rank below items matching "mouse" in the action column. + lastActionMatch := -1 + for i, r := range results { + if r.actionMatch { + lastActionMatch = i + } + } + for i, r := range results { + if !r.actionMatch && r.categoryMatch && i < lastActionMatch { + t.Fatalf("Result %d (%s): category-only match should rank below action matches", i+1, r.action) + } + } +} + +func TestQueryRankingShorterMatchFirst(t *testing.T) { + h := newMouseTestHandler() + // "mouse_selection normal" (shorter) should rank above "mouse_selection rectangle" (longer) + // when both match equally well + top := topActions(h, "mouse_selection normal", 1) + if len(top) == 0 { + t.Fatal("Expected results") + } + if top[0] != "mouse_selection normal" { + t.Fatalf("Expected 'mouse_selection normal' first, got %q", top[0]) + } +} + +func TestQueryMatchInfoColumns(t *testing.T) { + // Verify match_infos correctly tracks positions in all 3 columns: key, action, category. + h := newMultiTokenTestHandler() + + // "ctrl clipboard" — "ctrl" matches key column (ctrl+shift+c), "clipboard" matches action + h.query = "ctrl clipboard" + h.updateFilter() + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for 'ctrl clipboard'") + } + + // Find copy_to_clipboard in results + for fi, idx := range h.filtered_idx { + if h.all_items[idx].binding.ActionDisplay != "copy_to_clipboard" { + continue + } + mi := h.match_infos[fi] + // Key column (col 0) should have positions for "ctrl" + if len(mi.keyPositions) == 0 { + t.Fatal("copy_to_clipboard: expected match positions in key column for 'ctrl'") + } + // Action column (col 1) should have positions for "clipboard" + if len(mi.actionPositions) == 0 { + t.Fatal("copy_to_clipboard: expected match positions in action column for 'clipboard'") + } + return + } + t.Fatal("Expected copy_to_clipboard in results") +} + +func TestQueryMatchInfoCategoryColumn(t *testing.T) { + // Verify the category column (col 2) gets match positions when a token matches it. + h := newMultiTokenTestHandler() + + // "tab close" — "tab" matches category "Tab management", "close" matches action close_tab + h.query = "tab close" + h.updateFilter() + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for 'tab close'") + } + for fi, idx := range h.filtered_idx { + if h.all_items[idx].binding.ActionDisplay != "close_tab" { + continue + } + mi := h.match_infos[fi] + // Action column (col 1) should have positions for "close" and/or "tab" + if len(mi.actionPositions) == 0 { + t.Fatal("close_tab: expected match positions in action column") + } + // Category column (col 2) should have positions for "tab" in "Tab management" + if len(mi.categoryPositions) == 0 { + t.Fatal("close_tab: expected match positions in category column for 'tab'") + } + return + } + t.Fatal("Expected close_tab in results") +} + +func TestQueryMatchInfoKeyColumn(t *testing.T) { + // Verify the key column (col 0) gets match positions when searching by key binding. + h := newMouseTestHandler() + + // "left press" — matches key column for mouse bindings + h.query = "left press" + h.updateFilter() + if len(h.filtered_idx) == 0 { + t.Fatal("Expected matches for 'left press'") + } + // At least one result should have positions in the key column + foundKeyMatch := false + for fi := range h.filtered_idx { + mi := h.match_infos[fi] + if len(mi.keyPositions) > 0 { + foundKeyMatch = true + break + } + } + if !foundKeyMatch { + t.Fatal("Expected at least one result with match positions in key column for 'left press'") + } +} + +func TestQueryRankingShorterActionFirst(t *testing.T) { + // When 2 tokens both match in the action column of item A, + // A should rank above item B that also matches both tokens but has a + // longer action string. This verifies that shorter matches are preferred. + h := newBuilder(). + addBinding("", "Window management", testBinding("ctrl+n", "new_window", "Open a new window")). + addBinding("", "Window management", testBinding("ctrl+w", "close_active", "Close the active pane")). + addBinding("", "Miscellaneous", testBinding("ctrl+shift+n", "new_os_window", "Open new OS window")). + build() + + // "new window" — both tokens match new_window's action coherently, + // while new_os_window also matches but is longer. + top := topActions(h, "new window", 2) + if len(top) < 2 { + t.Fatalf("Expected at least 2 results, got %d", len(top)) + } + // new_window should beat new_os_window (shorter action string) + if top[0] != "new_window" { + t.Fatalf("Expected new_window first (shorter match), got %q", top[0]) + } +} + +func TestQueryRankingCrossColumnVsCategoryOnly(t *testing.T) { + // An item matching tokens across key+action columns should rank above + // an item that only matches via the category column. + h := newBuilder(). + addBinding("", "Scrolling", testBinding("ctrl+shift+up", "scroll_line_up", "Scroll up")). + addBinding("", "Scrolling", testBinding("page_up", "scroll_page_up", "Scroll one page up")). + addBinding("", "Scroll buffer", Binding{ + Key: "ctrl+l", Action: "clear_terminal", + ActionDisplay: "clear_terminal reset active", + Definition: "clear_terminal reset active", Help: "Clear screen", + }). + build() + + // "scroll up" — scroll_line_up and scroll_page_up match both tokens in action; + // clear_terminal only matches "scroll" via its category "Scroll buffer". + top := topActions(h, "scroll up", 3) + if len(top) < 2 { + t.Fatalf("Expected at least 2 results, got %d", len(top)) + } + // Both scroll_*_up actions should rank above clear_terminal + for i, action := range top[:2] { + if !strings.Contains(action, "scroll") || !strings.Contains(action, "up") { + t.Fatalf("Result %d: expected scroll_*_up variant, got %q", i+1, action) + } + } + // If clear_terminal appears, it should be last + for i, action := range top { + if action == "clear_terminal" && i < 2 { + t.Fatalf("clear_terminal (category-only match) should rank below action matches, but got position %d", i+1) + } + } +} From 9619571dd3d0c7642f22346c9993c1bf0d0973d0 Mon Sep 17 00:00:00 2001 From: Daniel M German Date: Sun, 22 Mar 2026 17:59:42 -0700 Subject: [PATCH 2/2] Command palette: fix gofmt struct field alignment in tests --- kittens/command_palette/main_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kittens/command_palette/main_test.go b/kittens/command_palette/main_test.go index 66d59f280..be2293d29 100644 --- a/kittens/command_palette/main_test.go +++ b/kittens/command_palette/main_test.go @@ -84,18 +84,18 @@ func newTestHandler() *Handler { addBinding("mw", "Miscellaneous", Binding{ Key: "left", Action: "neighboring_window", ActionDisplay: "neighboring_window left", - Definition: "neighboring_window left", Help: "Focus neighbor window", + Definition: "neighboring_window left", Help: "Focus neighbor window", }). addBinding("mw", "Miscellaneous", testBinding("esc", "pop_keyboard_mode", "Pop keyboard mode")). addMouse(Binding{ Key: "left press ungrabbed", Action: "mouse_selection", ActionDisplay: "mouse_selection normal", - Definition: "mouse_selection normal", + Definition: "mouse_selection normal", }). addMouse(Binding{ Key: "ctrl+left press ungrabbed", Action: "mouse_selection", ActionDisplay: "mouse_selection rectangle", - Definition: "mouse_selection rectangle", + Definition: "mouse_selection rectangle", }). build() } @@ -1370,7 +1370,7 @@ func TestQueryRankingCrossColumnVsCategoryOnly(t *testing.T) { addBinding("", "Scroll buffer", Binding{ Key: "ctrl+l", Action: "clear_terminal", ActionDisplay: "clear_terminal reset active", - Definition: "clear_terminal reset active", Help: "Clear screen", + Definition: "clear_terminal reset active", Help: "Clear screen", }). build()