🎉 initiate project *astro_rewrite*
This commit is contained in:
parent
ffd4d5e86c
commit
2ba37bfbe3
8658 changed files with 2268794 additions and 2538 deletions
90
node_modules/@astrojs/language-server/dist/plugins/astro/AstroPlugin.js
generated
vendored
Normal file
90
node_modules/@astrojs/language-server/dist/plugins/astro/AstroPlugin.js
generated
vendored
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.AstroPlugin = void 0;
|
||||
const vscode_languageserver_1 = require("vscode-languageserver");
|
||||
const importPackage_1 = require("../../importPackage");
|
||||
const CompletionsProvider_1 = require("./features/CompletionsProvider");
|
||||
const DiagnosticsProvider_1 = require("./features/DiagnosticsProvider");
|
||||
class AstroPlugin {
|
||||
constructor(configManager, languageServiceManager) {
|
||||
this.__name = 'astro';
|
||||
this.configManager = configManager;
|
||||
this.languageServiceManager = languageServiceManager;
|
||||
this.completionProvider = new CompletionsProvider_1.CompletionsProviderImpl(this.languageServiceManager);
|
||||
this.diagnosticsProvider = new DiagnosticsProvider_1.DiagnosticsProviderImpl(this.languageServiceManager);
|
||||
}
|
||||
async getCompletions(document, position, completionContext) {
|
||||
const completions = this.completionProvider.getCompletions(document, position, completionContext);
|
||||
return completions;
|
||||
}
|
||||
async getDiagnostics(document) {
|
||||
return await this.diagnosticsProvider.getDiagnostics(document);
|
||||
}
|
||||
async formatDocument(document, options) {
|
||||
const filePath = document.getFilePath();
|
||||
if (!filePath) {
|
||||
return [];
|
||||
}
|
||||
const prettier = (0, importPackage_1.importPrettier)(filePath);
|
||||
const prettierConfig = (await prettier.resolveConfig(filePath, { editorconfig: true, useCache: false })) ?? {};
|
||||
const prettierVSConfig = await this.configManager.getPrettierVSConfig(document);
|
||||
const editorFormatConfig = options !== undefined // We need to check for options existing here because some editors might not have it
|
||||
? {
|
||||
tabWidth: options.tabSize,
|
||||
useTabs: !options.insertSpaces,
|
||||
}
|
||||
: {};
|
||||
// Return a config with the following cascade:
|
||||
// - Prettier config file should always win if it exists, if it doesn't:
|
||||
// - Prettier config from the VS Code extension is used, if it doesn't exist:
|
||||
// - Use the editor's basic configuration settings
|
||||
const resultConfig = returnObjectIfHasKeys(prettierConfig) || returnObjectIfHasKeys(prettierVSConfig) || editorFormatConfig;
|
||||
const fileInfo = await prettier.getFileInfo(filePath, { ignorePath: '.prettierignore' });
|
||||
if (fileInfo.ignored) {
|
||||
return [];
|
||||
}
|
||||
const result = prettier.format(document.getText(), {
|
||||
...resultConfig,
|
||||
plugins: [...getAstroPrettierPlugin(), ...(resultConfig.plugins ?? [])],
|
||||
parser: 'astro',
|
||||
});
|
||||
return document.getText() === result
|
||||
? []
|
||||
: [vscode_languageserver_1.TextEdit.replace(vscode_languageserver_1.Range.create(document.positionAt(0), document.positionAt(document.getTextLength())), result)];
|
||||
function getAstroPrettierPlugin() {
|
||||
const hasPluginLoadedAlready = prettier.getSupportInfo().languages.some((l) => l.name === 'astro');
|
||||
return hasPluginLoadedAlready ? [] : [(0, importPackage_1.getPrettierPluginPath)(filePath)];
|
||||
}
|
||||
}
|
||||
getFoldingRanges(document) {
|
||||
const foldingRanges = [];
|
||||
const { frontmatter } = document.astroMeta;
|
||||
// Currently editing frontmatter, don't fold
|
||||
if (frontmatter.state !== 'closed')
|
||||
return foldingRanges;
|
||||
// The way folding ranges work is by folding anything between the starting position and the ending one, as such
|
||||
// the start in this case should be after the frontmatter start (after the starting ---) until the last character
|
||||
// of the last line of the frontmatter before its ending (before the closing ---)
|
||||
// ---
|
||||
// ^ -- start
|
||||
// console.log("Astro")
|
||||
// --- ^ -- end
|
||||
const start = document.positionAt(frontmatter.startOffset + 3);
|
||||
const end = document.positionAt(frontmatter.endOffset - 1);
|
||||
return [
|
||||
{
|
||||
startLine: start.line,
|
||||
startCharacter: start.character,
|
||||
endLine: end.line,
|
||||
endCharacter: end.character,
|
||||
kind: vscode_languageserver_1.FoldingRangeKind.Imports,
|
||||
},
|
||||
];
|
||||
}
|
||||
}
|
||||
exports.AstroPlugin = AstroPlugin;
|
||||
function returnObjectIfHasKeys(obj) {
|
||||
if (Object.keys(obj || {}).length > 0) {
|
||||
return obj;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue