aboutsummaryrefslogtreecommitdiffstats
path: root/elpa/lsp-mode-20220505.630/lsp-vetur.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/lsp-mode-20220505.630/lsp-vetur.el')
-rw-r--r--elpa/lsp-mode-20220505.630/lsp-vetur.el353
1 files changed, 353 insertions, 0 deletions
diff --git a/elpa/lsp-mode-20220505.630/lsp-vetur.el b/elpa/lsp-mode-20220505.630/lsp-vetur.el
new file mode 100644
index 0000000..f8d0afc
--- /dev/null
+++ b/elpa/lsp-mode-20220505.630/lsp-vetur.el
@@ -0,0 +1,353 @@
+;;; lsp-vetur.el --- vls configuration -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2019 Ivan Yonchovski
+
+;; Author: Ivan Yonchovski <yyoncho@gmail.com>
+;; Keywords:
+
+;; 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:
+
+;; VLS configuration
+
+;;; Code:
+
+(require 'lsp-mode)
+(require 'lsp-html)
+;; vls shares the same format configurations with ts-ls.
+(require 'lsp-javascript)
+
+(defgroup lsp-vetur nil
+ "LSP support for Vue, using the Vue Language Server."
+ :group 'lsp-mode
+ :link '(url-link "https://github.com/vuejs/vetur/tree/master/server")
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-ignore-project-warning nil
+ "Ignore projects without jsconfig.json or tsconfig.json warnings."
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "8.0.1"))
+
+(defcustom lsp-vetur-use-workspace-dependencies nil
+ "Use dependencies from workspace. Currently only for
+TypeScript."
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-completion-auto-import t
+ "Include completion for module export and auto import them"
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-completion-scaffold-snippet-sources
+ '((workspace . "(W)")
+ (user . "(U)")
+ (vetur . "(V)"))
+ "Where Vetur source Scaffold Snippets from and how to indicate them.
+- workspace: <WORKSPACE>/.vscode/vetur/snippets.
+- user: <USER-DATA-DIR>/User/snippets/vetur.
+- vetur: Bundled in Vetur.
+The source value can be a string \"(User)\" or an emoji \"✌\".
+Set a source to \"\" to disable it.
+"
+ :type 'alist
+ :group 'lsp-vetur
+ :link '(url-link "https://vuejs.github.io/vetur/guide/snippet.html")
+ :package-version '(lsp-mode. "8.0.1"))
+
+(defcustom lsp-vetur-completion-tag-casing "kebab"
+ "Casing conversion for tag completion"
+ :type '(choice
+ (const "initial")
+ (const "kebab"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-grammar-custom-blocks '((docs . "md") (i18n . "json"))
+ "Mapping from custom block tag name to language name. Used for
+ generating grammar to support syntax highlighting for custom
+ blocks."
+ :type 'alist
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-validation-template t
+ "Validate vue-html in <template> using eslint-plugin-vue"
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-language-features-code-actions t
+ "Enable/disable code actions."
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "8.0.0"))
+
+(defcustom lsp-vetur-validation-style t
+ "Validate css/scss/less/postcss in <style>"
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-validation-script t
+ "Validate js/ts in <script>"
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-enable t
+ "Enable/disable the Vetur document formatter."
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-options-tab-size 2
+ "Number of spaces per indentation level. Inherited by all formatters."
+ :type 'number
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-options-use-tabs nil
+ "Use tabs for indentation. Inherited by all formatters."
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-html "prettyhtml"
+ "Default formatter for <template> region"
+ :type '(choice
+ (const "none")
+ (const "prettyhtml")
+ (const "js-beautify-html")
+ (const "prettier"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-css "prettier"
+ "Default formatter for <style> region"
+ :type '(choice
+ (const "none")
+ (const "prettier"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-postcss "prettier"
+ "Default formatter for <style lang='postcss'> region"
+ :type '(choice
+ (const "none")
+ (const "prettier"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-scss "prettier"
+ "Default formatter for <style lang='scss'> region"
+ :type '(choice
+ (const "none")
+ (const "prettier"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-less "prettier"
+ "Default formatter for <style lang='less'> region"
+ :type '(choice
+ (const "none")
+ (const "prettier"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-stylus "stylus-supremacy"
+ "Default formatter for <style lang='stylus'> region"
+ :type '(choice
+ (const "none")
+ (const "stylus-supremacy"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-js "prettier"
+ "Default formatter for <script> region"
+ :type '(choice
+ (const "none")
+ (const "prettier")
+ (const "prettier-eslint")
+ (const "vscode-typescript"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-ts "prettier"
+ "Default formatter for <script> region"
+ :type '(choice
+ (const "none")
+ (const "prettier")
+ (const "vscode-typescript"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-default-formatter-options
+ '((js-beautify-html (wrap_attributes . "force-expand-multiline"))
+ (prettyhtml (printWidth . 100)
+ (singleQuote . :json-false)
+ (wrapAttributes . :json-false)
+ (sortAttributes . :json-false)))
+ "Options for all default formatters"
+ :type 'alist
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-style-initial-indent nil
+ "Whether to have initial indent for <style> region"
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-format-script-initial-indent nil
+ "Whether to have initial indent for <script> region"
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-trace-server "off"
+ "Traces the communication between VS Code and Vue Language Server."
+ :type '(choice
+ (const "off")
+ (const "messages")
+ (const "verbose"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(defcustom lsp-vetur-dev-vls-path ""
+ "The vls path for development"
+ :type 'string
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.3"))
+
+(defcustom lsp-vetur-dev-vls-port -1
+ "The vls port for development"
+ :type 'integer
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.3"))
+
+(defcustom lsp-vetur-dev-log-level "INFO"
+ "The vls log level for development"
+ :type '(choice
+ (const "INFO")
+ (const "DEBUG"))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.3"))
+
+(defcustom lsp-vetur-experimental-template-interpolation-service nil
+ "Whether to have template interpolation service"
+ :type 'boolean
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.3"))
+
+(defcustom lsp-vetur-emmet "never"
+ "Controls the Emmet suggestions that show up in the suggestion/completion list."
+ :type '(choice
+ (const "never")
+ (const "inMarkupAndStylesheetFilesOnly")
+ (const "always" ))
+ :group 'lsp-vetur
+ :package-version '(lsp-mode . "6.1"))
+
+(lsp-register-custom-settings
+ '(("vetur.trace.server" lsp-vetur-trace-server)
+ ("vetur.ignoreProjectWarning" lsp-vetur-ignore-project-warning t)
+ ("vetur.format.scriptInitialIndent" lsp-vetur-format-script-initial-indent t)
+ ("vetur.format.styleInitialIndent" lsp-vetur-format-style-initial-indent t)
+ ("vetur.format.defaultFormatterOptions" lsp-vetur-format-default-formatter-options)
+ ("vetur.format.defaultFormatter.ts" lsp-vetur-format-default-formatter-ts)
+ ("vetur.format.defaultFormatter.js" lsp-vetur-format-default-formatter-js)
+ ("vetur.format.defaultFormatter.stylus" lsp-vetur-format-default-formatter-stylus)
+ ("vetur.format.defaultFormatter.less" lsp-vetur-format-default-formatter-less)
+ ("vetur.format.defaultFormatter.scss" lsp-vetur-format-default-formatter-scss)
+ ("vetur.format.defaultFormatter.postcss" lsp-vetur-format-default-formatter-postcss)
+ ("vetur.format.defaultFormatter.css" lsp-vetur-format-default-formatter-css)
+ ("vetur.format.defaultFormatter.html" lsp-vetur-format-default-formatter-html)
+ ("vetur.format.options.useTabs" lsp-vetur-format-options-use-tabs t)
+ ("vetur.format.options.tabSize" lsp-vetur-format-options-tab-size)
+ ("vetur.format.enable" lsp-vetur-format-enable t)
+ ("vetur.validation.script" lsp-vetur-validation-script t)
+ ("vetur.validation.style" lsp-vetur-validation-style t)
+ ("vetur.validation.template" lsp-vetur-validation-template t)
+ ("vetur.languageFeatures.codeActions" lsp-vetur-language-features-code-actions t)
+ ("vetur.grammar.customBlocks" lsp-vetur-grammar-custom-blocks)
+ ("vetur.completion.tagCasing" lsp-vetur-completion-tag-casing)
+ ("vetur.completion.scaffoldSnippetSources" lsp-vetur-completion-scaffold-snippet-sources)
+ ("vetur.completion.autoImport" lsp-vetur-completion-auto-import t)
+ ("vetur.useWorkspaceDependencies" lsp-vetur-use-workspace-dependencies t)
+ ("vetur.dev.vlsPath" lsp-vetur-dev-vls-path)
+ ("vetur.dev.vlsPort" lsp-vetur-dev-vls-port)
+ ("vetur.dev.logLevel" lsp-vetur-dev-log-level)
+ ("vetur.experimental.templateInterpolationService" lsp-vetur-experimental-template-interpolation-service t)
+ ("emmet.showExpandedAbbreviation" lsp-vetur-emmet)))
+
+(define-obsolete-variable-alias
+ 'lsp-vetur-server
+ 'lsp-vetur-server-command
+ "lsp-mode 6.1")
+
+(defcustom lsp-vetur-global-snippets-dir (expand-file-name (locate-user-emacs-file ".snippets/vetur"))
+ "Path to snippets dir."
+ :type 'file
+ :risky t
+ :package-version '(lsp-mode . "6.2"))
+
+(defcustom lsp-vetur-server-command '("vls")
+ "Command to start vetur."
+ :type '(repeat string)
+ :risky t
+ :package-version '(lsp-mode . "6.1"))
+
+(lsp-dependency 'vetur-language-server
+ '(:system "vls")
+ '(:npm :package "vls" :path "vls"))
+
+(lsp-register-client
+ (make-lsp-client :new-connection (lsp-stdio-connection
+ (lambda ()
+ `(,(or (executable-find (cl-first lsp-vetur-server-command))
+ (lsp-package-path 'vetur-language-server))
+ ,@(cl-rest lsp-vetur-server-command))))
+ :activation-fn (lambda (filename _mode)
+ (string= (file-name-extension filename) "vue"))
+ :priority -1
+ :multi-root t
+ :ignore-messages '("readFile .*? requested by Vue but content not available")
+ :server-id 'vls
+ :initialization-options (lambda () (ht-merge (lsp-configuration-section "vetur")
+ (lsp-configuration-section "html")
+ (lsp-configuration-section "javascript")
+ (lsp-configuration-section "typescript")
+ (lsp-configuration-section "emmet")
+ (ht ("globalSnippetDir" lsp-vetur-global-snippets-dir))))
+ :initialized-fn (lambda (workspace)
+ (with-lsp-workspace workspace
+ (lsp--set-configuration
+ (ht-merge (lsp-configuration-section "vetur")
+ (lsp-configuration-section "html")
+ (lsp-configuration-section "javascript")
+ (lsp-configuration-section "emmet")
+ (lsp-configuration-section "typescript")))))
+ :download-server-fn (lambda (_client callback error-callback _update?)
+ (lsp-package-ensure 'vetur-language-server
+ callback error-callback))))
+
+(lsp-consistency-check lsp-vetur)
+
+(provide 'lsp-vetur)
+;;; lsp-vetur.el ends here