mirror of
https://github.com/microsoft/vscode.git
synced 2026-04-25 02:58:56 +01:00
Only apply TS Dot Accept Suggestion if Previous Character is a valid identifier (#18063)
* Only apply TS Dot Accept Suggestion if previous character is a valid identifier char Fixes #17825 Fixes #17770 Fixes #17584 **Bug** When typing two or more `.` in a row, we end up unexpectedly accepting suggestions in TS files. This is caused by the custom keybinding that ts registers for `.`. **Fix** Only accept the suggestion on `.` if the previous character is a valid identifier character. * Move title to nls
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
* ------------------------------------------------------------------------------------------ */
|
||||
'use strict';
|
||||
|
||||
import { env, languages, commands, workspace, window, Uri, ExtensionContext, Memento, IndentAction, Diagnostic, DiagnosticCollection, Range, DocumentFilter, Disposable } from 'vscode';
|
||||
import { env, languages, commands, workspace, window, Uri, ExtensionContext, Memento, IndentAction, Diagnostic, DiagnosticCollection, Range, DocumentFilter, Disposable, Position } from 'vscode';
|
||||
|
||||
// This must be the first statement otherwise modules might got loaded with
|
||||
// the wrong locale.
|
||||
@@ -83,6 +83,18 @@ export function activate(context: ExtensionContext): void {
|
||||
clientHost.reloadProjects();
|
||||
}));
|
||||
|
||||
context.subscriptions.push(commands.registerCommand('typescript.tryAcceptSelectedSuggestionOnDot', () => {
|
||||
// When typing a dot, make sure the character before the dot is a valid indentifier character.
|
||||
const editor = window.activeTextEditor;
|
||||
if (editor && editor.selection && editor.selection.start.character >= 1) {
|
||||
const preText = editor.document.getText(new Range(new Position(editor.selection.start.line, 0), new Position(editor.selection.start.line, editor.selection.start.character - 1)));
|
||||
if (preText.match(/[a-z_$]\s*$/ig)) {
|
||||
return commands.executeCommand('acceptSelectedSuggestion');
|
||||
}
|
||||
}
|
||||
return commands.executeCommand('type', { text: '.' });
|
||||
}));
|
||||
|
||||
window.onDidChangeActiveTextEditor(VersionStatus.showHideStatus, null, context.subscriptions);
|
||||
client.onReady().then(() => {
|
||||
context.subscriptions.push(ProjectStatus.create(client,
|
||||
|
||||
Reference in New Issue
Block a user