diff options
Diffstat (limited to 'elpa/lsp-mode-20220505.630/lsp-svelte.el')
-rw-r--r-- | elpa/lsp-mode-20220505.630/lsp-svelte.el | 307 |
1 files changed, 307 insertions, 0 deletions
diff --git a/elpa/lsp-mode-20220505.630/lsp-svelte.el b/elpa/lsp-mode-20220505.630/lsp-svelte.el new file mode 100644 index 0000000..723b8fc --- /dev/null +++ b/elpa/lsp-mode-20220505.630/lsp-svelte.el @@ -0,0 +1,307 @@ +;;; lsp-svelte.el --- LSP Svelte integration -*- lexical-binding: t; -*- + +;; Copyright (C) 2020 Stepan Lusnikov + +;; Author: Stepan Lusnikov <endenwer@gmail.com> +;; Keywords: lsp svelte + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <https://www.gnu.org/licenses/>. + +;;; Commentary: + +;; LSP client for Svelte + +;;; Code: + +(require 'lsp-mode) + +(defgroup lsp-svelte nil + "LSP support for Svelte." + :group 'lsp-mode + :link '(url-link + "https://github.com/sveltejs/language-tools")) + +(lsp-dependency 'svelte-language-server + '(:system "svelteserver") + '(:npm :package "svelte-language-server" + :path "svelteserver")) + +(defcustom lsp-svelte-plugin-typescript-enable t + "Enable the TypeScript plugin" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-diagnostics-enable t + "Enable diagnostic messages for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-hover-enable t + "Enable hover info for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-document-symbols-enable t + "Enable document symbols for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-completions-enable t + "Enable completions for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-find-references-enable t + "Enable find-references for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-definitions-enable t + "Enable go to definition for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-code-actions-enable t + "Enable code actions for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-selection-range-enable t + "Enable selection range for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-signature-help-enable t + "Enable signature help (parameter hints) for TypeScript" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-typescript-rename-enable t + "Enable rename functionality for JS/TS variables inside Svelte files" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-enable t + "Enable the CSS plugin" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-globals "" + "Which css files should be checked for global variables +(`--global-var: value;`). + +These variables are added to the css completions. String of comma-separated +file paths or globs relative to workspace root." + :type 'string + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-diagnostics-enable t + "Enable diagnostic messages for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-hover-enable t + "Enable hover info for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-completions-enable t + "Enable auto completions for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-completions-emmet t + "Enable emmet auto completions for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-document-colors-enable t + "Enable document colors for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-color-presentations-enable t + "Enable color picker for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-document-symbols-enable t + "Enable document symbols for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-css-selection-range-enable t + "Enable selection range for CSS" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-html-enable t + "Enable the HTML plugin" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-html-hover-enable t + "Enable hover info for HTML" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-html-completions-enable t + "Enable auto completions for HTML" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-html-completions-emmet t + "Enable emmet auto completions for HTML" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-html-tag-complete-enable t + "Enable HTML tag auto closing" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-html-document-symbols-enable t + "Enable document symbols for HTML" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-enable t + "Enable the Svelte plugin" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-diagnostics-enable t + "Enable diagnostic messages for Svelte" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-compiler-warnings nil + "Svelte compiler warning codes to ignore or to treat as errors. +Example: '((css-unused-selector . ignore) (unused-export-let . error))" + :type '(alist :key-type (symbol :tag "Warning code") + :value-type (choice + (const :tag "Ignore" ignore) + (const :tag "Treat as error" error))) + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-format-enable t + "Enable formatting for Svelte (includes css & js)" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-completions-enable t + "Enable auto completions for Svelte" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-hover-enable t + "Enable hover information for Svelte" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-code-actions-enable t + "Enable Code Actions for Svelte" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-selection-range-enable t + "Enable selection range for Svelte" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(defcustom lsp-svelte-plugin-svelte-rename-enable t + "Enable rename/move Svelte files functionality" + :type 'boolean + :package-version '(lsp-mode . "8.0.0")) + +(lsp-register-custom-settings + '(("svelte.plugin.svelte.rename.enable" lsp-svelte-plugin-svelte-rename-enable t) + ("svelte.plugin.svelte.selectionRange.enable" lsp-svelte-plugin-svelte-selection-range-enable t) + ("svelte.plugin.svelte.codeActions.enable" lsp-svelte-plugin-svelte-code-actions-enable t) + ("svelte.plugin.svelte.hover.enable" lsp-svelte-plugin-svelte-hover-enable t) + ("svelte.plugin.svelte.completions.enable" lsp-svelte-plugin-svelte-completions-enable t) + ("svelte.plugin.svelte.format.enable" lsp-svelte-plugin-svelte-format-enable t) + ("svelte.plugin.svelte.compilerWarnings" lsp-svelte-plugin-svelte-compiler-warnings) + ("svelte.plugin.svelte.diagnostics.enable" lsp-svelte-plugin-svelte-diagnostics-enable t) + ("svelte.plugin.svelte.enable" lsp-svelte-plugin-svelte-enable t) + ("svelte.plugin.html.documentSymbols.enable" lsp-svelte-plugin-html-document-symbols-enable t) + ("svelte.plugin.html.tagComplete.enable" lsp-svelte-plugin-html-tag-complete-enable t) + ("svelte.plugin.html.completions.emmet" lsp-svelte-plugin-html-completions-emmet t) + ("svelte.plugin.html.completions.enable" lsp-svelte-plugin-html-completions-enable t) + ("svelte.plugin.html.hover.enable" lsp-svelte-plugin-html-hover-enable t) + ("svelte.plugin.html.enable" lsp-svelte-plugin-html-enable t) + ("svelte.plugin.css.selectionRange.enable" lsp-svelte-plugin-css-selection-range-enable t) + ("svelte.plugin.css.documentSymbols.enable" lsp-svelte-plugin-css-document-symbols-enable t) + ("svelte.plugin.css.colorPresentations.enable" lsp-svelte-plugin-css-color-presentations-enable t) + ("svelte.plugin.css.documentColors.enable" lsp-svelte-plugin-css-document-colors-enable t) + ("svelte.plugin.css.completions.emmet" lsp-svelte-plugin-css-completions-emmet t) + ("svelte.plugin.css.completions.enable" lsp-svelte-plugin-css-completions-enable t) + ("svelte.plugin.css.hover.enable" lsp-svelte-plugin-css-hover-enable t) + ("svelte.plugin.css.diagnostics.enable" lsp-svelte-plugin-css-diagnostics-enable t) + ("svelte.plugin.css.globals" lsp-svelte-plugin-css-globals) + ("svelte.plugin.css.enable" lsp-svelte-plugin-css-enable t) + ("svelte.plugin.typescript.rename.enable" lsp-svelte-plugin-typescript-rename-enable t) + ("svelte.plugin.typescript.signatureHelp.enable" lsp-svelte-plugin-typescript-signature-help-enable t) + ("svelte.plugin.typescript.selectionRange.enable" lsp-svelte-plugin-typescript-selection-range-enable t) + ("svelte.plugin.typescript.codeActions.enable" lsp-svelte-plugin-typescript-code-actions-enable t) + ("svelte.plugin.typescript.definitions.enable" lsp-svelte-plugin-typescript-definitions-enable t) + ("svelte.plugin.typescript.findReferences.enable" lsp-svelte-plugin-typescript-find-references-enable t) + ("svelte.plugin.typescript.completions.enable" lsp-svelte-plugin-typescript-completions-enable t) + ("svelte.plugin.typescript.documentSymbols.enable" lsp-svelte-plugin-typescript-document-symbols-enable t) + ("svelte.plugin.typescript.hover.enable" lsp-svelte-plugin-typescript-hover-enable t) + ("svelte.plugin.typescript.diagnostics.enable" lsp-svelte-plugin-typescript-diagnostics-enable t) + ("svelte.plugin.typescript.enable" lsp-svelte-plugin-typescript-enable t))) + +(lsp-register-client + (make-lsp-client + :new-connection (lsp-stdio-connection + (lambda () + `(,(lsp-package-path 'svelte-language-server) + "--stdio"))) + :activation-fn (lambda (file-name _mode) + (string= (f-ext file-name) + "svelte")) + :initialization-options + (lambda () + (list :config (ht-get* (lsp-configuration-section "svelte.plugin") + "svelte" + "plugin") + :prettierConfig (lsp-configuration-section "prettier") + :emmetConfig (lsp-configuration-section "emmet") + :typescriptConfig: (list :typescript (lsp-configuration-section "typescript") + :javascript (lsp-configuration-section "javascript")) + :dontFilterIncompleteCompletions t)) + :server-id 'svelte-ls + :download-server-fn (lambda (_client callback error-callback _update?) + (lsp-package-ensure 'svelte-language-server callback error-callback)) + :initialized-fn + (lambda (workspace) + (with-lsp-workspace workspace + (lsp--set-configuration + (ht-merge (lsp-configuration-section "svelte") + (lsp-configuration-section "javascript") + (lsp-configuration-section "typescript"))) + (lsp--server-register-capability + (lsp-make-registration + :id "js/ts/id" + :method "workspace/didChangeWatchedFiles" + :register-options? (lsp-make-did-change-watched-files-registration-options + :watchers + (vector (lsp-make-file-system-watcher :glob-pattern "**/*.js") + (lsp-make-file-system-watcher :glob-pattern "**/*.ts"))))))))) + +(lsp-consistency-check lsp-svelte) + +(provide 'lsp-svelte) +;;; lsp-svelte.el ends here |