summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tools/astro-languageserver/package.json1
-rw-r--r--tools/astro-languageserver/src/plugins/typescript/astro-sys.ts2
-rw-r--r--tools/astro-languageserver/src/plugins/typescript/features/CompletionsProvider.ts13
-rw-r--r--tools/astro-languageserver/src/plugins/typescript/languageService.ts17
4 files changed, 21 insertions, 12 deletions
diff --git a/tools/astro-languageserver/package.json b/tools/astro-languageserver/package.json
index 11f8b3a88..559bb94a5 100644
--- a/tools/astro-languageserver/package.json
+++ b/tools/astro-languageserver/package.json
@@ -19,6 +19,7 @@
"astro-scripts": "0.0.1"
},
"dependencies": {
+ "typescript": "^4.3.1-rc",
"vscode-emmet-helper": "2.1.2",
"vscode-html-languageservice": "^3.0.3",
"vscode-languageserver": "6.1.1",
diff --git a/tools/astro-languageserver/src/plugins/typescript/astro-sys.ts b/tools/astro-languageserver/src/plugins/typescript/astro-sys.ts
index 36d009eb6..57cd3b497 100644
--- a/tools/astro-languageserver/src/plugins/typescript/astro-sys.ts
+++ b/tools/astro-languageserver/src/plugins/typescript/astro-sys.ts
@@ -22,7 +22,7 @@ export function createAstroSys(getSnapshot: (fileName: string) => DocumentSnapsh
return snapshot.getFullText();
},
readDirectory(path, extensions, exclude, include, depth) {
- const extensionsWithAstro = (extensions ?? []).concat(...['.astro']);
+ const extensionsWithAstro = (extensions ?? []).concat(...['.astro', '.svelte', '.vue']);
const result = ts.sys.readDirectory(path, extensionsWithAstro, exclude, include, depth);
return result;
},
diff --git a/tools/astro-languageserver/src/plugins/typescript/features/CompletionsProvider.ts b/tools/astro-languageserver/src/plugins/typescript/features/CompletionsProvider.ts
index cb4826af2..b04bfd84d 100644
--- a/tools/astro-languageserver/src/plugins/typescript/features/CompletionsProvider.ts
+++ b/tools/astro-languageserver/src/plugins/typescript/features/CompletionsProvider.ts
@@ -26,12 +26,11 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
const fragment = await tsDoc.getFragment();
const offset = document.offsetAt(position);
- const entries =
- lang.getCompletionsAtPosition(fragment.filePath, offset, {
- importModuleSpecifierPreference: 'relative',
- importModuleSpecifierEnding: 'auto',
- quotePreference: 'single',
- })?.entries || [];
+ const entries = lang.getCompletionsAtPosition(fragment.filePath, offset, {
+ importModuleSpecifierPreference: 'relative',
+ importModuleSpecifierEnding: 'js',
+ quotePreference: 'single',
+ })?.entries || [];
const completionItems = entries
.map((entry: ts.CompletionEntry) => this.toCompletionItem(fragment, entry, document.uri, position, new Set()))
@@ -55,7 +54,7 @@ export class CompletionsProviderImpl implements CompletionsProvider<CompletionEn
}
const fragment = await tsDoc.getFragment();
- const detail = lang.getCompletionEntryDetails(filePath, fragment.offsetAt(comp.position), comp.name, {}, comp.source, {});
+ const detail = lang.getCompletionEntryDetails(filePath, fragment.offsetAt(comp.position), comp.name, {}, comp.source, {}, undefined);
if (detail) {
const { detail: itemDetail, documentation: itemDocumentation } = this.getCompletionDocument(detail);
diff --git a/tools/astro-languageserver/src/plugins/typescript/languageService.ts b/tools/astro-languageserver/src/plugins/typescript/languageService.ts
index 8406b8ee0..4cf11a1fa 100644
--- a/tools/astro-languageserver/src/plugins/typescript/languageService.ts
+++ b/tools/astro-languageserver/src/plugins/typescript/languageService.ts
@@ -71,8 +71,12 @@ async function createLanguageService(tsconfigPath: string, workspaceRoot: string
]);
let projectVersion = 0;
- const snapshotManager = new SnapshotManager(project.fileNames, { exclude: ['node_modules', 'dist'], include: ['astro'] }, workspaceRoot || process.cwd());
+ const snapshotManager = new SnapshotManager(project.fileNames, {
+ exclude: ['node_modules', 'dist'],
+ include: ['src']
+ }, workspaceRoot || process.cwd());
+
const astroModuleLoader = createAstroModuleLoader(getScriptSnapshot, {});
const host: ts.LanguageServiceHost = {
@@ -93,10 +97,10 @@ async function createLanguageService(tsconfigPath: string, workspaceRoot: string
getProjectVersion: () => `${projectVersion}`,
getScriptFileNames: () => Array.from(new Set([...snapshotManager.getFileNames(), ...snapshotManager.getProjectFileNames()])),
getScriptSnapshot,
- getScriptVersion: (fileName: string) => getScriptSnapshot(fileName).version.toString(),
+ getScriptVersion: (fileName: string) => getScriptSnapshot(fileName).version.toString()
};
- const languageService = ts.createLanguageService(host);
+ const languageService: ts.LanguageService = ts.createLanguageService(host);
const languageServiceProxy = new Proxy(languageService, {
get(target, prop) {
return Reflect.get(target, prop);
@@ -111,6 +115,10 @@ async function createLanguageService(tsconfigPath: string, workspaceRoot: string
deleteDocument,
};
+ function onProjectUpdated() {
+ projectVersion++;
+ }
+
function deleteDocument(filePath: string) {
snapshotManager.delete(filePath);
}
@@ -131,6 +139,7 @@ async function createLanguageService(tsconfigPath: string, workspaceRoot: string
const currentText = document ? document.getText() : null;
const snapshot = createDocumentSnapshot(filePath, currentText, docContext.createDocument);
snapshotManager.set(filePath, snapshot);
+ onProjectUpdated();
return snapshot;
}
@@ -161,7 +170,7 @@ function getDefaultJsConfig(): {
allowSyntheticDefaultImports: true,
allowJs: true,
},
- include: ['astro'],
+ include: ['src'],
};
}