Skip to content

Commit

Permalink
Re #27083. Find in selection should work even if the selection is a s…
Browse files Browse the repository at this point in the history
…ingle line.
  • Loading branch information
rebornix committed Sep 12, 2018
1 parent f9c292f commit 1f0afd6
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
8 changes: 6 additions & 2 deletions src/vs/editor/contrib/find/findModel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -179,8 +179,12 @@ export class FindModelBoundToEditorModel {
}
if (findScope !== null) {
if (findScope.startLineNumber !== findScope.endLineNumber) {
// multiline find scope => expand to line starts / ends
findScope = new Range(findScope.startLineNumber, 1, findScope.endLineNumber, this._editor.getModel().getLineMaxColumn(findScope.endLineNumber));
if (findScope.endColumn === 1) {
findScope = new Range(findScope.startLineNumber, 1, findScope.endLineNumber - 1, this._editor.getModel().getLineMaxColumn(findScope.endLineNumber - 1));
} else {
// multiline find scope => expand to line starts / ends
findScope = new Range(findScope.startLineNumber, 1, findScope.endLineNumber, this._editor.getModel().getLineMaxColumn(findScope.endLineNumber));
}
}
}

Expand Down
4 changes: 2 additions & 2 deletions src/vs/editor/contrib/find/findWidget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -610,7 +610,7 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas
if (this._toggleSelectionFind.checked) {
let selection = this._codeEditor.getSelection();
if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {
selection = selection.setEndPosition(selection.endLineNumber - 1, 1);
selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));
}
let currentMatch = this._state.currentMatch;
if (selection.startLineNumber !== selection.endLineNumber) {
Expand Down Expand Up @@ -806,7 +806,7 @@ export class FindWidget extends Widget implements IOverlayWidget, IHorizontalSas
if (this._toggleSelectionFind.checked) {
let selection = this._codeEditor.getSelection();
if (selection.endColumn === 1 && selection.endLineNumber > selection.startLineNumber) {
selection = selection.setEndPosition(selection.endLineNumber - 1, 1);
selection = selection.setEndPosition(selection.endLineNumber - 1, this._codeEditor.getModel().getLineMaxColumn(selection.endLineNumber - 1));
}
if (!selection.isEmpty()) {
this._state.change({ searchScope: selection }, true);
Expand Down
18 changes: 18 additions & 0 deletions src/vs/editor/contrib/find/test/findModel.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2031,4 +2031,22 @@ suite('FindModel', () => {
findModel.dispose();
findState.dispose();
});

findTest('issue #27083. search scope works even if it is a single line', (editor, cursor) => {
let findState = new FindReplaceState();
findState.change({ searchString: 'hello', wholeWord: true, searchScope: new Range(7, 1, 8, 1) }, false);
let findModel = new FindModelBoundToEditorModel(editor, findState);

assertFindState(
editor,
[1, 1, 1, 1],
null,
[
[7, 14, 7, 19]
]
);

findModel.dispose();
findState.dispose();
});
});

0 comments on commit 1f0afd6

Please sign in to comment.