aboutsummaryrefslogtreecommitdiffstats
path: root/elpa/lsp-mode-20220505.630/lsp-css.el
diff options
context:
space:
mode:
Diffstat (limited to 'elpa/lsp-mode-20220505.630/lsp-css.el')
-rw-r--r--elpa/lsp-mode-20220505.630/lsp-css.el254
1 files changed, 254 insertions, 0 deletions
diff --git a/elpa/lsp-mode-20220505.630/lsp-css.el b/elpa/lsp-mode-20220505.630/lsp-css.el
new file mode 100644
index 0000000..b825a36
--- /dev/null
+++ b/elpa/lsp-mode-20220505.630/lsp-css.el
@@ -0,0 +1,254 @@
+;;; lsp-css.el --- CSS language server 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:
+
+;;
+
+;;; Code:
+
+(require 'lsp-protocol)
+(require 'lsp-mode)
+
+(defgroup lsp-css nil
+ "LSP support for CSS."
+ :group 'lsp-mode
+ :link '(url-link
+ "https://github.com/microsoft/vscode/tree/main/extensions/css-language-features/server"))
+
+(defcustom lsp-css-experimental-custom-data nil
+ "A list of JSON file paths that define custom CSS data that
+loads custom properties, at directives, pseudo classes /
+elements."
+ :type '(repeat string))
+
+(defcustom lsp-css-completion-trigger-property-value-completion t
+ "By default, VS Code triggers property value completion after
+selecting a CSS property. Use this setting to disable this
+behavior."
+ :type 'boolean)
+
+(defcustom lsp-css-validate t
+ "Enables or disables all validations."
+ :type 'boolean)
+
+(defcustom lsp-css-lint-compatible-vendor-prefixes "ignore"
+ "When using a vendor-specific prefix make sure to also include
+all other vendor-specific properties."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-vendor-prefix "warning"
+ "When using a vendor-specific prefix, also include the standard
+property."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-duplicate-properties "ignore"
+ "Do not use duplicate style definitions."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-empty-rules "warning"
+ "Do not use empty rulesets."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-import-statement "ignore"
+ "Import statements do not load in parallel."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-box-model "ignore"
+ nil
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-universal-selector "ignore"
+ nil
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-zero-units "ignore"
+ "No unit for zero needed."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-font-face-properties "warning"
+ nil
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-hex-color-length "error"
+ "Hex colors must consist of three or six hex numbers."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-arguments-in-color-function "error"
+ "Invalid number of parameters."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-unknown-properties "warning"
+ "Unknown property."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-valid-properties nil
+ "A list of properties that are not validated against the
+`unknownProperties` rule."
+ :type '(repeat string))
+
+(defcustom lsp-css-lint-ie-hack "ignore"
+ "IE hacks are only necessary when supporting IE7 and older."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-unknown-vendor-specific-properties "ignore"
+ "Unknown vendor specific property."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-property-ignored-due-to-display "warning"
+ nil
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-important "ignore"
+ nil
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-float "ignore"
+ nil
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-id-selector "ignore"
+ "Selectors should not contain IDs because these rules are too
+tightly coupled with the HTML."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-lint-unknown-at-rules "warning"
+ "Unknown at-rule."
+ :type '(choice
+ (const "ignore")
+ (const "warning")
+ (const "error")))
+
+(defcustom lsp-css-trace-server "off"
+ "Traces the communication between VS Code and the CSS language
+server."
+ :type '(choice
+ (const "off")
+ (const "messages")
+ (const "verbose")))
+
+(lsp-register-custom-settings
+ '(("css.trace.server" lsp-css-trace-server)
+ ("css.lint.unknownAtRules" lsp-css-lint-unknown-at-rules)
+ ("css.lint.idSelector" lsp-css-lint-id-selector)
+ ("css.lint.float" lsp-css-lint-float)
+ ("css.lint.important" lsp-css-lint-important)
+ ("css.lint.propertyIgnoredDueToDisplay" lsp-css-lint-property-ignored-due-to-display)
+ ("css.lint.unknownVendorSpecificProperties" lsp-css-lint-unknown-vendor-specific-properties)
+ ("css.lint.ieHack" lsp-css-lint-ie-hack)
+ ("css.lint.validProperties" lsp-css-lint-valid-properties)
+ ("css.lint.unknownProperties" lsp-css-lint-unknown-properties)
+ ("css.lint.argumentsInColorFunction" lsp-css-lint-arguments-in-color-function)
+ ("css.lint.hexColorLength" lsp-css-lint-hex-color-length)
+ ("css.lint.fontFaceProperties" lsp-css-lint-font-face-properties)
+ ("css.lint.zeroUnits" lsp-css-lint-zero-units)
+ ("css.lint.universalSelector" lsp-css-lint-universal-selector)
+ ("css.lint.boxModel" lsp-css-lint-box-model)
+ ("css.lint.importStatement" lsp-css-lint-import-statement)
+ ("css.lint.emptyRules" lsp-css-lint-empty-rules)
+ ("css.lint.duplicateProperties" lsp-css-lint-duplicate-properties)
+ ("css.lint.vendorPrefix" lsp-css-lint-vendor-prefix)
+ ("css.lint.compatibleVendorPrefixes" lsp-css-lint-compatible-vendor-prefixes)
+ ("css.validate" lsp-css-validate t)
+ ("css.completion.triggerPropertyValueCompletion" lsp-css-completion-trigger-property-value-completion t)
+ ("css.experimental.customData" lsp-css-experimental-custom-data)))
+
+(defun lsp-css--server-command ()
+ "Generate startup command for CSS language server."
+ (list (lsp-package-path 'css-languageserver) "--stdio"))
+
+;;; CSS
+(lsp-defun lsp-css--apply-code-action ((&Command :arguments?))
+ "Apply ACTION as workspace edit command."
+ (lsp--apply-text-edits (cl-caddr arguments?) 'code-action))
+
+(lsp-dependency 'css-languageserver
+ '(:system "vscode-css-language-server")
+ '(:npm :package "vscode-langservers-extracted"
+ :path "vscode-css-language-server"))
+
+(lsp-register-client
+ (make-lsp-client
+ :new-connection (lsp-stdio-connection #'lsp-css--server-command)
+ :activation-fn (lsp-activate-on "css" "scss" "sass" "less")
+ :priority -1
+ :action-handlers (lsp-ht ("_css.applyCodeAction" #'lsp-css--apply-code-action))
+ :server-id 'css-ls
+ :download-server-fn (lambda (_client callback error-callback _update?)
+ (lsp-package-ensure 'css-languageserver callback error-callback))))
+
+(lsp-consistency-check lsp-css)
+
+(provide 'lsp-css)
+;;; lsp-css.el ends here