Microsoft/monaco-editor
View on GitHub[Bug] Returning true from the callback registered with registerEditorOpener could lead to undesirable highlighting
Open
#4008 opened on Jun 6, 2023
bughelp wantedtypescript
Description
Reproducible in vscode.dev or in VS Code Desktop?
- Not reproducible in vscode.dev or VS Code Desktop
Reproducible in the monaco editor playground?
- Not reproducible in the monaco editor playground
Monaco Editor Playground Link
Monaco Editor Playground Code
// Add additional d.ts files to the JavaScript language service and change.
// Also change the default compilation options.
// The sample below shows how a class Facts is declared and introduced
// to the system and how the compiler is told to use ES6 (target=2).
// validation settings
monaco.languages.typescript.javascriptDefaults.setDiagnosticsOptions({
noSemanticValidation: true,
noSyntaxValidation: false,
});
// compiler options
monaco.languages.typescript.javascriptDefaults.setCompilerOptions({
target: monaco.languages.typescript.ScriptTarget.ES2015,
allowNonTsExtensions: true,
});
// extra libraries
var libSource = [
"declare class Facts {",
" /**",
" * Returns the next fact",
" */",
" static next():string",
"}",
].join("\n");
var libUri = "ts:filename/facts.d.ts";
monaco.languages.typescript.javascriptDefaults.addExtraLib(libSource, libUri);
// When resolving definitions and references, the editor will try to use created models.
// Creating a model for the library allows "peek definition/references" commands to work with the library.
monaco.editor.createModel(libSource, "typescript", monaco.Uri.parse(libUri));
var jsCode = [
'"use strict";',
"",
"class Chuck {",
" greet() {",
" return Facts.next();",
" }",
"}",
].join("\n");
monaco.editor.registerEditorOpener({
async openCodeEditor(
source,
resource,
selectionOrPosition,
) {
return true;
}
});
monaco.editor.create(document.getElementById("container"), {
value: jsCode,
language: "javascript",
});
Reproduction Steps
- Open playground via attached link
- Cmd+click (ctrl+click) on the word "next" in the rendered editor
Actual (Problematic) Behavior
You should see some misplaced highlighting
Expected Behavior
No highlighting
Additional Context
I believe that the problem is here https://github.com/microsoft/vscode/blob/3da8c69a18ed0981f52e6f68ca6f8c1c19564179/src/vs/editor/contrib/gotoSymbol/browser/goToCommands.ts#LL229C19-L229C19 There should be more strict condition as we should highlight only if we have new model open/visible in the editor