@jupyterlab/codemirror 4.0.0-beta.2 → 4.0.0-rc.1
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.
- package/lib/searchprovider.d.ts +56 -8
- package/lib/searchprovider.js +103 -43
- package/lib/searchprovider.js.map +1 -1
- package/package.json +10 -10
- package/src/searchprovider.ts +154 -46
- package/style/base.css +10 -6
package/lib/searchprovider.d.ts
CHANGED
|
@@ -4,6 +4,35 @@ import { CodeEditor } from '@jupyterlab/codeeditor';
|
|
|
4
4
|
import { IBaseSearchProvider, IFilters, IReplaceOptions } from '@jupyterlab/documentsearch';
|
|
5
5
|
import { ISignal, Signal } from '@lumino/signaling';
|
|
6
6
|
import { ISharedText, SourceChange } from '@jupyter/ydoc';
|
|
7
|
+
/**
|
|
8
|
+
* Defines from which position the search should be executed.
|
|
9
|
+
* - `'selection'` - search from selection head/anchor (depending on search direction)
|
|
10
|
+
* - `'previous-match'` - search from previous match
|
|
11
|
+
* - `'auto'` - search from selection if editor is focused or previous match otherwise
|
|
12
|
+
* - `'selection-start'` - search from selection head/anchor whichever is smaller
|
|
13
|
+
* - `'start'` - from start of the editor
|
|
14
|
+
*/
|
|
15
|
+
type SearchStartAnchor = 'auto' | 'selection' | 'selection-start' | 'previous-match' | 'start';
|
|
16
|
+
interface IHighlightMatchOptions {
|
|
17
|
+
/**
|
|
18
|
+
* Whether the highlighted match should be scrolled into view.
|
|
19
|
+
* Defaults to `true`.
|
|
20
|
+
*/
|
|
21
|
+
scroll?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Whether the user cursor should be moved to select the match.
|
|
24
|
+
* `protectSelection` flag takes precedence over this option.
|
|
25
|
+
* Defaults to `true`.
|
|
26
|
+
*/
|
|
27
|
+
select?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface IHighlightAdjacentMatchOptions extends IHighlightMatchOptions {
|
|
30
|
+
/**
|
|
31
|
+
* What should be used as an anchor when searching for adjacent match.
|
|
32
|
+
* Defaults to `'auto'`.
|
|
33
|
+
*/
|
|
34
|
+
from?: SearchStartAnchor;
|
|
35
|
+
}
|
|
7
36
|
/**
|
|
8
37
|
* Search provider for editors.
|
|
9
38
|
*/
|
|
@@ -64,9 +93,20 @@ export declare abstract class EditorSearchProvider<T extends CodeEditor.IModel =
|
|
|
64
93
|
*/
|
|
65
94
|
setIsActive(v: boolean): Promise<void>;
|
|
66
95
|
/**
|
|
67
|
-
* Set whether search should be limitted to specified selection.
|
|
96
|
+
* Set whether search should be limitted to specified text selection.
|
|
68
97
|
*/
|
|
69
98
|
setSearchSelection(selection: CodeEditor.IRange | null): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Set whether user selection should be protected from modifications.
|
|
101
|
+
*
|
|
102
|
+
* If disabled, the selection will be updated on search and on editor focus
|
|
103
|
+
* to cover the current match. We need to protect selection from modifications
|
|
104
|
+
* for both: search in text and search in cells; since `setSearchSelection`
|
|
105
|
+
* is only telling us about search in text, we need to have an additional
|
|
106
|
+
* way to signal that either search in text or in cells is active, or for
|
|
107
|
+
* any other reason selection range should be protected.
|
|
108
|
+
*/
|
|
109
|
+
setProtectSelection(v: boolean): void;
|
|
70
110
|
/**
|
|
71
111
|
* Initialize the search using the provided options. Should update the UI
|
|
72
112
|
* to highlight all matches and "select" the first match.
|
|
@@ -84,13 +124,13 @@ export declare abstract class EditorSearchProvider<T extends CodeEditor.IModel =
|
|
|
84
124
|
*
|
|
85
125
|
* @returns The next match if there is one.
|
|
86
126
|
*/
|
|
87
|
-
highlightNext(loop?: boolean,
|
|
127
|
+
highlightNext(loop?: boolean, options?: IHighlightAdjacentMatchOptions): Promise<ISearchMatch | undefined>;
|
|
88
128
|
/**
|
|
89
129
|
* Highlight the previous match.
|
|
90
130
|
*
|
|
91
131
|
* @returns The previous match if there is one.
|
|
92
132
|
*/
|
|
93
|
-
highlightPrevious(loop?: boolean,
|
|
133
|
+
highlightPrevious(loop?: boolean, options?: IHighlightAdjacentMatchOptions): Promise<ISearchMatch | undefined>;
|
|
94
134
|
/**
|
|
95
135
|
* Replace the currently selected match with the provided text.
|
|
96
136
|
*
|
|
@@ -157,9 +197,9 @@ export declare abstract class EditorSearchProvider<T extends CodeEditor.IModel =
|
|
|
157
197
|
*
|
|
158
198
|
* **NOTES:**
|
|
159
199
|
* - to retain the selection visibility `drawSelection` extension is needed.
|
|
160
|
-
* - highlighting starts from the cursor (if editor is focused
|
|
161
|
-
* or `
|
|
162
|
-
* otherwise.
|
|
200
|
+
* - highlighting starts from the cursor (if editor is focused and `from` is set
|
|
201
|
+
* to `'auto'`, cursor moved, or `from` argument is set to `'selection'` or
|
|
202
|
+
* `'selection-start'`), or from last "current" match otherwise.
|
|
163
203
|
* - `currentIndex` is the (readonly) source of truth for the current match.
|
|
164
204
|
*/
|
|
165
205
|
export declare class CodeMirrorSearchHighlighter {
|
|
@@ -179,6 +219,12 @@ export declare class CodeMirrorSearchHighlighter {
|
|
|
179
219
|
get matches(): ISearchMatch[];
|
|
180
220
|
set matches(v: ISearchMatch[]);
|
|
181
221
|
private _current;
|
|
222
|
+
/**
|
|
223
|
+
* Whether the cursor/selection should not be modified.
|
|
224
|
+
*/
|
|
225
|
+
get protectSelection(): boolean;
|
|
226
|
+
set protectSelection(v: boolean);
|
|
227
|
+
private _protectSelection;
|
|
182
228
|
/**
|
|
183
229
|
* Clear all highlighted matches
|
|
184
230
|
*/
|
|
@@ -192,13 +238,13 @@ export declare class CodeMirrorSearchHighlighter {
|
|
|
192
238
|
*
|
|
193
239
|
* @returns The next match if available
|
|
194
240
|
*/
|
|
195
|
-
highlightNext(
|
|
241
|
+
highlightNext(options?: IHighlightAdjacentMatchOptions): Promise<ISearchMatch | undefined>;
|
|
196
242
|
/**
|
|
197
243
|
* Highlight the previous match
|
|
198
244
|
*
|
|
199
245
|
* @returns The previous match if available
|
|
200
246
|
*/
|
|
201
|
-
highlightPrevious(
|
|
247
|
+
highlightPrevious(options?: IHighlightAdjacentMatchOptions): Promise<ISearchMatch | undefined>;
|
|
202
248
|
/**
|
|
203
249
|
* Set the editor
|
|
204
250
|
*
|
|
@@ -216,4 +262,6 @@ export declare class CodeMirrorSearchHighlighter {
|
|
|
216
262
|
private _highlightMark;
|
|
217
263
|
private _currentMark;
|
|
218
264
|
private _highlightField;
|
|
265
|
+
private _domEventHandlers;
|
|
219
266
|
}
|
|
267
|
+
export {};
|
package/lib/searchprovider.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Jupyter Development Team.
|
|
2
2
|
// Distributed under the terms of the Modified BSD License.
|
|
3
|
-
import { StateEffect, StateField } from '@codemirror/state';
|
|
3
|
+
import { EditorSelection, StateEffect, StateField } from '@codemirror/state';
|
|
4
4
|
import { Decoration, EditorView } from '@codemirror/view';
|
|
5
5
|
import { GenericSearchProvider, TextSearchEngine } from '@jupyterlab/documentsearch';
|
|
6
6
|
import { Signal } from '@lumino/signaling';
|
|
@@ -114,7 +114,7 @@ export class EditorSearchProvider {
|
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
/**
|
|
117
|
-
* Set whether search should be limitted to specified selection.
|
|
117
|
+
* Set whether search should be limitted to specified text selection.
|
|
118
118
|
*/
|
|
119
119
|
async setSearchSelection(selection) {
|
|
120
120
|
if (this._inSelection === selection) {
|
|
@@ -124,6 +124,19 @@ export class EditorSearchProvider {
|
|
|
124
124
|
await this.updateCodeMirror(this.model.sharedModel.getSource());
|
|
125
125
|
this._stateChanged.emit();
|
|
126
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* Set whether user selection should be protected from modifications.
|
|
129
|
+
*
|
|
130
|
+
* If disabled, the selection will be updated on search and on editor focus
|
|
131
|
+
* to cover the current match. We need to protect selection from modifications
|
|
132
|
+
* for both: search in text and search in cells; since `setSearchSelection`
|
|
133
|
+
* is only telling us about search in text, we need to have an additional
|
|
134
|
+
* way to signal that either search in text or in cells is active, or for
|
|
135
|
+
* any other reason selection range should be protected.
|
|
136
|
+
*/
|
|
137
|
+
setProtectSelection(v) {
|
|
138
|
+
this.cmHandler.protectSelection = v;
|
|
139
|
+
}
|
|
127
140
|
/**
|
|
128
141
|
* Initialize the search using the provided options. Should update the UI
|
|
129
142
|
* to highlight all matches and "select" the first match.
|
|
@@ -152,13 +165,12 @@ export class EditorSearchProvider {
|
|
|
152
165
|
*
|
|
153
166
|
* @returns The next match if there is one.
|
|
154
167
|
*/
|
|
155
|
-
async highlightNext(loop = true,
|
|
168
|
+
async highlightNext(loop = true, options) {
|
|
156
169
|
if (this.matchesCount === 0 || !this.isActive) {
|
|
157
170
|
this.currentIndex = null;
|
|
158
171
|
}
|
|
159
172
|
else {
|
|
160
|
-
|
|
161
|
-
let match = await this.cmHandler.highlightNext(fromCursor);
|
|
173
|
+
let match = await this.cmHandler.highlightNext(options);
|
|
162
174
|
if (match) {
|
|
163
175
|
this.currentIndex = this.cmHandler.currentIndex;
|
|
164
176
|
}
|
|
@@ -177,13 +189,12 @@ export class EditorSearchProvider {
|
|
|
177
189
|
*
|
|
178
190
|
* @returns The previous match if there is one.
|
|
179
191
|
*/
|
|
180
|
-
async highlightPrevious(loop = true,
|
|
192
|
+
async highlightPrevious(loop = true, options) {
|
|
181
193
|
if (this.matchesCount === 0 || !this.isActive) {
|
|
182
194
|
this.currentIndex = null;
|
|
183
195
|
}
|
|
184
196
|
else {
|
|
185
|
-
|
|
186
|
-
let match = await this.cmHandler.highlightPrevious(fromCursor);
|
|
197
|
+
let match = await this.cmHandler.highlightPrevious(options);
|
|
187
198
|
if (match) {
|
|
188
199
|
this.currentIndex = this.cmHandler.currentIndex;
|
|
189
200
|
}
|
|
@@ -315,7 +326,11 @@ export class EditorSearchProvider {
|
|
|
315
326
|
// A special case to always have a current match when in line selection mode.
|
|
316
327
|
if (this.cmHandler.currentIndex === null &&
|
|
317
328
|
this.cmHandler.matches.length > 0) {
|
|
318
|
-
await this.cmHandler.highlightNext(
|
|
329
|
+
await this.cmHandler.highlightNext({
|
|
330
|
+
from: 'selection',
|
|
331
|
+
select: false,
|
|
332
|
+
scroll: false
|
|
333
|
+
});
|
|
319
334
|
}
|
|
320
335
|
this.currentIndex = this.cmHandler.currentIndex;
|
|
321
336
|
}
|
|
@@ -336,9 +351,9 @@ export class EditorSearchProvider {
|
|
|
336
351
|
*
|
|
337
352
|
* **NOTES:**
|
|
338
353
|
* - to retain the selection visibility `drawSelection` extension is needed.
|
|
339
|
-
* - highlighting starts from the cursor (if editor is focused
|
|
340
|
-
* or `
|
|
341
|
-
* otherwise.
|
|
354
|
+
* - highlighting starts from the cursor (if editor is focused and `from` is set
|
|
355
|
+
* to `'auto'`, cursor moved, or `from` argument is set to `'selection'` or
|
|
356
|
+
* `'selection-start'`), or from last "current" match otherwise.
|
|
342
357
|
* - `currentIndex` is the (readonly) source of truth for the current match.
|
|
343
358
|
*/
|
|
344
359
|
export class CodeMirrorSearchHighlighter {
|
|
@@ -378,6 +393,8 @@ export class CodeMirrorSearchHighlighter {
|
|
|
378
393
|
if (ef.is(this._highlightEffect)) {
|
|
379
394
|
const e = ef;
|
|
380
395
|
if (e.value.matches.length) {
|
|
396
|
+
// Note: nesting will vary; sometimes `.cm-searching` will be
|
|
397
|
+
// inside `.jp-current-match`, sometime the other way round.
|
|
381
398
|
highlights = highlights.update({
|
|
382
399
|
add: e.value.matches.map(m => this._highlightMark.range(m.position, m.position + m.text.length)),
|
|
383
400
|
// filter out old marks
|
|
@@ -401,6 +418,12 @@ export class CodeMirrorSearchHighlighter {
|
|
|
401
418
|
},
|
|
402
419
|
provide: f => EditorView.decorations.from(f)
|
|
403
420
|
});
|
|
421
|
+
this._domEventHandlers = EditorView.domEventHandlers({
|
|
422
|
+
focus: () => {
|
|
423
|
+
// Set cursor on active match when editor gets focused.
|
|
424
|
+
this._selectCurrentMatch();
|
|
425
|
+
}
|
|
426
|
+
});
|
|
404
427
|
}
|
|
405
428
|
/**
|
|
406
429
|
* The current index of the selected match.
|
|
@@ -420,7 +443,16 @@ export class CodeMirrorSearchHighlighter {
|
|
|
420
443
|
this._currentIndex > this._matches.length) {
|
|
421
444
|
this._currentIndex = this._matches.length > 0 ? 0 : null;
|
|
422
445
|
}
|
|
423
|
-
this._highlightCurrentMatch(
|
|
446
|
+
this._highlightCurrentMatch({ select: false });
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* Whether the cursor/selection should not be modified.
|
|
450
|
+
*/
|
|
451
|
+
get protectSelection() {
|
|
452
|
+
return this._protectSelection;
|
|
453
|
+
}
|
|
454
|
+
set protectSelection(v) {
|
|
455
|
+
this._protectSelection = v;
|
|
424
456
|
}
|
|
425
457
|
/**
|
|
426
458
|
* Clear all highlighted matches
|
|
@@ -447,9 +479,10 @@ export class CodeMirrorSearchHighlighter {
|
|
|
447
479
|
*
|
|
448
480
|
* @returns The next match if available
|
|
449
481
|
*/
|
|
450
|
-
highlightNext(
|
|
451
|
-
|
|
452
|
-
this.
|
|
482
|
+
highlightNext(options) {
|
|
483
|
+
var _a;
|
|
484
|
+
this._currentIndex = this._findNext(false, (_a = options === null || options === void 0 ? void 0 : options.from) !== null && _a !== void 0 ? _a : 'auto');
|
|
485
|
+
this._highlightCurrentMatch(options);
|
|
453
486
|
return Promise.resolve(this._currentIndex !== null
|
|
454
487
|
? this._matches[this._currentIndex]
|
|
455
488
|
: undefined);
|
|
@@ -459,9 +492,10 @@ export class CodeMirrorSearchHighlighter {
|
|
|
459
492
|
*
|
|
460
493
|
* @returns The previous match if available
|
|
461
494
|
*/
|
|
462
|
-
highlightPrevious(
|
|
463
|
-
|
|
464
|
-
this.
|
|
495
|
+
highlightPrevious(options) {
|
|
496
|
+
var _a;
|
|
497
|
+
this._currentIndex = this._findNext(true, (_a = options === null || options === void 0 ? void 0 : options.from) !== null && _a !== void 0 ? _a : 'auto');
|
|
498
|
+
this._highlightCurrentMatch(options);
|
|
465
499
|
return Promise.resolve(this._currentIndex !== null
|
|
466
500
|
? this._matches[this._currentIndex]
|
|
467
501
|
: undefined);
|
|
@@ -480,10 +514,23 @@ export class CodeMirrorSearchHighlighter {
|
|
|
480
514
|
if (this._currentIndex !== null) {
|
|
481
515
|
this._highlightCurrentMatch();
|
|
482
516
|
}
|
|
517
|
+
this._cm.editor.dispatch({
|
|
518
|
+
effects: StateEffect.appendConfig.of(this._domEventHandlers)
|
|
519
|
+
});
|
|
483
520
|
this._refresh();
|
|
484
521
|
}
|
|
485
522
|
}
|
|
486
|
-
_selectCurrentMatch() {
|
|
523
|
+
_selectCurrentMatch(scroll = true) {
|
|
524
|
+
// This method has two responsibilities:
|
|
525
|
+
// 1) Scroll the current match into the view - useful for long lines,
|
|
526
|
+
// and file editors with more lines that fit on the screen
|
|
527
|
+
// 2) When user has focus on the editor (not search box) and presses
|
|
528
|
+
// ctrl + g/ctrl + shift + g to jump to next match they want their
|
|
529
|
+
// cursor to jump too.
|
|
530
|
+
// We execute (1) and (2) together as CodeMirror has a special code path
|
|
531
|
+
// to handle both in a single dispatch.
|
|
532
|
+
// The (2) case is inapplicable to search in selection mode, as it would
|
|
533
|
+
// invalidate the query selection, so in that case we only execute (1).
|
|
487
534
|
const match = this._current;
|
|
488
535
|
if (!match) {
|
|
489
536
|
return;
|
|
@@ -491,21 +538,32 @@ export class CodeMirrorSearchHighlighter {
|
|
|
491
538
|
if (!this._cm) {
|
|
492
539
|
return;
|
|
493
540
|
}
|
|
494
|
-
const selection = this._cm.editor.state.selection.main;
|
|
495
|
-
if (selection.from === match.position &&
|
|
496
|
-
selection.to === match.position + match.text.length) {
|
|
497
|
-
return;
|
|
498
|
-
}
|
|
499
541
|
const cursor = {
|
|
500
542
|
anchor: match.position,
|
|
501
543
|
head: match.position + match.text.length
|
|
502
544
|
};
|
|
503
|
-
this._cm.editor.
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
545
|
+
const selection = this._cm.editor.state.selection.main;
|
|
546
|
+
if ((selection.from === match.position &&
|
|
547
|
+
selection.to === match.position + match.text.length) ||
|
|
548
|
+
this._protectSelection) {
|
|
549
|
+
// Correct selection is already set or search is restricted to selection:
|
|
550
|
+
// scroll without changing the selection.
|
|
551
|
+
if (scroll) {
|
|
552
|
+
this._cm.editor.dispatch({
|
|
553
|
+
effects: EditorView.scrollIntoView(EditorSelection.range(cursor.anchor, cursor.head))
|
|
554
|
+
});
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
else {
|
|
559
|
+
this._cm.editor.dispatch({
|
|
560
|
+
selection: cursor,
|
|
561
|
+
scrollIntoView: scroll
|
|
562
|
+
});
|
|
563
|
+
}
|
|
507
564
|
}
|
|
508
|
-
_highlightCurrentMatch(
|
|
565
|
+
_highlightCurrentMatch(options) {
|
|
566
|
+
var _a, _b, _c;
|
|
509
567
|
if (!this._cm) {
|
|
510
568
|
// no-op
|
|
511
569
|
return;
|
|
@@ -514,13 +572,15 @@ export class CodeMirrorSearchHighlighter {
|
|
|
514
572
|
if (this._currentIndex !== null) {
|
|
515
573
|
const match = this.matches[this._currentIndex];
|
|
516
574
|
this._current = match;
|
|
517
|
-
//
|
|
518
|
-
|
|
575
|
+
// We do not change selection nor scroll if:
|
|
576
|
+
// - user is selecting text,
|
|
577
|
+
// - document was modified
|
|
578
|
+
if ((_a = options === null || options === void 0 ? void 0 : options.select) !== null && _a !== void 0 ? _a : true) {
|
|
519
579
|
if (this._cm.hasFocus()) {
|
|
520
580
|
// If editor is focused we actually set the cursor on the match.
|
|
521
|
-
this._selectCurrentMatch();
|
|
581
|
+
this._selectCurrentMatch((_b = options === null || options === void 0 ? void 0 : options.scroll) !== null && _b !== void 0 ? _b : true);
|
|
522
582
|
}
|
|
523
|
-
else {
|
|
583
|
+
else if ((_c = options === null || options === void 0 ? void 0 : options.scroll) !== null && _c !== void 0 ? _c : true) {
|
|
524
584
|
// otherwise we just scroll to preserve the selection.
|
|
525
585
|
this._cm.editor.dispatch({
|
|
526
586
|
effects: EditorView.scrollIntoView(match.position)
|
|
@@ -546,26 +606,26 @@ export class CodeMirrorSearchHighlighter {
|
|
|
546
606
|
];
|
|
547
607
|
if (!this._cm.state.field(this._highlightField, false)) {
|
|
548
608
|
effects.push(StateEffect.appendConfig.of([this._highlightField]));
|
|
549
|
-
// set cursor on active match when editor gets focused
|
|
550
|
-
const focusExtension = EditorView.domEventHandlers({
|
|
551
|
-
focus: () => {
|
|
552
|
-
this._selectCurrentMatch();
|
|
553
|
-
}
|
|
554
|
-
});
|
|
555
|
-
effects.push(StateEffect.appendConfig.of([focusExtension]));
|
|
556
609
|
}
|
|
557
610
|
this._cm.editor.dispatch({ effects });
|
|
558
611
|
}
|
|
559
|
-
_findNext(reverse,
|
|
612
|
+
_findNext(reverse, from = 'auto') {
|
|
560
613
|
if (this._matches.length === 0) {
|
|
561
614
|
// No-op
|
|
562
615
|
return null;
|
|
563
616
|
}
|
|
564
617
|
let lastPosition = 0;
|
|
565
|
-
if (this._cm.hasFocus() ||
|
|
618
|
+
if ((from === 'auto' && this._cm.hasFocus()) || from === 'selection') {
|
|
566
619
|
const cursor = this._cm.state.selection.main;
|
|
567
620
|
lastPosition = reverse ? cursor.anchor : cursor.head;
|
|
568
621
|
}
|
|
622
|
+
else if (from === 'selection-start') {
|
|
623
|
+
const cursor = this._cm.state.selection.main;
|
|
624
|
+
lastPosition = Math.min(cursor.anchor, cursor.head);
|
|
625
|
+
}
|
|
626
|
+
else if (from === 'start') {
|
|
627
|
+
lastPosition = 0;
|
|
628
|
+
}
|
|
569
629
|
else if (this._current) {
|
|
570
630
|
lastPosition = reverse
|
|
571
631
|
? this._current.position
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchprovider.js","sourceRoot":"","sources":["../src/searchprovider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"searchprovider.js","sourceRoot":"","sources":["../src/searchprovider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlab/codemirror",
|
|
3
|
-
"version": "4.0.0-
|
|
3
|
+
"version": "4.0.0-rc.1",
|
|
4
4
|
"description": "JupyterLab - CodeMirror Editor Provider",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -59,21 +59,21 @@
|
|
|
59
59
|
"@codemirror/state": "^6.2.0",
|
|
60
60
|
"@codemirror/view": "^6.9.6",
|
|
61
61
|
"@jupyter/ydoc": "^1.0.2",
|
|
62
|
-
"@jupyterlab/codeeditor": "^4.0.0-
|
|
63
|
-
"@jupyterlab/coreutils": "^6.0.0-
|
|
64
|
-
"@jupyterlab/documentsearch": "^4.0.0-
|
|
65
|
-
"@jupyterlab/nbformat": "^4.0.0-
|
|
66
|
-
"@jupyterlab/translation": "^4.0.0-
|
|
62
|
+
"@jupyterlab/codeeditor": "^4.0.0-rc.1",
|
|
63
|
+
"@jupyterlab/coreutils": "^6.0.0-rc.1",
|
|
64
|
+
"@jupyterlab/documentsearch": "^4.0.0-rc.1",
|
|
65
|
+
"@jupyterlab/nbformat": "^4.0.0-rc.1",
|
|
66
|
+
"@jupyterlab/translation": "^4.0.0-rc.1",
|
|
67
67
|
"@lezer/common": "^1.0.2",
|
|
68
68
|
"@lezer/generator": "^1.2.2",
|
|
69
69
|
"@lezer/highlight": "^1.1.4",
|
|
70
|
-
"@lumino/coreutils": "^2.1.
|
|
71
|
-
"@lumino/disposable": "^2.1.
|
|
72
|
-
"@lumino/signaling": "^2.1.
|
|
70
|
+
"@lumino/coreutils": "^2.1.1",
|
|
71
|
+
"@lumino/disposable": "^2.1.1",
|
|
72
|
+
"@lumino/signaling": "^2.1.1",
|
|
73
73
|
"yjs": "^13.5.40"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@jupyterlab/testing": "^4.0.0-
|
|
76
|
+
"@jupyterlab/testing": "^4.0.0-rc.1",
|
|
77
77
|
"@lezer/generator": "^1.2.2",
|
|
78
78
|
"@lezer/lr": "^1.3.3",
|
|
79
79
|
"@types/jest": "^29.2.0",
|
package/src/searchprovider.ts
CHANGED
|
@@ -32,7 +32,13 @@
|
|
|
32
32
|
|
|
33
33
|
import { ISearchMatch } from '@jupyterlab/documentsearch';
|
|
34
34
|
import { CodeMirrorEditor } from './editor';
|
|
35
|
-
import {
|
|
35
|
+
import {
|
|
36
|
+
EditorSelection,
|
|
37
|
+
Extension,
|
|
38
|
+
StateEffect,
|
|
39
|
+
StateEffectType,
|
|
40
|
+
StateField
|
|
41
|
+
} from '@codemirror/state';
|
|
36
42
|
import { Decoration, DecorationSet, EditorView } from '@codemirror/view';
|
|
37
43
|
import { CodeEditor } from '@jupyterlab/codeeditor';
|
|
38
44
|
import {
|
|
@@ -45,6 +51,43 @@ import {
|
|
|
45
51
|
import { ISignal, Signal } from '@lumino/signaling';
|
|
46
52
|
import { ISharedText, SourceChange } from '@jupyter/ydoc';
|
|
47
53
|
|
|
54
|
+
/**
|
|
55
|
+
* Defines from which position the search should be executed.
|
|
56
|
+
* - `'selection'` - search from selection head/anchor (depending on search direction)
|
|
57
|
+
* - `'previous-match'` - search from previous match
|
|
58
|
+
* - `'auto'` - search from selection if editor is focused or previous match otherwise
|
|
59
|
+
* - `'selection-start'` - search from selection head/anchor whichever is smaller
|
|
60
|
+
* - `'start'` - from start of the editor
|
|
61
|
+
*/
|
|
62
|
+
type SearchStartAnchor =
|
|
63
|
+
| 'auto'
|
|
64
|
+
| 'selection'
|
|
65
|
+
| 'selection-start'
|
|
66
|
+
| 'previous-match'
|
|
67
|
+
| 'start';
|
|
68
|
+
|
|
69
|
+
interface IHighlightMatchOptions {
|
|
70
|
+
/**
|
|
71
|
+
* Whether the highlighted match should be scrolled into view.
|
|
72
|
+
* Defaults to `true`.
|
|
73
|
+
*/
|
|
74
|
+
scroll?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Whether the user cursor should be moved to select the match.
|
|
77
|
+
* `protectSelection` flag takes precedence over this option.
|
|
78
|
+
* Defaults to `true`.
|
|
79
|
+
*/
|
|
80
|
+
select?: boolean;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface IHighlightAdjacentMatchOptions extends IHighlightMatchOptions {
|
|
84
|
+
/**
|
|
85
|
+
* What should be used as an anchor when searching for adjacent match.
|
|
86
|
+
* Defaults to `'auto'`.
|
|
87
|
+
*/
|
|
88
|
+
from?: SearchStartAnchor;
|
|
89
|
+
}
|
|
90
|
+
|
|
48
91
|
/**
|
|
49
92
|
* Search provider for editors.
|
|
50
93
|
*/
|
|
@@ -167,7 +210,7 @@ export abstract class EditorSearchProvider<
|
|
|
167
210
|
}
|
|
168
211
|
|
|
169
212
|
/**
|
|
170
|
-
* Set whether search should be limitted to specified selection.
|
|
213
|
+
* Set whether search should be limitted to specified text selection.
|
|
171
214
|
*/
|
|
172
215
|
async setSearchSelection(selection: CodeEditor.IRange | null): Promise<void> {
|
|
173
216
|
if (this._inSelection === selection) {
|
|
@@ -178,6 +221,20 @@ export abstract class EditorSearchProvider<
|
|
|
178
221
|
this._stateChanged.emit();
|
|
179
222
|
}
|
|
180
223
|
|
|
224
|
+
/**
|
|
225
|
+
* Set whether user selection should be protected from modifications.
|
|
226
|
+
*
|
|
227
|
+
* If disabled, the selection will be updated on search and on editor focus
|
|
228
|
+
* to cover the current match. We need to protect selection from modifications
|
|
229
|
+
* for both: search in text and search in cells; since `setSearchSelection`
|
|
230
|
+
* is only telling us about search in text, we need to have an additional
|
|
231
|
+
* way to signal that either search in text or in cells is active, or for
|
|
232
|
+
* any other reason selection range should be protected.
|
|
233
|
+
*/
|
|
234
|
+
setProtectSelection(v: boolean) {
|
|
235
|
+
this.cmHandler.protectSelection = v;
|
|
236
|
+
}
|
|
237
|
+
|
|
181
238
|
/**
|
|
182
239
|
* Initialize the search using the provided options. Should update the UI
|
|
183
240
|
* to highlight all matches and "select" the first match.
|
|
@@ -211,13 +268,12 @@ export abstract class EditorSearchProvider<
|
|
|
211
268
|
*/
|
|
212
269
|
async highlightNext(
|
|
213
270
|
loop = true,
|
|
214
|
-
|
|
271
|
+
options?: IHighlightAdjacentMatchOptions
|
|
215
272
|
): Promise<ISearchMatch | undefined> {
|
|
216
273
|
if (this.matchesCount === 0 || !this.isActive) {
|
|
217
274
|
this.currentIndex = null;
|
|
218
275
|
} else {
|
|
219
|
-
|
|
220
|
-
let match = await this.cmHandler.highlightNext(fromCursor);
|
|
276
|
+
let match = await this.cmHandler.highlightNext(options);
|
|
221
277
|
if (match) {
|
|
222
278
|
this.currentIndex = this.cmHandler.currentIndex;
|
|
223
279
|
} else {
|
|
@@ -239,13 +295,12 @@ export abstract class EditorSearchProvider<
|
|
|
239
295
|
*/
|
|
240
296
|
async highlightPrevious(
|
|
241
297
|
loop = true,
|
|
242
|
-
|
|
298
|
+
options?: IHighlightAdjacentMatchOptions
|
|
243
299
|
): Promise<ISearchMatch | undefined> {
|
|
244
300
|
if (this.matchesCount === 0 || !this.isActive) {
|
|
245
301
|
this.currentIndex = null;
|
|
246
302
|
} else {
|
|
247
|
-
|
|
248
|
-
let match = await this.cmHandler.highlightPrevious(fromCursor);
|
|
303
|
+
let match = await this.cmHandler.highlightPrevious(options);
|
|
249
304
|
if (match) {
|
|
250
305
|
this.currentIndex = this.cmHandler.currentIndex;
|
|
251
306
|
} else {
|
|
@@ -405,7 +460,11 @@ export abstract class EditorSearchProvider<
|
|
|
405
460
|
this.cmHandler.currentIndex === null &&
|
|
406
461
|
this.cmHandler.matches.length > 0
|
|
407
462
|
) {
|
|
408
|
-
await this.cmHandler.highlightNext(
|
|
463
|
+
await this.cmHandler.highlightNext({
|
|
464
|
+
from: 'selection',
|
|
465
|
+
select: false,
|
|
466
|
+
scroll: false
|
|
467
|
+
});
|
|
409
468
|
}
|
|
410
469
|
this.currentIndex = this.cmHandler.currentIndex;
|
|
411
470
|
} else {
|
|
@@ -452,9 +511,9 @@ interface IEffectValue {
|
|
|
452
511
|
*
|
|
453
512
|
* **NOTES:**
|
|
454
513
|
* - to retain the selection visibility `drawSelection` extension is needed.
|
|
455
|
-
* - highlighting starts from the cursor (if editor is focused
|
|
456
|
-
* or `
|
|
457
|
-
* otherwise.
|
|
514
|
+
* - highlighting starts from the cursor (if editor is focused and `from` is set
|
|
515
|
+
* to `'auto'`, cursor moved, or `from` argument is set to `'selection'` or
|
|
516
|
+
* `'selection-start'`), or from last "current" match otherwise.
|
|
458
517
|
* - `currentIndex` is the (readonly) source of truth for the current match.
|
|
459
518
|
*/
|
|
460
519
|
export class CodeMirrorSearchHighlighter {
|
|
@@ -495,6 +554,8 @@ export class CodeMirrorSearchHighlighter {
|
|
|
495
554
|
if (ef.is(this._highlightEffect)) {
|
|
496
555
|
const e = ef as StateEffect<IEffectValue>;
|
|
497
556
|
if (e.value.matches.length) {
|
|
557
|
+
// Note: nesting will vary; sometimes `.cm-searching` will be
|
|
558
|
+
// inside `.jp-current-match`, sometime the other way round.
|
|
498
559
|
highlights = highlights.update({
|
|
499
560
|
add: e.value.matches.map(m =>
|
|
500
561
|
this._highlightMark.range(
|
|
@@ -525,6 +586,13 @@ export class CodeMirrorSearchHighlighter {
|
|
|
525
586
|
},
|
|
526
587
|
provide: f => EditorView.decorations.from(f)
|
|
527
588
|
});
|
|
589
|
+
|
|
590
|
+
this._domEventHandlers = EditorView.domEventHandlers({
|
|
591
|
+
focus: () => {
|
|
592
|
+
// Set cursor on active match when editor gets focused.
|
|
593
|
+
this._selectCurrentMatch();
|
|
594
|
+
}
|
|
595
|
+
});
|
|
528
596
|
}
|
|
529
597
|
|
|
530
598
|
/**
|
|
@@ -548,11 +616,22 @@ export class CodeMirrorSearchHighlighter {
|
|
|
548
616
|
) {
|
|
549
617
|
this._currentIndex = this._matches.length > 0 ? 0 : null;
|
|
550
618
|
}
|
|
551
|
-
this._highlightCurrentMatch(
|
|
619
|
+
this._highlightCurrentMatch({ select: false });
|
|
552
620
|
}
|
|
553
621
|
|
|
554
622
|
private _current: ISearchMatch | null = null;
|
|
555
623
|
|
|
624
|
+
/**
|
|
625
|
+
* Whether the cursor/selection should not be modified.
|
|
626
|
+
*/
|
|
627
|
+
get protectSelection(): boolean {
|
|
628
|
+
return this._protectSelection;
|
|
629
|
+
}
|
|
630
|
+
set protectSelection(v: boolean) {
|
|
631
|
+
this._protectSelection = v;
|
|
632
|
+
}
|
|
633
|
+
private _protectSelection: boolean;
|
|
634
|
+
|
|
556
635
|
/**
|
|
557
636
|
* Clear all highlighted matches
|
|
558
637
|
*/
|
|
@@ -583,11 +662,10 @@ export class CodeMirrorSearchHighlighter {
|
|
|
583
662
|
* @returns The next match if available
|
|
584
663
|
*/
|
|
585
664
|
highlightNext(
|
|
586
|
-
|
|
587
|
-
doNotModifySelection = false
|
|
665
|
+
options?: IHighlightAdjacentMatchOptions
|
|
588
666
|
): Promise<ISearchMatch | undefined> {
|
|
589
|
-
this._currentIndex = this._findNext(false,
|
|
590
|
-
this._highlightCurrentMatch(
|
|
667
|
+
this._currentIndex = this._findNext(false, options?.from ?? 'auto');
|
|
668
|
+
this._highlightCurrentMatch(options);
|
|
591
669
|
return Promise.resolve(
|
|
592
670
|
this._currentIndex !== null
|
|
593
671
|
? this._matches[this._currentIndex]
|
|
@@ -600,9 +678,11 @@ export class CodeMirrorSearchHighlighter {
|
|
|
600
678
|
*
|
|
601
679
|
* @returns The previous match if available
|
|
602
680
|
*/
|
|
603
|
-
highlightPrevious(
|
|
604
|
-
|
|
605
|
-
|
|
681
|
+
highlightPrevious(
|
|
682
|
+
options?: IHighlightAdjacentMatchOptions
|
|
683
|
+
): Promise<ISearchMatch | undefined> {
|
|
684
|
+
this._currentIndex = this._findNext(true, options?.from ?? 'auto');
|
|
685
|
+
this._highlightCurrentMatch(options);
|
|
606
686
|
return Promise.resolve(
|
|
607
687
|
this._currentIndex !== null
|
|
608
688
|
? this._matches[this._currentIndex]
|
|
@@ -623,11 +703,24 @@ export class CodeMirrorSearchHighlighter {
|
|
|
623
703
|
if (this._currentIndex !== null) {
|
|
624
704
|
this._highlightCurrentMatch();
|
|
625
705
|
}
|
|
706
|
+
this._cm.editor.dispatch({
|
|
707
|
+
effects: StateEffect.appendConfig.of(this._domEventHandlers)
|
|
708
|
+
});
|
|
626
709
|
this._refresh();
|
|
627
710
|
}
|
|
628
711
|
}
|
|
629
712
|
|
|
630
|
-
private _selectCurrentMatch(): void {
|
|
713
|
+
private _selectCurrentMatch(scroll = true): void {
|
|
714
|
+
// This method has two responsibilities:
|
|
715
|
+
// 1) Scroll the current match into the view - useful for long lines,
|
|
716
|
+
// and file editors with more lines that fit on the screen
|
|
717
|
+
// 2) When user has focus on the editor (not search box) and presses
|
|
718
|
+
// ctrl + g/ctrl + shift + g to jump to next match they want their
|
|
719
|
+
// cursor to jump too.
|
|
720
|
+
// We execute (1) and (2) together as CodeMirror has a special code path
|
|
721
|
+
// to handle both in a single dispatch.
|
|
722
|
+
// The (2) case is inapplicable to search in selection mode, as it would
|
|
723
|
+
// invalidate the query selection, so in that case we only execute (1).
|
|
631
724
|
const match = this._current;
|
|
632
725
|
if (!match) {
|
|
633
726
|
return;
|
|
@@ -635,24 +728,35 @@ export class CodeMirrorSearchHighlighter {
|
|
|
635
728
|
if (!this._cm) {
|
|
636
729
|
return;
|
|
637
730
|
}
|
|
638
|
-
const selection = this._cm.editor.state.selection.main;
|
|
639
|
-
if (
|
|
640
|
-
selection.from === match.position &&
|
|
641
|
-
selection.to === match.position + match.text.length
|
|
642
|
-
) {
|
|
643
|
-
return;
|
|
644
|
-
}
|
|
645
731
|
const cursor = {
|
|
646
732
|
anchor: match.position,
|
|
647
733
|
head: match.position + match.text.length
|
|
648
734
|
};
|
|
649
|
-
this._cm.editor.
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
735
|
+
const selection = this._cm.editor.state.selection.main;
|
|
736
|
+
if (
|
|
737
|
+
(selection.from === match.position &&
|
|
738
|
+
selection.to === match.position + match.text.length) ||
|
|
739
|
+
this._protectSelection
|
|
740
|
+
) {
|
|
741
|
+
// Correct selection is already set or search is restricted to selection:
|
|
742
|
+
// scroll without changing the selection.
|
|
743
|
+
if (scroll) {
|
|
744
|
+
this._cm.editor.dispatch({
|
|
745
|
+
effects: EditorView.scrollIntoView(
|
|
746
|
+
EditorSelection.range(cursor.anchor, cursor.head)
|
|
747
|
+
)
|
|
748
|
+
});
|
|
749
|
+
return;
|
|
750
|
+
}
|
|
751
|
+
} else {
|
|
752
|
+
this._cm.editor.dispatch({
|
|
753
|
+
selection: cursor,
|
|
754
|
+
scrollIntoView: scroll
|
|
755
|
+
});
|
|
756
|
+
}
|
|
653
757
|
}
|
|
654
758
|
|
|
655
|
-
private _highlightCurrentMatch(
|
|
759
|
+
private _highlightCurrentMatch(options?: IHighlightMatchOptions): void {
|
|
656
760
|
if (!this._cm) {
|
|
657
761
|
// no-op
|
|
658
762
|
return;
|
|
@@ -662,12 +766,14 @@ export class CodeMirrorSearchHighlighter {
|
|
|
662
766
|
if (this._currentIndex !== null) {
|
|
663
767
|
const match = this.matches[this._currentIndex];
|
|
664
768
|
this._current = match;
|
|
665
|
-
//
|
|
666
|
-
|
|
769
|
+
// We do not change selection nor scroll if:
|
|
770
|
+
// - user is selecting text,
|
|
771
|
+
// - document was modified
|
|
772
|
+
if (options?.select ?? true) {
|
|
667
773
|
if (this._cm.hasFocus()) {
|
|
668
774
|
// If editor is focused we actually set the cursor on the match.
|
|
669
|
-
this._selectCurrentMatch();
|
|
670
|
-
} else {
|
|
775
|
+
this._selectCurrentMatch(options?.scroll ?? true);
|
|
776
|
+
} else if (options?.scroll ?? true) {
|
|
671
777
|
// otherwise we just scroll to preserve the selection.
|
|
672
778
|
this._cm.editor.dispatch({
|
|
673
779
|
effects: EditorView.scrollIntoView(match.position)
|
|
@@ -694,27 +800,28 @@ export class CodeMirrorSearchHighlighter {
|
|
|
694
800
|
|
|
695
801
|
if (!this._cm!.state.field(this._highlightField, false)) {
|
|
696
802
|
effects.push(StateEffect.appendConfig.of([this._highlightField]));
|
|
697
|
-
// set cursor on active match when editor gets focused
|
|
698
|
-
const focusExtension = EditorView.domEventHandlers({
|
|
699
|
-
focus: () => {
|
|
700
|
-
this._selectCurrentMatch();
|
|
701
|
-
}
|
|
702
|
-
});
|
|
703
|
-
effects.push(StateEffect.appendConfig.of([focusExtension]));
|
|
704
803
|
}
|
|
705
804
|
this._cm!.editor.dispatch({ effects });
|
|
706
805
|
}
|
|
707
806
|
|
|
708
|
-
private _findNext(
|
|
807
|
+
private _findNext(
|
|
808
|
+
reverse: boolean,
|
|
809
|
+
from: SearchStartAnchor = 'auto'
|
|
810
|
+
): number | null {
|
|
709
811
|
if (this._matches.length === 0) {
|
|
710
812
|
// No-op
|
|
711
813
|
return null;
|
|
712
814
|
}
|
|
713
815
|
|
|
714
816
|
let lastPosition = 0;
|
|
715
|
-
if (this._cm!.hasFocus() ||
|
|
817
|
+
if ((from === 'auto' && this._cm!.hasFocus()) || from === 'selection') {
|
|
716
818
|
const cursor = this._cm!.state.selection.main;
|
|
717
819
|
lastPosition = reverse ? cursor.anchor : cursor.head;
|
|
820
|
+
} else if (from === 'selection-start') {
|
|
821
|
+
const cursor = this._cm!.state.selection.main;
|
|
822
|
+
lastPosition = Math.min(cursor.anchor, cursor.head);
|
|
823
|
+
} else if (from === 'start') {
|
|
824
|
+
lastPosition = 0;
|
|
718
825
|
} else if (this._current) {
|
|
719
826
|
lastPosition = reverse
|
|
720
827
|
? this._current.position
|
|
@@ -757,6 +864,7 @@ export class CodeMirrorSearchHighlighter {
|
|
|
757
864
|
private _highlightMark: Decoration;
|
|
758
865
|
private _currentMark: Decoration;
|
|
759
866
|
private _highlightField: StateField<DecorationSet>;
|
|
867
|
+
private _domEventHandlers: Extension;
|
|
760
868
|
}
|
|
761
869
|
|
|
762
870
|
/**
|
package/style/base.css
CHANGED
|
@@ -59,24 +59,28 @@
|
|
|
59
59
|
|
|
60
60
|
.cm-searching,
|
|
61
61
|
.cm-searching span {
|
|
62
|
+
/* `.cm-searching span`: we need to override syntax highlighting */
|
|
62
63
|
background-color: var(--jp-search-unselected-match-background-color);
|
|
63
64
|
color: var(--jp-search-unselected-match-color);
|
|
64
65
|
}
|
|
65
66
|
|
|
66
|
-
.cm-
|
|
67
|
-
.cm-
|
|
67
|
+
.cm-searching::selection,
|
|
68
|
+
.cm-searching span::selection {
|
|
68
69
|
background-color: var(--jp-search-unselected-match-background-color);
|
|
69
70
|
color: var(--jp-search-unselected-match-color);
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
.jp-current-match .cm-searching,
|
|
73
|
-
.jp-current-match .cm-searching span
|
|
73
|
+
.jp-current-match > .cm-searching,
|
|
74
|
+
.jp-current-match > .cm-searching span,
|
|
75
|
+
.cm-searching > .jp-current-match,
|
|
76
|
+
.cm-searching > .jp-current-match span {
|
|
74
77
|
background-color: var(--jp-search-selected-match-background-color);
|
|
75
78
|
color: var(--jp-search-selected-match-color);
|
|
76
79
|
}
|
|
77
80
|
|
|
78
|
-
.
|
|
79
|
-
.cm-
|
|
81
|
+
.jp-current-match > .cm-searching::selection,
|
|
82
|
+
.cm-searching > .jp-current-match::selection,
|
|
83
|
+
.jp-current-match > .cm-searching span::selection {
|
|
80
84
|
background-color: var(--jp-search-selected-match-background-color);
|
|
81
85
|
color: var(--jp-search-selected-match-color);
|
|
82
86
|
}
|