diff --git a/src/language/index.ts b/src/language/index.ts new file mode 100644 index 000000000..c0e118c53 --- /dev/null +++ b/src/language/index.ts @@ -0,0 +1,14 @@ +import { DocSymbolProvider } from './symbol-document' +import { ProjectSymbolProvider } from './symbol-project' +import { DefinitionProvider } from './definition' +import { FoldingProvider, WeaveFoldingProvider } from './folding' +import { SelectionRangeProvider } from './selection' + +export const language = { + docSymbol: new DocSymbolProvider(), + projectSymbol: new ProjectSymbolProvider(), + definition: new DefinitionProvider(), + folding: new FoldingProvider(), + weaveFolding: new WeaveFoldingProvider(), + selectionRage: new SelectionRangeProvider() +} diff --git a/src/lw.ts b/src/lw.ts index 83ec5db89..72cfd4775 100644 --- a/src/lw.ts +++ b/src/lw.ts @@ -9,6 +9,7 @@ import type { compile } from './compile' import type { preview, server, viewer } from './preview' import type { locate } from './locate' import type { completion } from './completion' +import type { language } from './language' import type { lint } from './lint' import type { outline } from './outline' import type { parse } from './parse' @@ -33,6 +34,7 @@ export const lw = { preview: {} as typeof preview, locate: {} as typeof locate, completion: {} as typeof completion, + language: {} as typeof language, lint: {} as typeof lint, outline: {} as typeof outline, extra: {} as typeof extra, diff --git a/src/main.ts b/src/main.ts index d502dc54d..7c6786399 100644 --- a/src/main.ts +++ b/src/main.ts @@ -40,12 +40,6 @@ lw.commands = commander log.initStatusBarItem() -import { DocSymbolProvider } from './language/symbol-document' -import { ProjectSymbolProvider } from './language/symbol-project' -import { DefinitionProvider } from './language/definition' -import { FoldingProvider, WeaveFoldingProvider } from './language/folding' -import { SelectionRangeProvider } from './language/selection' - export function activate(extensionContext: vscode.ExtensionContext) { void vscode.commands.executeCommand('setContext', 'latex-workshop:enabled', true) @@ -261,11 +255,11 @@ function registerProviders(extensionContext: vscode.ExtensionContext) { extensionContext.subscriptions.push( vscode.languages.registerHoverProvider(latexSelector, lw.preview.provider), - vscode.languages.registerDefinitionProvider(latexSelector, new DefinitionProvider()), - vscode.languages.registerDocumentSymbolProvider(latexSelector, new DocSymbolProvider()), - vscode.languages.registerDocumentSymbolProvider(bibtexSelector, new DocSymbolProvider()), - vscode.languages.registerDocumentSymbolProvider(selectDocumentsWithId(['doctex']), new DocSymbolProvider()), - vscode.languages.registerWorkspaceSymbolProvider(new ProjectSymbolProvider()) + vscode.languages.registerDefinitionProvider(latexSelector, lw.language.definition), + vscode.languages.registerDocumentSymbolProvider(latexSelector, lw.language.docSymbol), + vscode.languages.registerDocumentSymbolProvider(bibtexSelector, lw.language.docSymbol), + vscode.languages.registerDocumentSymbolProvider(selectDocumentsWithId(['doctex']), lw.language.docSymbol), + vscode.languages.registerWorkspaceSymbolProvider(lw.language.projectSymbol) ) extensionContext.subscriptions.push( @@ -311,13 +305,13 @@ function registerProviders(extensionContext: vscode.ExtensionContext) { extensionContext.subscriptions.push( vscode.languages.registerCodeActionsProvider(latexSelector, lw.lint.latex.actionprovider), - vscode.languages.registerFoldingRangeProvider(latexSelector, new FoldingProvider()), - vscode.languages.registerFoldingRangeProvider(weaveSelector, new WeaveFoldingProvider()) + vscode.languages.registerFoldingRangeProvider(latexSelector, lw.language.folding), + vscode.languages.registerFoldingRangeProvider(weaveSelector, lw.language.weaveFolding) ) const selectionLatex = configuration.get('selection.smart.latex.enabled', true) if (selectionLatex) { - extensionContext.subscriptions.push(vscode.languages.registerSelectionRangeProvider({language: 'latex'}, new SelectionRangeProvider())) + extensionContext.subscriptions.push(vscode.languages.registerSelectionRangeProvider({language: 'latex'}, lw.language.selectionRage)) } extensionContext.subscriptions.push(