@sagmans/dsh-tui 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +270 -68
  3. package/lib/agent/present.js +1 -1
  4. package/lib/agent/present.js.map +1 -1
  5. package/lib/agent/prompt-history.d.ts.map +1 -1
  6. package/lib/agent/prompt-history.js +5 -3
  7. package/lib/agent/prompt-history.js.map +1 -1
  8. package/lib/agent/status.d.ts +1 -1
  9. package/lib/cards.d.ts +83 -13
  10. package/lib/cards.d.ts.map +1 -1
  11. package/lib/cards.js +96 -28
  12. package/lib/cards.js.map +1 -1
  13. package/lib/export.d.ts +3 -3
  14. package/lib/export.d.ts.map +1 -1
  15. package/lib/export.js +23 -13
  16. package/lib/export.js.map +1 -1
  17. package/lib/fold-cursor.d.ts +12 -5
  18. package/lib/fold-cursor.d.ts.map +1 -1
  19. package/lib/fold-cursor.js +16 -5
  20. package/lib/fold-cursor.js.map +1 -1
  21. package/lib/gates.d.ts.map +1 -1
  22. package/lib/gates.js +42 -9
  23. package/lib/gates.js.map +1 -1
  24. package/lib/index.d.ts.map +1 -1
  25. package/lib/index.js +459 -72
  26. package/lib/index.js.map +1 -1
  27. package/lib/injection.d.ts +9 -0
  28. package/lib/injection.d.ts.map +1 -0
  29. package/lib/injection.js +128 -0
  30. package/lib/injection.js.map +1 -0
  31. package/lib/input/actions.d.ts +19 -2
  32. package/lib/input/actions.d.ts.map +1 -1
  33. package/lib/input/actions.js +57 -11
  34. package/lib/input/actions.js.map +1 -1
  35. package/lib/input/cancel.d.ts +55 -0
  36. package/lib/input/cancel.d.ts.map +1 -0
  37. package/lib/input/cancel.js +47 -0
  38. package/lib/input/cancel.js.map +1 -0
  39. package/lib/input/completion.d.ts +5 -2
  40. package/lib/input/completion.d.ts.map +1 -1
  41. package/lib/input/completion.js +79 -4
  42. package/lib/input/completion.js.map +1 -1
  43. package/lib/input/file-search.d.ts +105 -0
  44. package/lib/input/file-search.d.ts.map +1 -0
  45. package/lib/input/file-search.js +665 -0
  46. package/lib/input/file-search.js.map +1 -0
  47. package/lib/input/fuzzy.d.ts +42 -0
  48. package/lib/input/fuzzy.d.ts.map +1 -0
  49. package/lib/input/fuzzy.js +289 -0
  50. package/lib/input/fuzzy.js.map +1 -0
  51. package/lib/input/keymap.d.ts +3 -1
  52. package/lib/input/keymap.d.ts.map +1 -1
  53. package/lib/input/keymap.js +14 -3
  54. package/lib/input/keymap.js.map +1 -1
  55. package/lib/input/match.d.ts +12 -4
  56. package/lib/input/match.d.ts.map +1 -1
  57. package/lib/input/match.js +50 -51
  58. package/lib/input/match.js.map +1 -1
  59. package/lib/input/submission.d.ts +10 -0
  60. package/lib/input/submission.d.ts.map +1 -1
  61. package/lib/input/submission.js +7 -6
  62. package/lib/input/submission.js.map +1 -1
  63. package/lib/keys-command.d.ts +19 -3
  64. package/lib/keys-command.d.ts.map +1 -1
  65. package/lib/keys-command.js +34 -31
  66. package/lib/keys-command.js.map +1 -1
  67. package/lib/settings-notice.d.ts +5 -0
  68. package/lib/settings-notice.d.ts.map +1 -1
  69. package/lib/settings-notice.js +9 -7
  70. package/lib/settings-notice.js.map +1 -1
  71. package/lib/stash/paths.d.ts +8 -8
  72. package/lib/stash/paths.d.ts.map +1 -1
  73. package/lib/stash/paths.js +19 -18
  74. package/lib/stash/paths.js.map +1 -1
  75. package/lib/stash/schema.d.ts +11 -12
  76. package/lib/stash/schema.d.ts.map +1 -1
  77. package/lib/stash/schema.js +10 -29
  78. package/lib/stash/schema.js.map +1 -1
  79. package/lib/stash/store.js +10 -10
  80. package/lib/stash/store.js.map +1 -1
  81. package/lib/stash.d.ts +37 -6
  82. package/lib/stash.d.ts.map +1 -1
  83. package/lib/stash.js +93 -36
  84. package/lib/stash.js.map +1 -1
  85. package/lib/terminal/external-editor.d.ts +93 -0
  86. package/lib/terminal/external-editor.d.ts.map +1 -0
  87. package/lib/terminal/external-editor.js +263 -0
  88. package/lib/terminal/external-editor.js.map +1 -0
  89. package/lib/terminal/host-writes.d.ts +39 -0
  90. package/lib/terminal/host-writes.d.ts.map +1 -0
  91. package/lib/terminal/host-writes.js +136 -0
  92. package/lib/terminal/host-writes.js.map +1 -0
  93. package/lib/terminal/signals.d.ts +25 -0
  94. package/lib/terminal/signals.d.ts.map +1 -0
  95. package/lib/terminal/signals.js +39 -0
  96. package/lib/terminal/signals.js.map +1 -0
  97. package/lib/terminal/warning-screen.d.ts +19 -1
  98. package/lib/terminal/warning-screen.d.ts.map +1 -1
  99. package/lib/terminal/warning-screen.js +37 -1
  100. package/lib/terminal/warning-screen.js.map +1 -1
  101. package/lib/terminal-text.d.ts +72 -0
  102. package/lib/terminal-text.d.ts.map +1 -0
  103. package/lib/terminal-text.js +603 -0
  104. package/lib/terminal-text.js.map +1 -0
  105. package/lib/text.d.ts +45 -6
  106. package/lib/text.d.ts.map +1 -1
  107. package/lib/text.js +106 -46
  108. package/lib/text.js.map +1 -1
  109. package/lib/theme-command.d.ts +7 -4
  110. package/lib/theme-command.d.ts.map +1 -1
  111. package/lib/theme-command.js +32 -12
  112. package/lib/theme-command.js.map +1 -1
  113. package/lib/theme-files.d.ts +110 -0
  114. package/lib/theme-files.d.ts.map +1 -0
  115. package/lib/theme-files.js +352 -0
  116. package/lib/theme-files.js.map +1 -0
  117. package/lib/theme-schema.d.ts +121 -0
  118. package/lib/theme-schema.d.ts.map +1 -0
  119. package/lib/theme-schema.js +87 -0
  120. package/lib/theme-schema.js.map +1 -0
  121. package/lib/theme-settings.d.ts +43 -10
  122. package/lib/theme-settings.d.ts.map +1 -1
  123. package/lib/theme-settings.js +103 -43
  124. package/lib/theme-settings.js.map +1 -1
  125. package/lib/theme-tokens.d.ts +39 -7
  126. package/lib/theme-tokens.d.ts.map +1 -1
  127. package/lib/theme-tokens.js +96 -13
  128. package/lib/theme-tokens.js.map +1 -1
  129. package/lib/theme.d.ts +24 -2
  130. package/lib/theme.d.ts.map +1 -1
  131. package/lib/theme.js +49 -6
  132. package/lib/theme.js.map +1 -1
  133. package/lib/tool-display.d.ts +57 -0
  134. package/lib/tool-display.d.ts.map +1 -0
  135. package/lib/tool-display.js +51 -0
  136. package/lib/tool-display.js.map +1 -0
  137. package/lib/transcript.d.ts +28 -0
  138. package/lib/transcript.d.ts.map +1 -1
  139. package/lib/transcript.js +126 -37
  140. package/lib/transcript.js.map +1 -1
  141. package/lib/ui/diff.d.ts +49 -0
  142. package/lib/ui/diff.d.ts.map +1 -0
  143. package/lib/ui/diff.js +208 -0
  144. package/lib/ui/diff.js.map +1 -0
  145. package/lib/ui/dock.d.ts.map +1 -1
  146. package/lib/ui/dock.js +9 -6
  147. package/lib/ui/dock.js.map +1 -1
  148. package/lib/ui/editor.d.ts.map +1 -1
  149. package/lib/ui/editor.js +4 -2
  150. package/lib/ui/editor.js.map +1 -1
  151. package/lib/ui/frame.d.ts +16 -5
  152. package/lib/ui/frame.d.ts.map +1 -1
  153. package/lib/ui/frame.js +32 -13
  154. package/lib/ui/frame.js.map +1 -1
  155. package/lib/ui/keymap-picker.d.ts +16 -0
  156. package/lib/ui/keymap-picker.d.ts.map +1 -0
  157. package/lib/ui/keymap-picker.js +41 -0
  158. package/lib/ui/keymap-picker.js.map +1 -0
  159. package/lib/ui/layout.d.ts +33 -0
  160. package/lib/ui/layout.d.ts.map +1 -0
  161. package/lib/ui/layout.js +33 -0
  162. package/lib/ui/layout.js.map +1 -0
  163. package/lib/ui/markdown.d.ts +25 -3
  164. package/lib/ui/markdown.d.ts.map +1 -1
  165. package/lib/ui/markdown.js +12 -8
  166. package/lib/ui/markdown.js.map +1 -1
  167. package/lib/ui/picker-card.d.ts +42 -0
  168. package/lib/ui/picker-card.d.ts.map +1 -0
  169. package/lib/ui/picker-card.js +148 -0
  170. package/lib/ui/picker-card.js.map +1 -0
  171. package/lib/ui/picker.d.ts +40 -2
  172. package/lib/ui/picker.d.ts.map +1 -1
  173. package/lib/ui/picker.js +50 -6
  174. package/lib/ui/picker.js.map +1 -1
  175. package/lib/ui/prompt.d.ts +10 -2
  176. package/lib/ui/prompt.d.ts.map +1 -1
  177. package/lib/ui/prompt.js +21 -2
  178. package/lib/ui/prompt.js.map +1 -1
  179. package/lib/ui/rows.d.ts +8 -6
  180. package/lib/ui/rows.d.ts.map +1 -1
  181. package/lib/ui/rows.js +10 -18
  182. package/lib/ui/rows.js.map +1 -1
  183. package/lib/ui/stash-picker.d.ts +2 -2
  184. package/lib/ui/stash-picker.d.ts.map +1 -1
  185. package/lib/ui/stash-picker.js +4 -4
  186. package/lib/ui/stash-picker.js.map +1 -1
  187. package/lib/ui/status.d.ts.map +1 -1
  188. package/lib/ui/status.js +18 -16
  189. package/lib/ui/status.js.map +1 -1
  190. package/lib/ui/theme-picker.d.ts +18 -0
  191. package/lib/ui/theme-picker.d.ts.map +1 -0
  192. package/lib/ui/theme-picker.js +68 -0
  193. package/lib/ui/theme-picker.js.map +1 -0
  194. package/lib/ui/view.d.ts +146 -22
  195. package/lib/ui/view.d.ts.map +1 -1
  196. package/lib/ui/view.js +461 -154
  197. package/lib/ui/view.js.map +1 -1
  198. package/package.json +3 -1
  199. package/themes/deepseek-blue.yaml +183 -0
  200. package/themes/violet-orbit.yaml +178 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-search.js","sourceRoot":"","sources":["../../src/input/file-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * How well a row answers a fragment, scored the way fzf scores it.
3
+ *
4
+ * A greedy scan can say whether a fragment's characters are all present, but
5
+ * not which of two rows the reader meant. This is the alignment fuzzy finders
6
+ * use, with the constants fzf calibrates in its own source: matching a
7
+ * character is worth a fixed amount, starting a word is worth more, continuing
8
+ * a run is worth more than the gap it avoids, and every skipped character
9
+ * costs — a little inside a run, more when it opens a new gap. A reader typing
10
+ * edtr or srccomp gets a ranking their fingers recognize.
11
+ *
12
+ * Classes are read from the original text, so a camel hump keeps its bonus
13
+ * while the comparison itself stays case-insensitive. Matching works in code
14
+ * points rather than UTF-16 units, and each one is folded on its own, so a
15
+ * letter outside ASCII cannot change how many positions the text has.
16
+ *
17
+ * Where the match starts is deliberately unscored: a caller that ranks
18
+ * different kinds of rows needs that concern in its own bands, and the bands
19
+ * in {@link matchScore} keep an early hit above a late one.
20
+ *
21
+ * One deliberate divergence from fzf: for a one-character fragment fzf stops
22
+ * at the first word boundary it meets, because its scan wants to stay cheap,
23
+ * while this reads every position and keeps the best. A short fragment still
24
+ * deserves the row that matches it best, and a test pins the difference.
25
+ */
26
+ /**
27
+ * The case-folded text the scorer compares against.
28
+ *
29
+ * A caller that ranks in bands decides with the same view of a row the scorer
30
+ * will use, so the fold is shared rather than spelled a second time: a second
31
+ * case mapping could disagree on characters outside ASCII.
32
+ */
33
+ export declare function foldSimple(text: string): string;
34
+ /**
35
+ * The best reading of `needle` inside `haystack`, or undefined when its
36
+ * characters do not all appear in order.
37
+ *
38
+ * Both sides are read case-insensitively, and an empty fragment narrows
39
+ * nothing.
40
+ */
41
+ export declare function fuzzyScore(needle: string, haystack: string): number | undefined;
42
+ //# sourceMappingURL=fuzzy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy.d.ts","sourceRoot":"","sources":["../../src/input/fuzzy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAyIH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAqG/E"}
@@ -0,0 +1,289 @@
1
+ /**
2
+ * How well a row answers a fragment, scored the way fzf scores it.
3
+ *
4
+ * A greedy scan can say whether a fragment's characters are all present, but
5
+ * not which of two rows the reader meant. This is the alignment fuzzy finders
6
+ * use, with the constants fzf calibrates in its own source: matching a
7
+ * character is worth a fixed amount, starting a word is worth more, continuing
8
+ * a run is worth more than the gap it avoids, and every skipped character
9
+ * costs — a little inside a run, more when it opens a new gap. A reader typing
10
+ * edtr or srccomp gets a ranking their fingers recognize.
11
+ *
12
+ * Classes are read from the original text, so a camel hump keeps its bonus
13
+ * while the comparison itself stays case-insensitive. Matching works in code
14
+ * points rather than UTF-16 units, and each one is folded on its own, so a
15
+ * letter outside ASCII cannot change how many positions the text has.
16
+ *
17
+ * Where the match starts is deliberately unscored: a caller that ranks
18
+ * different kinds of rows needs that concern in its own bands, and the bands
19
+ * in {@link matchScore} keep an early hit above a late one.
20
+ *
21
+ * One deliberate divergence from fzf: for a one-character fragment fzf stops
22
+ * at the first word boundary it meets, because its scan wants to stay cheap,
23
+ * while this reads every position and keeps the best. A short fragment still
24
+ * deserves the row that matches it best, and a test pins the difference.
25
+ */
26
+ /**
27
+ * Character classes the bonus matrix distinguishes.
28
+ *
29
+ * A delimiter is a character a path or field is built from — fzf treats
30
+ * `/,:;|` as such — because the start of a segment is a boundary a reader
31
+ * aims at even though no whitespace precedes it.
32
+ */
33
+ const WHITE = 0;
34
+ const NON_WORD = 1;
35
+ const DELIMITER = 2;
36
+ const LOWER = 3;
37
+ const UPPER = 4;
38
+ const LETTER = 5;
39
+ const NUMBER = 6;
40
+ /** What one aligned character is worth, and what a gap costs. */
41
+ const SCORE_MATCH = 16;
42
+ const SCORE_GAP_START = -3;
43
+ const SCORE_GAP_EXTENSION = -1;
44
+ /** What starting a word is worth, before the boundary class is considered. */
45
+ const BONUS_BOUNDARY = SCORE_MATCH / 2;
46
+ const BONUS_NON_WORD = SCORE_MATCH / 2;
47
+ /** A camel hump or a digit beside a letter pays one gap step less than a word start. */
48
+ const BONUS_CAMEL_123 = BONUS_BOUNDARY + SCORE_GAP_EXTENSION;
49
+ /** What continuing a run is worth, priced against the gap it avoids opening. */
50
+ const BONUS_CONSECUTIVE = -(SCORE_GAP_START + SCORE_GAP_EXTENSION);
51
+ /** The first character of a fragment carries its bonus twice, because it is what the reader aimed at. */
52
+ const BONUS_FIRST_CHAR_MULTIPLIER = 2;
53
+ /** A word after whitespace or the start of the text is the strongest boundary there is. */
54
+ const BONUS_BOUNDARY_WHITE = BONUS_BOUNDARY + 2;
55
+ /** A word after a delimiter is next, because no whitespace marks it. */
56
+ const BONUS_BOUNDARY_DELIMITER = BONUS_BOUNDARY + 1;
57
+ /** The class a text begins in, so its first character can open a word. */
58
+ const INITIAL_CLASS = WHITE;
59
+ const DELIMITER_CHARACTERS = '/,:;|';
60
+ const WHITE_CHARACTERS = ' \t\n\v\f\r\u0085\u00a0';
61
+ const LOWER_PATTERN = /[a-z]/;
62
+ const UPPER_PATTERN = /[A-Z]/;
63
+ const NUMBER_PATTERN = /[0-9]/;
64
+ /**
65
+ * The categories fzf reads a code point outside ASCII by.
66
+ *
67
+ * Without them a letter such as é would be read as a word break, so a fragment
68
+ * landing beside it would take a boundary bonus fzf never pays and outrank a
69
+ * text fzf ranks higher.
70
+ */
71
+ const UNICODE_SPACE_PATTERN = /\p{White_Space}/u;
72
+ const UNICODE_LOWER_PATTERN = /\p{Ll}/u;
73
+ const UNICODE_UPPER_PATTERN = /\p{Lu}/u;
74
+ const UNICODE_NUMBER_PATTERN = /\p{N}/u;
75
+ const UNICODE_LETTER_PATTERN = /\p{L}/u;
76
+ function classOf(character) {
77
+ if (character >= 'a' && character <= 'z')
78
+ return LOWER;
79
+ if (character >= 'A' && character <= 'Z')
80
+ return UPPER;
81
+ if (NUMBER_PATTERN.test(character))
82
+ return NUMBER;
83
+ if (WHITE_CHARACTERS.includes(character))
84
+ return WHITE;
85
+ if (DELIMITER_CHARACTERS.includes(character))
86
+ return DELIMITER;
87
+ if (UNICODE_SPACE_PATTERN.test(character))
88
+ return WHITE;
89
+ if (UNICODE_LOWER_PATTERN.test(character))
90
+ return LOWER;
91
+ if (UNICODE_UPPER_PATTERN.test(character))
92
+ return UPPER;
93
+ if (UNICODE_NUMBER_PATTERN.test(character))
94
+ return NUMBER;
95
+ if (UNICODE_LETTER_PATTERN.test(character))
96
+ return LETTER;
97
+ return NON_WORD;
98
+ }
99
+ /**
100
+ * What a character earns given the class before it.
101
+ *
102
+ * The order mirrors fzf's: a word opening after white, a delimiter, or a
103
+ * non-word takes that boundary's bonus; a hump inside a word takes the smaller
104
+ * camel one; and matching the separator itself is still worth something,
105
+ * because a reader who typed it meant it.
106
+ */
107
+ function bonusFor(previous, current) {
108
+ if (current >= NON_WORD) {
109
+ if (previous === WHITE)
110
+ return BONUS_BOUNDARY_WHITE;
111
+ if (previous === DELIMITER)
112
+ return BONUS_BOUNDARY_DELIMITER;
113
+ if (previous === NON_WORD)
114
+ return BONUS_BOUNDARY;
115
+ }
116
+ if ((previous === LOWER && current === UPPER) || (previous !== NUMBER && current === NUMBER)) {
117
+ return BONUS_CAMEL_123;
118
+ }
119
+ if (current === NON_WORD || current === DELIMITER)
120
+ return BONUS_NON_WORD;
121
+ if (current === WHITE)
122
+ return BONUS_BOUNDARY_WHITE;
123
+ return 0;
124
+ }
125
+ /**
126
+ * The lowercase of one code point, always exactly one code point back.
127
+ *
128
+ * JavaScript's whole-string lowercase can expand a character into two, or pick
129
+ * a form that depends on its neighbours, and either one would move every index
130
+ * after it in a table that has to line up with the original text.
131
+ */
132
+ function simpleLower(code) {
133
+ if (code >= 0x41 && code <= 0x5a)
134
+ return code + 0x20;
135
+ if (code < 0x80)
136
+ return code;
137
+ return String.fromCodePoint(code).toLowerCase().codePointAt(0) ?? code;
138
+ }
139
+ function prepare(text) {
140
+ const characters = [...text];
141
+ const folded = new Uint32Array(characters.length);
142
+ const bonuses = new Int32Array(characters.length);
143
+ let previousClass = INITIAL_CLASS;
144
+ for (let at = 0; at < characters.length; at += 1) {
145
+ const character = characters[at] ?? '';
146
+ const currentClass = classOf(character);
147
+ folded[at] = simpleLower(character.codePointAt(0) ?? 0);
148
+ bonuses[at] = bonusFor(previousClass, currentClass);
149
+ previousClass = currentClass;
150
+ }
151
+ return { folded, bonuses };
152
+ }
153
+ function foldQuery(needle) {
154
+ const characters = [...needle];
155
+ const folded = new Uint32Array(characters.length);
156
+ for (let at = 0; at < characters.length; at += 1) {
157
+ folded[at] = simpleLower((characters[at] ?? '').codePointAt(0) ?? 0);
158
+ }
159
+ return folded;
160
+ }
161
+ /**
162
+ * The case-folded text the scorer compares against.
163
+ *
164
+ * A caller that ranks in bands decides with the same view of a row the scorer
165
+ * will use, so the fold is shared rather than spelled a second time: a second
166
+ * case mapping could disagree on characters outside ASCII.
167
+ */
168
+ export function foldSimple(text) {
169
+ let folded = '';
170
+ for (const character of text) {
171
+ folded += String.fromCodePoint(simpleLower(character.codePointAt(0) ?? 0));
172
+ }
173
+ return folded;
174
+ }
175
+ /**
176
+ * The best reading of `needle` inside `haystack`, or undefined when its
177
+ * characters do not all appear in order.
178
+ *
179
+ * Both sides are read case-insensitively, and an empty fragment narrows
180
+ * nothing.
181
+ */
182
+ export function fuzzyScore(needle, haystack) {
183
+ const query = foldQuery(needle.trim());
184
+ const queryLength = query.length;
185
+ if (queryLength === 0)
186
+ return 0;
187
+ const text = prepare(haystack);
188
+ const textLength = text.folded.length;
189
+ if (queryLength > textLength)
190
+ return undefined;
191
+ // The earliest each character of the fragment can sit, so a row never reads
192
+ // left of where its own character could first match. The scan is also the
193
+ // cheap rejection: most candidates in a workspace do not contain the
194
+ // fragment at all, and an alignment table for each would cost more than the
195
+ // list of them is worth.
196
+ const earliest = new Int32Array(queryLength);
197
+ let searched = 0;
198
+ for (let index = 0; index < queryLength; index += 1) {
199
+ const character = query[index] ?? 0;
200
+ let found = -1;
201
+ for (let at = searched; at < textLength; at += 1) {
202
+ if (text.folded[at] === character) {
203
+ found = at;
204
+ break;
205
+ }
206
+ }
207
+ if (found < 0)
208
+ return undefined;
209
+ earliest[index] = found;
210
+ searched = found + 1;
211
+ }
212
+ // The last place the fragment's final character appears: no alignment can
213
+ // reach past it, so no row is scored there.
214
+ const lastCharacter = query[queryLength - 1] ?? 0;
215
+ let latest = textLength - 1;
216
+ while (latest > 0 && text.folded[latest] !== lastCharacter)
217
+ latest -= 1;
218
+ // Row zero: the best score for the fragment's first character at each
219
+ // position, clamped at zero the way a local alignment is.
220
+ const previousRow = new Int32Array(textLength);
221
+ const previousRuns = new Int32Array(textLength);
222
+ let best = 0;
223
+ let running = 0;
224
+ let inGap = false;
225
+ const firstCharacter = query[0] ?? 0;
226
+ for (let at = 0; at < textLength; at += 1) {
227
+ if (text.folded[at] === firstCharacter) {
228
+ running = SCORE_MATCH + (text.bonuses[at] ?? 0) * BONUS_FIRST_CHAR_MULTIPLIER;
229
+ previousRuns[at] = 1;
230
+ inGap = false;
231
+ }
232
+ else {
233
+ running = Math.max(running + (inGap ? SCORE_GAP_EXTENSION : SCORE_GAP_START), 0);
234
+ inGap = true;
235
+ }
236
+ previousRow[at] = running;
237
+ if (queryLength === 1 && running > best)
238
+ best = running;
239
+ }
240
+ for (let index = 1; index < queryLength; index += 1) {
241
+ const row = new Int32Array(textLength);
242
+ const runs = new Int32Array(textLength);
243
+ const character = query[index] ?? 0;
244
+ let left = 0;
245
+ inGap = false;
246
+ const from = earliest[index] ?? 0;
247
+ for (let at = from; at <= latest; at += 1) {
248
+ const skipped = left + (inGap ? SCORE_GAP_EXTENSION : SCORE_GAP_START);
249
+ let matched = 0;
250
+ let consecutive = 0;
251
+ if (text.folded[at] === character) {
252
+ matched = (previousRow[at - 1] ?? 0) + SCORE_MATCH;
253
+ const bonus = text.bonuses[at] ?? 0;
254
+ consecutive = (previousRuns[at - 1] ?? 0) + 1;
255
+ let credit = bonus;
256
+ if (consecutive > 1) {
257
+ const chunkStart = text.bonuses[at - consecutive + 1] ?? 0;
258
+ // A fresh word start inside a run is a new chunk, not a longer one.
259
+ if (bonus >= BONUS_BOUNDARY && bonus > chunkStart) {
260
+ consecutive = 1;
261
+ }
262
+ else {
263
+ credit = Math.max(bonus, BONUS_CONSECUTIVE, chunkStart);
264
+ }
265
+ }
266
+ if (matched + credit < skipped) {
267
+ matched += bonus;
268
+ consecutive = 0;
269
+ }
270
+ else {
271
+ matched += credit;
272
+ }
273
+ }
274
+ runs[at] = consecutive;
275
+ inGap = matched < skipped;
276
+ const score = Math.max(matched, skipped, 0);
277
+ row[at] = score;
278
+ left = score;
279
+ if (index === queryLength - 1 && score > best)
280
+ best = score;
281
+ }
282
+ // The rows are rebuilt for each character of the fragment, so the arrays
283
+ // that hold the previous one are replaced rather than copied.
284
+ previousRow.set(row);
285
+ previousRuns.set(runs);
286
+ }
287
+ return best;
288
+ }
289
+ //# sourceMappingURL=fuzzy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fuzzy.js","sourceRoot":"","sources":["../../src/input/fuzzy.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,9 @@ export declare function surfaceKeysLine(map: Keymap): string;
25
25
  * Only the rows the reader wrote are sent, so every key they did not touch
26
26
  * keeps whatever the library ships. The prompt bar's two actions are always
27
27
  * sent, because both need the bar's own guard and therefore differ from the
28
- * library's defaults even when the reader never wrote them.
28
+ * library's defaults even when the reader never wrote them. A row this surface
29
+ * adds a key to is sent for the same reason: the library reads that key itself,
30
+ * so a default the surface only holds on paper would never open the search.
29
31
  */
30
32
  export declare function libraryOverrides(map: Keymap): Record<string, KeyId[]>;
31
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"keymap.d.ts","sourceRoot":"","sources":["../../src/input/keymap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACpH,OAAO,EAAqD,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AAC7F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,EAAE,SAAS,KAAK,EAA6C,CAAA;AAE7F,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,EAAE,KAA+B,CAAA;AAiBhE,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAA;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,YAAY,EAAE,CASlE;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAYrE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,CAAA;IAClC,qFAAqF;IACrF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAClC;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQlD;AAED,sEAAsE;AACtE,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAA;AAE/D,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IACnD,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;CAC9B;AASD;;;;;;GAMG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAS;gBAGJ,QAAQ,EAAE,MAAM,SAAS,KAAK,EAAE,EAChC,QAAQ,EAAE,MAAM,SAAS,YAAY,EAAE,EACvC,QAAQ,EAAE,MAAM,MAAM,EACtB,QAAQ,EAAE,MAAM,IAAI,EACpB,MAAM,GAAE,WAA2B;IAGtD,kFAAkF;IAClF,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;;OAMG;IACH,IAAI,IAAI,MAAM,GAAG,SAAS;IAI1B,gFAAgF;IAChF,MAAM,IAAI,IAAI;IAOd,sFAAsF;IACtF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAyB9C"}
1
+ {"version":3,"file":"keymap.d.ts","sourceRoot":"","sources":["../../src/input/keymap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAA;AACpH,OAAO,EAA4E,KAAK,MAAM,EAAE,MAAM,cAAc,CAAA;AACpH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,EAAE,SAAS,KAAK,EAA6C,CAAA;AAE7F,uFAAuF;AACvF,eAAO,MAAM,kBAAkB,EAAE,KAA+B,CAAA;AAwBhE,kFAAkF;AAClF,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAA;IACnB,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CACvB;AAED,6CAA6C;AAC7C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,YAAY,EAAE,CASlE;AAED,6DAA6D;AAC7D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,+DAA+D;AAC/D,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAarE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,KAAK,EAAE,CAAA;IAClC,qFAAqF;IACrF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAA;CAClC;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAQlD;AAED,sEAAsE;AACtE,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;CAAE,CAAA;AAE/D,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAA;IACnD,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;CAC9B;AASD;;;;;;GAMG;AACH,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IARzB,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,MAAM,CAAS;gBAGJ,QAAQ,EAAE,MAAM,SAAS,KAAK,EAAE,EAChC,QAAQ,EAAE,MAAM,SAAS,YAAY,EAAE,EACvC,QAAQ,EAAE,MAAM,MAAM,EACtB,QAAQ,EAAE,MAAM,IAAI,EACpB,MAAM,GAAE,WAA2B;IAGtD,kFAAkF;IAClF,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;;OAMG;IACH,IAAI,IAAI,MAAM,GAAG,SAAS;IAI1B,gFAAgF;IAChF,MAAM,IAAI,IAAI;IAOd,sFAAsF;IACtF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;CAyB9C"}
@@ -1,5 +1,5 @@
1
1
  import { KeybindingsManager, TUI_KEYBINDINGS, matchesKey, setKeybindings } from '@earendil-works/pi-tui';
2
- import { ACTION_CATALOG, ENTER_KEY, defaultKeymap, keysFor } from "./actions.js";
2
+ import { ACTION_CATALOG, ENTER_KEY, LIBRARY_KEY_ADDITIONS, defaultKeymap, keysFor } from "./actions.js";
3
3
  /** How long an armed chord waits for the key that follows it, in seconds. */
4
4
  export const DEFAULT_PREFIX_WINDOW_S = 2;
5
5
  /** The keys that start a chord when the reader configures nothing. */
@@ -19,6 +19,13 @@ const CHORD_SUBMISSIONS = {
19
19
  'chord.copy': { kind: 'copy' },
20
20
  'chord.stash': { kind: 'stash-draft' },
21
21
  'chord.stashes': { kind: 'stash-list' },
22
+ // The editor, like the stash, only exists as a chord: a typed command has
23
+ // already consumed the line it would otherwise have carried.
24
+ 'chord.editor': { kind: 'editor' },
25
+ 'chord.keys': { kind: 'keys', argument: '' },
26
+ // The chord starts the session a typed `/new` starts, without the line that
27
+ // would have replaced the draft in the bar.
28
+ 'chord.new': { kind: 'new', title: '' },
22
29
  };
23
30
  /** The chords in force, in catalog order. */
24
31
  export function chordBindings(map) {
@@ -55,12 +62,16 @@ export function surfaceKeysLine(map) {
55
62
  * Only the rows the reader wrote are sent, so every key they did not touch
56
63
  * keeps whatever the library ships. The prompt bar's two actions are always
57
64
  * sent, because both need the bar's own guard and therefore differ from the
58
- * library's defaults even when the reader never wrote them.
65
+ * library's defaults even when the reader never wrote them. A row this surface
66
+ * adds a key to is sent for the same reason: the library reads that key itself,
67
+ * so a default the surface only holds on paper would never open the search.
59
68
  */
60
69
  export function libraryOverrides(map) {
61
70
  const overrides = {};
62
71
  for (const action of ACTION_CATALOG) {
63
- if (action.layer !== 'library' || !map.written.has(action.id))
72
+ if (action.layer !== 'library')
73
+ continue;
74
+ if (!map.written.has(action.id) && LIBRARY_KEY_ADDITIONS[action.id] === undefined)
64
75
  continue;
65
76
  overrides[action.id] = [...keysFor(map, action.id)];
66
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"keymap.js","sourceRoot":"","sources":["../../src/input/keymap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keymap.js","sourceRoot":"","sources":["../../src/input/keymap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAc,MAAM,wBAAwB,CAAA;AACpH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,qBAAqB,EAAE,aAAa,EAAE,OAAO,EAAe,MAAM,cAAc,CAAA;AAGpH,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAA;AAExC,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAqB,OAAO,CAAC,aAAa,EAAE,EAAE,cAAc,CAAC,CAAA;AAE7F,uFAAuF;AACvF,MAAM,CAAC,MAAM,kBAAkB,GAAU,mBAAmB,CAAC,CAAC,CAAE,CAAA;AAEhE;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAyC;IAC9D,aAAa,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9C,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9B,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAC9B,aAAa,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;IACtC,eAAe,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;IACvC,0EAA0E;IAC1E,6DAA6D;IAC7D,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC5C,4EAA4E;IAC5E,4CAA4C;IAC5C,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;CACxC,CAAA;AASD,6CAA6C;AAC7C,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAmB,EAAE,CAAA;IAChC,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,IAAI,MAAM,CAAC,EAAE,KAAK,cAAc;YAAE,SAAQ;QACtE,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC/C,IAAI,UAAU,KAAK,SAAS;YAAE,SAAQ;QACtC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACjG,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;AAC9I,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,SAAQ;QACxC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;IACjF,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,MAAM,SAAS,GAA4B,EAAE,CAAA;IAC7C,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,SAAQ;QACxC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS;YAAE,SAAQ;QAC3F,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;IACD,SAAS,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAA;IAClE,4EAA4E;IAC5E,2EAA2E;IAC3E,kDAAkD;IAClD,SAAS,CAAC,mBAAmB,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAA;IAChG,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,cAAc,CAAC,IAAI,kBAAkB,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;AAChF,CAAC;AAUD,2FAA2F;AAC3F,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAA;IAC9C,OAAO;QACL,MAAM;QACN,OAAO;QACP,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;KAC7C,CAAA;AACH,CAAC;AAaD,MAAM,aAAa,GAAgB;IACjC,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;IACpD,MAAM,EAAE,MAAM,CAAC,EAAE;QACf,YAAY,CAAC,MAAuC,CAAC,CAAA;IACvD,CAAC;CACF,CAAA;AAED;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IAKH;IACA;IACA;IACA;IACA;IARX,KAAK,CAAmB;IACxB,MAAM,CAAS;IAEvB,YACmB,QAAgC,EAChC,QAAuC,EACvC,QAAsB,EACtB,QAAoB,EACpB,SAAsB,aAAa;QAJnC,aAAQ,GAAR,QAAQ,CAAwB;QAChC,aAAQ,GAAR,QAAQ,CAA+B;QACvC,aAAQ,GAAR,QAAQ,CAAc;QACtB,aAAQ,GAAR,QAAQ,CAAY;QACpB,WAAM,GAAN,MAAM,CAA6B;IACnD,CAAC;IAEJ,kFAAkF;IAClF,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,CAAA;IACjC,CAAC;IAED;;;;;;OAMG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,gFAAgF;IAChF,MAAM;QACJ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YAAE,OAAM;QACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;IACzB,CAAC;IAED,sFAAsF;IACtF,MAAM,CAAC,IAAY;QACjB,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7B,yEAAyE;YACzE,0EAA0E;YAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;YAChE,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAA;YACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YAChC,wEAAwE;YACxE,wBAAwB;YACxB,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE;oBACtC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAA;oBACtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAA;oBACvB,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACjB,CAAC,EAAE,QAAQ,CAAC,CAAA;YACd,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;QAC1B,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,yEAAyE;QACzE,yCAAyC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QAC1E,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;IACxE,CAAC;CACF"}
@@ -1,10 +1,18 @@
1
1
  /**
2
2
  * How well a row answers what the reader typed.
3
3
  *
4
- * A reader types fragments — `glm53` for `GLM-5.3`, `gptcdx` for a provider
5
- * name — so matching only a contiguous run makes them remember punctuation the
6
- * list already renders for them. Higher is a better match; `undefined` is the
7
- * only answer that means no match at all.
4
+ * A reader types fragments — `glm53` for `GLM-5.3`, `edtr` for a path — so
5
+ * matching only a contiguous run makes them remember punctuation the list
6
+ * already renders for them. The band a hit lands in answers "what kind of hit
7
+ * is this": an exact row, a row that opens with the fragment, one that holds
8
+ * it whole, or one that only carries its characters in order. Inside a band
9
+ * the fuzzy reading decides, which is what keeps a match on a word boundary
10
+ * above the same letters spread through the middle of a word.
11
+ *
12
+ * Higher is a better match; `undefined` is the only answer that means no
13
+ * match at all. The bands are decided on the folded text and the reading
14
+ * itself on the row as it was written, because only the original spelling
15
+ * still carries the humps and separators the reading pays for.
8
16
  */
9
17
  export declare function matchScore(needle: string, haystack: string): number | undefined;
10
18
  //# sourceMappingURL=match.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/input/match.ts"],"names":[],"mappings":"AAsBA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU/E"}
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/input/match.ts"],"names":[],"mappings":"AAqCA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc/E"}