diff --git a/package.json b/package.json index 85f2eda78..ceb1cf188 100644 --- a/package.json +++ b/package.json @@ -43,11 +43,11 @@ "contributes": { "customEditors": [ { - "viewType": "godotDocs", - "displayName": "godotDocs", + "viewType": "gddoc", + "displayName": "Godot Documentation", "selector": [ { - "filenamePattern": "*.godotDocs" + "filenamePattern": "*.gddoc" } ] } diff --git a/src/lsp/DefinitionProvider.ts b/src/lsp/DefinitionProvider.ts index 9d6b8a127..9d6c0d261 100644 --- a/src/lsp/DefinitionProvider.ts +++ b/src/lsp/DefinitionProvider.ts @@ -22,18 +22,18 @@ export class DefinitionProvider implements vscode.DefinitionProvider { const key = `${document.uri},${position.line},${position.character - 1}`; target = this.data.get(key); } - log.debug("provideDefinition", key, target); if (!target) { return null; } + const parts = target.split("."); const uri = vscode.Uri.from({ - scheme: "godotDocs", - path: target.split(".").join("/") + ".godotDocs", + scheme: "gddoc", + path: parts[0] + ".gddoc", + fragment: parts[1], }); - log.debug("provideDefinition", uri); return new vscode.Location(uri, new vscode.Position(0, 0)); } } diff --git a/src/lsp/NativeDocumentManager.ts b/src/lsp/NativeDocumentManager.ts index f1e06e203..c65b14eb1 100644 --- a/src/lsp/NativeDocumentManager.ts +++ b/src/lsp/NativeDocumentManager.ts @@ -48,7 +48,7 @@ export class NativeDocumentManager extends EventEmitter implements vscode.Custom supportsMultipleEditorsPerDocument: true, }; context.subscriptions.push( - vscode.window.registerCustomEditorProvider("godotDocs", this, options), + vscode.window.registerCustomEditorProvider("gddoc", this, options), ); } @@ -57,7 +57,10 @@ export class NativeDocumentManager extends EventEmitter implements vscode.Custom } resolveCustomEditor(document: vscode.CustomDocument, webviewPanel: vscode.WebviewPanel, token: vscode.CancellationToken): void { - const symbol = document.uri.path.split(".")[0].replace("/", "."); + let symbol = document.uri.path.split(".")[0]; + if (document.uri.fragment) { + symbol += `.${document.uri.fragment}`; + } this.webViews.set(symbol, webviewPanel); webviewPanel.title = symbol; @@ -155,12 +158,14 @@ export class NativeDocumentManager extends EventEmitter implements vscode.Custom if (this.webViews.has(key)) { panel = this.webViews.get(key); this.webViews.delete(key); - panel.webview.viewColumn = this.get_new_native_symbol_column(); } else { panel = vscode.window.createWebviewPanel( - "doc", - symbol.name, - this.get_new_native_symbol_column(), + "gddoc", + symbol.name + ".gddoc", + { + viewColumn: this.get_new_native_symbol_column(), + preserveFocus: true, + }, { enableScripts: true, retainContextWhenHidden: true,