emacs/code/elpa/lsp-mode-20230823.446/lsp-protocol.el

797 lines
43 KiB
EmacsLisp
Raw Normal View History

;;; lsp-protocol.el --- Language Sever Protocol Bindings -*- lexical-binding: t; -*-
;; Copyright (C) 2020 Ivan Yonchovski
;; Author: Ivan Yonchovski <yyoncho@gmail.com>
;; Keywords: convenience
;; 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:
;; Autogenerated bindings from lsp4j using
;; https://github.com/victools/jsonschema-generator+scripts to generate
;; scripts/generated.protocol.schema.json and then
;; scripts/lsp-generate-bindings.el
;;; Code:
(require 'cl-lib)
(require 'dash)
(require 'ht)
(require 's)
(require 'json)
(eval-and-compile
(defun lsp-keyword->symbol (keyword)
"Convert a KEYWORD to symbol."
(intern (substring (symbol-name keyword) 1)))
(defun lsp-keyword->string (keyword)
"Convert a KEYWORD to string."
(substring (symbol-name keyword) 1))
(defvar lsp-use-plists (getenv "LSP_USE_PLISTS")))
(defmacro lsp-interface (&rest interfaces)
"Generate LSP bindings from INTERFACES triplet.
Example usage with `dash`.
\(-let [(&ApplyWorkspaceEditResponse
:failure-reason?) (ht (\"failureReason\" \"...\"))]
failure-reason?)
\(fn (INTERFACE-NAME-1 REQUIRED-FIELDS-1 OPTIONAL-FIELDS-1) (INTERFACE-NAME-2 REQUIRED-FIELDS-2 OPTIONAL-FIELDS-2) ...)"
(with-case-table ascii-case-table
(->> interfaces
(-map (-lambda ((interface required optional))
(let ((params (nconc
(-map (lambda (param-name)
(cons
(intern (concat ":" (s-dashed-words (symbol-name param-name)) "?"))
param-name))
optional)
(-map (lambda (param-name)
(cons (intern (concat ":" (s-dashed-words (symbol-name param-name))))
param-name))
required))))
(cl-list*
`(defun ,(intern (format "dash-expand:&%s" interface)) (key source)
(unless (or (member key ',(-map #'cl-first params))
(s-starts-with? ":_" (symbol-name key)))
(error "Unknown key: %s. Available keys: %s" key ',(-map #'cl-first params)))
,(if lsp-use-plists
``(plist-get ,source
,(if (s-starts-with? ":_" (symbol-name key))
key
(cl-rest (assoc key ',params))))
``(gethash ,(if (s-starts-with? ":_" (symbol-name key))
(substring (symbol-name key) 1)
(substring (symbol-name
(cl-rest (assoc key ',params)))
1))
,source)))
`(defun ,(intern (format "dash-expand:&%s?" interface)) (key source)
(unless (member key ',(-map #'cl-first params))
(error "Unknown key: %s. Available keys: %s" key ',(-map #'cl-first params)))
,(if lsp-use-plists
``(plist-get ,source
,(if (s-starts-with? ":_" (symbol-name key))
key
(cl-rest (assoc key ',params))))
``(when (ht? ,source)
(gethash ,(substring (symbol-name
(cl-rest (assoc key ',params)))
1)
,source))))
`(defun ,(intern (format "lsp-%s?" (s-dashed-words (symbol-name interface)))) (object)
(cond
((ht? object)
(-all? (let ((keys (ht-keys object)))
(lambda (prop)
(member prop keys)))
',(-map (lambda (field-name)
(substring (symbol-name field-name) 1))
required)))
((listp object) (-all? (lambda (prop)
(plist-member object prop))
',required))))
`(cl-defun ,(intern (format "lsp-make-%s" (s-dashed-words (symbol-name interface))))
(&rest plist &key ,@(-map (-lambda ((key))
(intern (substring (symbol-name key) 1))) params)
&allow-other-keys)
(ignore ,@(-map (-lambda ((key))
(intern (substring (symbol-name key) 1))) params))
,(format "Constructs %s from `plist.'
Allowed params: %s" interface (reverse (-map #'cl-first params)))
,(if lsp-use-plists
`(-mapcat (-lambda ((key value))
(list (or (cl-rest (assoc key ',params)) key) value))
(-partition 2 plist))
`(let (($$result (ht)))
(mapc (-lambda ((key value))
(puthash (lsp-keyword->string (or (cl-rest (assoc key ',params))
key))
value
$$result))
(-partition 2 plist))
$$result)))
`(pcase-defmacro ,interface (&rest property-bindings)
,(if lsp-use-plists
``(and
(pred listp)
;; Check if all the types required by the
;; interface exist in the expr-val.
,@(-map
(lambda (key)
`(pred
(lambda (plist)
(plist-member plist ,key))))
',required)
;; Recursively generate the bindings.
,@(let ((current-list property-bindings)
(output-bindings nil))
;; Invariant: while current-list is
;; non-nil, the car of current-list is
;; always of the form :key, while the
;; cadr of current-list is either a)
;; nil, b) of the form :key-next or c)
;; a pcase pattern that can
;; recursively match an expression.
(while current-list
(-let* (((curr-binding-as-keyword next-entry . _) current-list)
(curr-binding-as-camelcased-symbol
(or (alist-get curr-binding-as-keyword ',params)
(error "Unknown key: %s. Available keys: %s"
(symbol-name curr-binding-as-keyword)
',(-map #'cl-first params))))
(bound-name (lsp-keyword->symbol curr-binding-as-keyword))
(next-entry-is-key-or-nil
(and (symbolp next-entry)
(or (null next-entry)
(s-starts-with? ":" (symbol-name next-entry))))))
(cond
;; If the next-entry is either a
;; plist-key or nil, then bind to
;; bound-name the value corresponding
;; to the camelcased symbol. Pop
;; current-list once.
(next-entry-is-key-or-nil
(push `(app (lambda (plist)
(plist-get plist ,curr-binding-as-camelcased-symbol))
,bound-name)
output-bindings)
(setf current-list (cdr current-list)))
;; Otherwise, next-entry is a pcase
;; pattern we recursively match to the
;; expression. This can in general
;; create additional bindings that we
;; persist in the top level of
;; bindings. We pop current-list
;; twice.
(t
(push `(app (lambda (plist)
(plist-get plist ,curr-binding-as-camelcased-symbol))
,next-entry)
output-bindings)
(setf current-list (cddr current-list))))))
output-bindings))
``(and
(pred ht?)
,@(-map
(lambda (key)
`(pred
(lambda (hash-table)
(ht-contains? hash-table ,(lsp-keyword->string key)))))
',required)
,@(let ((current-list property-bindings)
(output-bindings nil))
(while current-list
(-let* (((curr-binding-as-keyword next-entry . _) current-list)
(curr-binding-as-camelcased-string
(lsp-keyword->string (or (alist-get curr-binding-as-keyword ',params)
(error "Unknown key: %s. Available keys: %s"
(symbol-name curr-binding-as-keyword)
',(-map #'cl-first params)))))
(bound-name (lsp-keyword->symbol curr-binding-as-keyword))
(next-entry-is-key-or-nil
(and (symbolp next-entry)
(or (null next-entry)
(s-starts-with? ":" (symbol-name next-entry))))))
(cond
(next-entry-is-key-or-nil
(push `(app (lambda (hash-table)
(ht-get hash-table ,curr-binding-as-camelcased-string))
,bound-name)
output-bindings)
(setf current-list (cdr current-list)))
(t
(push `(app (lambda (hash-table)
(ht-get hash-table ,curr-binding-as-camelcased-string))
,next-entry)
output-bindings)
(setf current-list (cddr current-list))))))
output-bindings))))
(-mapcat (-lambda ((label . name))
(list
`(defun ,(intern (format "lsp:%s-%s"
(s-dashed-words (symbol-name interface))
(substring (symbol-name label) 1)))
(object)
,(if lsp-use-plists
`(plist-get object ,name)
`(when (ht? object) (gethash ,(lsp-keyword->string name) object))))
`(defun ,(intern (format "lsp:set-%s-%s"
(s-dashed-words (symbol-name interface))
(substring (symbol-name label) 1)))
(object value)
,@(if lsp-use-plists
`((plist-put object ,name value))
`((puthash ,(lsp-keyword->string name) value object)
object)))))
params)))))
(apply #'append)
(cl-list* 'progn))))
(if lsp-use-plists
(progn
(defun lsp-get (from key)
(plist-get from key))
(defun lsp-put (where key value)
(plist-put where key value))
(defun lsp-map (fn value)
(-map (-lambda ((k v))
(funcall fn (lsp-keyword->string k) v))
(-partition 2 value )))
(defalias 'lsp-merge 'append)
(defalias 'lsp-empty? 'null)
(defalias 'lsp-copy 'copy-sequence)
(defun lsp-member? (from key)
(when (listp from)
(plist-member from key)))
(defalias 'lsp-structure-p 'json-plist-p)
(defun lsp-delete (from key)
(cl-remf from key)
from))
(defun lsp-get (from key)
(when from
(gethash (lsp-keyword->string key) from)))
(defun lsp-put (where key value)
(prog1 where
(puthash (lsp-keyword->string key) value where)))
(defun lsp-map (fn value)
(when value
(maphash fn value)))
(defalias 'lsp-merge 'ht-merge)
(defalias 'lsp-empty? 'ht-empty?)
(defalias 'lsp-copy 'ht-copy)
(defun lsp-member? (from key)
(when (hash-table-p from)
(not (eq (gethash (lsp-keyword->string key) from :__lsp_default)
:__lsp_default))))
(defalias 'lsp-structure-p 'hash-table-p)
(defun lsp-delete (from key)
(ht-remove from (lsp-keyword->string key))
from))
(defmacro lsp-defun (name match-form &rest body)
"Define a function named NAME.
The function destructures its input as MATCH-FORM then executes BODY.
Note that you have to enclose the MATCH-FORM in a pair of parens,
such that:
(-defun (x) body)
(-defun (x y ...) body)
has the usual semantics of `defun'. Furthermore, these get
translated into a normal `defun', so there is no performance
penalty.
See `-let' for a description of the destructuring mechanism."
(declare (doc-string 3) (indent defun)
(debug (&define name sexp
[&optional stringp]
[&optional ("declare" &rest sexp)]
[&optional ("interactive" interactive)]
def-body)))
(cond
((nlistp match-form)
(signal 'wrong-type-argument (list #'listp match-form)))
;; no destructuring, so just return regular defun to make things faster
((-all? #'symbolp match-form)
`(defun ,name ,match-form ,@body))
(t
(-let* ((inputs (--map-indexed (list it (make-symbol (format "input%d" it-index))) match-form))
((body docs) (cond
;; only docs
((and (stringp (car body))
(not (cdr body)))
(list body (car body)))
;; docs + body
((stringp (car body))
(list (cdr body) (car body)))
;; no docs
(t (list body))))
((body interactive-form) (cond
;; interactive form
((and (listp (car body))
(eq (caar body) 'interactive))
(list (cdr body) (car body)))
;; no interactive form
(t (list body)))))
;; TODO: because inputs to the defun are evaluated only once,
;; -let* need not to create the extra bindings to ensure that.
;; We should find a way to optimize that. Not critical however.
`(defun ,name ,(-map #'cadr inputs)
,@(when docs (list docs))
,@(when interactive-form (list interactive-form))
(-let* ,inputs ,@body))))))
;; manually defined interfaces
(defconst lsp/markup-kind-plain-text "plaintext")
(defconst lsp/markup-kind-markdown "markdown")
(lsp-interface (JSONResponse (:params :id :method :result) nil)
(JSONResponseError (:error) nil)
(JSONMessage nil (:params :id :method :result :error))
(JSONResult nil (:params :id :method))
(JSONNotification (:params :method) nil)
(JSONRequest (:params :method) nil)
(JSONError (:message :code) (:data))
(ProgressParams (:token :value) nil)
(Edit (:kind) nil)
(WorkDoneProgress (:kind) nil)
(WorkDoneProgressBegin (:kind :title) (:cancellable :message :percentage))
(WorkDoneProgressReport (:kind) (:cancellable :message :percentage))
(WorkDoneProgressEnd (:kind) (:message))
(WorkDoneProgressOptions nil (:workDoneProgress))
(SemanticTokensOptions (:legend) (:rangeProvider :documentProvider))
(SemanticTokensLegend (:tokenTypes :tokenModifiers))
(SemanticTokensResult (:resultId) (:data))
(SemanticTokensPartialResult nil (:data))
(SemanticTokensEdit (:start :deleteCount) (:data))
(SemanticTokensDelta (:resultId) (:edits))
(SemanticTokensDeltaPartialResult nil (:edits)))
(lsp-interface (v1:ProgressParams (:id :title) (:message :percentage :done)))
(defun dash-expand:&RangeToPoint (key source)
"Convert the position KEY from SOURCE into a point."
`(lsp--position-to-point
(lsp-get ,source ,key)))
(lsp-interface (eslint:StatusParams (:state) nil)
(eslint:OpenESLintDocParams (:url) nil)
(eslint:ConfirmExecutionParams (:scope :file :libraryPath) nil))
(lsp-interface (haxe:ProcessStartNotification (:title) nil))
(lsp-interface (pwsh:ScriptRegion (:StartLineNumber :EndLineNumber :StartColumnNumber :EndColumnNumber :Text) nil))
(lsp-interface (omnisharp:ErrorMessage (:Text :FileName :Line :Column))
(omnisharp:ProjectInformationRequest (:FileName))
(omnisharp:MsBuildProject (:IsUnitProject :IsExe :Platform :Configuration :IntermediateOutputPath :OutputPath :TargetFrameworks :SourceFiles :TargetFramework :TargetPath :AssemblyName :Path :ProjectGuid))
(omnisharp:ProjectInformation (:ScriptProject :MsBuildProject))
(omnisharp:CodeStructureRequest (:FileName))
(omnisharp:CodeStructureResponse (:Elements))
(omnisharp:CodeElement (:Kind :Name :DisplayName :Children :Ranges :Properties))
(omnisharp:CodeElementProperties () (:static :accessibility :testMethodName :testFramework))
(omnisharp:Range (:Start :End))
(omnisharp:RangeList () (:attributes :full :name))
(omnisharp:Point (:Line :Column))
(omnisharp:RunTestsInClassRequest (:MethodNames :RunSettings :TestFrameworkname :TargetFrameworkVersion :NoBuild :Line :Column :Buffer :FileName))
(omnisharp:RunTestResponse (:Results :Pass :Failure :ContextHadNoTests))
(omnisharp:TestMessageEvent (:MessageLevel :Message))
(omnisharp:DotNetTestResult (:MethodName :Outcome :ErrorMessage :ErrorStackTrace :StandardOutput :StandardError)))
(lsp-interface (csharp-ls:CSharpMetadata (:textDocument))
(csharp-ls:CSharpMetadataResponse (:source :projectName :assemblyName :symbolName)))
(lsp-interface (rls:Cmd (:args :binary :env :cwd) nil))
(lsp-interface (rust-analyzer:AnalyzerStatusParams (:textDocument))
(rust-analyzer:SyntaxTreeParams (:textDocument) (:range))
(rust-analyzer:ViewHir (:textDocument :position))
(rust-analyzer:ViewItemTree (:textDocument))
(rust-analyzer:ExpandMacroParams (:textDocument :position) nil)
(rust-analyzer:ExpandedMacro (:name :expansion) nil)
(rust-analyzer:MatchingBraceParams (:textDocument :positions) nil)
(rust-analyzer:OpenCargoTomlParams (:textDocument) nil)
(rust-analyzer:OpenExternalDocsParams (:textDocument :position) nil)
(rust-analyzer:ResovedCodeActionParams (:id :codeActionParams) nil)
(rust-analyzer:JoinLinesParams (:textDocument :ranges) nil)
(rust-analyzer:MoveItemParams (:textDocument :range :direction) nil)
(rust-analyzer:RunnablesParams (:textDocument) (:position))
(rust-analyzer:Runnable (:label :kind :args) (:location))
(rust-analyzer:RunnableArgs (:cargoArgs :executableArgs) (:workspaceRoot :expectTest))
(rust-analyzer:RelatedTestsParams (:textDocument :position) nil)
(rust-analyzer:RelatedTests (:runnable) nil)
(rust-analyzer:SsrParams (:query :parseOnly) nil)
(rust-analyzer:CommandLink (:title :command) (:arguments :tooltip))
(rust-analyzer:CommandLinkGroup (:commands) (:title)))
(lsp-interface (clojure-lsp:TestTreeParams (:uri :tree) nil)
(clojure-lsp:TestTreeNode (:name :range :nameRange :kind) (:children)))
(lsp-interface (terraform-ls:ModuleCalls (:v :module_calls) nil))
(lsp-interface (terraform-ls:Module (:name :docs_link :version :source_type :dependent_modules) nil))
(lsp-interface (terraform-ls:Providers (:v :provider_requirements :installed_providers) nil))
(lsp-interface (terraform-ls:module.terraform (:v :required_version :discovered_version)))
;; begin autogenerated code
(defvar lsp/completion-item-kind-lookup
[nil Text Method Function Constructor Field Variable Class Interface Module Property Unit Value Enum Keyword Snippet Color File Reference Folder EnumMember Constant Struct Event Operator TypeParameter])
(defconst lsp/completion-item-kind-text 1)
(defconst lsp/completion-item-kind-method 2)
(defconst lsp/completion-item-kind-function 3)
(defconst lsp/completion-item-kind-constructor 4)
(defconst lsp/completion-item-kind-field 5)
(defconst lsp/completion-item-kind-variable 6)
(defconst lsp/completion-item-kind-class 7)
(defconst lsp/completion-item-kind-interface 8)
(defconst lsp/completion-item-kind-module 9)
(defconst lsp/completion-item-kind-property 10)
(defconst lsp/completion-item-kind-unit 11)
(defconst lsp/completion-item-kind-value 12)
(defconst lsp/completion-item-kind-enum 13)
(defconst lsp/completion-item-kind-keyword 14)
(defconst lsp/completion-item-kind-snippet 15)
(defconst lsp/completion-item-kind-color 16)
(defconst lsp/completion-item-kind-file 17)
(defconst lsp/completion-item-kind-reference 18)
(defconst lsp/completion-item-kind-folder 19)
(defconst lsp/completion-item-kind-enum-member 20)
(defconst lsp/completion-item-kind-constant 21)
(defconst lsp/completion-item-kind-struct 22)
(defconst lsp/completion-item-kind-event 23)
(defconst lsp/completion-item-kind-operator 24)
(defconst lsp/completion-item-kind-type-parameter 25)
(defvar lsp/completion-trigger-kind-lookup
[nil Invoked TriggerCharacter TriggerForIncompleteCompletions])
(defconst lsp/completion-trigger-kind-invoked 1)
(defconst lsp/completion-trigger-kind-trigger-character 2)
(defconst lsp/completion-trigger-kind-trigger-for-incomplete-completions 3)
(defvar lsp/diagnostic-severity-lookup
[nil Error Warning Information Hint Max])
(defconst lsp/diagnostic-severity-error 1)
(defconst lsp/diagnostic-severity-warning 2)
(defconst lsp/diagnostic-severity-information 3)
(defconst lsp/diagnostic-severity-hint 4)
(defconst lsp/diagnostic-severity-max 5)
(defvar lsp/diagnostic-tag-lookup
[nil Unnecessary Deprecated])
(defconst lsp/diagnostic-tag-unnecessary 1)
(defconst lsp/diagnostic-tag-deprecated 2)
(defvar lsp/completion-item-tag-lookup
[nil Deprecated])
(defconst lsp/completion-item-tag-deprecated 1)
(defvar lsp/document-highlight-kind-lookup
[nil Text Read Write])
(defconst lsp/document-highlight-kind-text 1)
(defconst lsp/document-highlight-kind-read 2)
(defconst lsp/document-highlight-kind-write 3)
(defvar lsp/file-change-type-lookup
[nil Created Changed Deleted])
(defconst lsp/file-change-type-created 1)
(defconst lsp/file-change-type-changed 2)
(defconst lsp/file-change-type-deleted 3)
(defvar lsp/insert-text-format-lookup
[nil PlainText Snippet])
(defconst lsp/insert-text-format-plain-text 1)
(defconst lsp/insert-text-format-snippet 2)
(defvar lsp/insert-text-mode-lookup
[nil AsIs AdjustIndentation])
(defconst lsp/insert-text-mode-as-it 1)
(defconst lsp/insert-text-mode-adjust-indentation 2)
(defvar lsp/message-type-lookup
[nil Error Warning Info Log])
(defconst lsp/message-type-error 1)
(defconst lsp/message-type-warning 2)
(defconst lsp/message-type-info 3)
(defconst lsp/message-type-log 4)
(defvar lsp/signature-help-trigger-kind-lookup
[nil Invoked TriggerCharacter ContentChange])
(defconst lsp/signature-help-trigger-kind-invoked 1)
(defconst lsp/signature-help-trigger-kind-trigger-character 2)
(defconst lsp/signature-help-trigger-kind-content-change 3)
(defvar lsp/symbol-kind-lookup
[nil File Module Namespace Package Class Method Property Field Constructor Enum Interface Function Variable Constant String Number Boolean Array Object Key Null EnumMember Struct Event Operator TypeParameter])
(defconst lsp/symbol-kind-file 1)
(defconst lsp/symbol-kind-module 2)
(defconst lsp/symbol-kind-namespace 3)
(defconst lsp/symbol-kind-package 4)
(defconst lsp/symbol-kind-class 5)
(defconst lsp/symbol-kind-method 6)
(defconst lsp/symbol-kind-property 7)
(defconst lsp/symbol-kind-field 8)
(defconst lsp/symbol-kind-constructor 9)
(defconst lsp/symbol-kind-enum 10)
(defconst lsp/symbol-kind-interface 11)
(defconst lsp/symbol-kind-function 12)
(defconst lsp/symbol-kind-variable 13)
(defconst lsp/symbol-kind-constant 14)
(defconst lsp/symbol-kind-string 15)
(defconst lsp/symbol-kind-number 16)
(defconst lsp/symbol-kind-boolean 17)
(defconst lsp/symbol-kind-array 18)
(defconst lsp/symbol-kind-object 19)
(defconst lsp/symbol-kind-key 20)
(defconst lsp/symbol-kind-null 21)
(defconst lsp/symbol-kind-enum-member 22)
(defconst lsp/symbol-kind-struct 23)
(defconst lsp/symbol-kind-event 24)
(defconst lsp/symbol-kind-operator 25)
(defconst lsp/symbol-kind-type-parameter 26)
(defvar lsp/text-document-save-reason-lookup
[nil Manual AfterDelay FocusOut])
(defconst lsp/text-document-save-reason-manual 1)
(defconst lsp/text-document-save-reason-after-delay 2)
(defconst lsp/text-document-save-reason-focus-out 3)
(defvar lsp/text-document-sync-kind-lookup
[None Full Incremental])
(defconst lsp/text-document-sync-kind-none 0)
(defconst lsp/text-document-sync-kind-full 1)
(defconst lsp/text-document-sync-kind-incremental 2)
(defvar lsp/type-hierarchy-direction-lookup
[nil Children Parents Both])
(defconst lsp/type-hierarchy-direction-children 1)
(defconst lsp/type-hierarchy-direction-parents 2)
(defconst lsp/type-hierarchy-direction-both 3)
(defvar lsp/call-hierarchy-direction-lookup
[nil CallsFrom CallsTo])
(defconst lsp/call-hierarchy-direction-calls-from 1)
(defconst lsp/call-hierarchy-direction-calls-to 2)
(defvar lsp/response-error-code-lookup
[nil ParseError InvalidRequest MethodNotFound InvalidParams InternalError serverErrorStart serverErrorEnd])
(defconst lsp/response-error-code-parse-error 1)
(defconst lsp/response-error-code-invalid-request 2)
(defconst lsp/response-error-code-method-not-found 3)
(defconst lsp/response-error-code-invalid-params 4)
(defconst lsp/response-error-code-internal-error 5)
(defconst lsp/response-error-code-server-error-start 6)
(defconst lsp/response-error-code-server-error-end 7)
(lsp-interface
(CallHierarchyCapabilities nil (:dynamicRegistration))
(CallHierarchyItem (:kind :name :range :selectionRange :uri) (:detail :tags))
(ClientCapabilities nil (:experimental :textDocument :workspace))
(ClientInfo (:name) (:version))
(CodeActionCapabilities nil (:codeActionLiteralSupport :dynamicRegistration :isPreferredSupport :dataSupport :resolveSupport))
(CodeActionContext (:diagnostics) (:only))
(CodeActionKindCapabilities (:valueSet) nil)
(CodeActionLiteralSupportCapabilities nil (:codeActionKind))
(CodeActionOptions nil (:codeActionKinds :resolveProvider))
(CodeLensCapabilities nil (:dynamicRegistration))
(CodeLensOptions (:resolveProvider) nil)
(Color (:red :green :blue :alpha) nil)
(ColorProviderCapabilities nil (:dynamicRegistration))
(ColorProviderOptions nil (:documentSelector :id))
(ColoringInformation (:range :styles) nil)
(Command (:title :command) (:arguments))
(CompletionCapabilities nil (:completionItem :completionItemKind :contextSupport :dynamicRegistration))
(CompletionContext (:triggerKind) (:triggerCharacter))
(CompletionItem (:label) (:additionalTextEdits :command :commitCharacters :data :deprecated :detail :documentation :filterText :insertText :insertTextFormat :insertTextMode :kind :preselect :sortText :tags :textEdit :score :labelDetails))
(CompletionItemCapabilities nil (:commitCharactersSupport :deprecatedSupport :documentationFormat :preselectSupport :snippetSupport :tagSupport :insertReplaceSupport :resolveSupport))
(CompletionItemKindCapabilities nil (:valueSet))
(CompletionItemTagSupportCapabilities (:valueSet) nil)
(CompletionOptions nil (:resolveProvider :triggerCharacters :allCommitCharacters))
(ConfigurationItem nil (:scopeUri :section))
(CreateFileOptions nil (:ignoreIfExists :overwrite))
(DeclarationCapabilities nil (:dynamicRegistration :linkSupport))
(DefinitionCapabilities nil (:dynamicRegistration :linkSupport))
(DeleteFileOptions nil (:ignoreIfNotExists :recursive))
(Diagnostic (:range :message) (:code :relatedInformation :severity :source :tags))
(DiagnosticRelatedInformation (:location :message) nil)
(DiagnosticsTagSupport (:valueSet) nil)
(DidChangeConfigurationCapabilities nil (:dynamicRegistration))
(DidChangeWatchedFilesCapabilities nil (:dynamicRegistration))
(DocumentFilter nil (:language :pattern :scheme))
(DocumentHighlightCapabilities nil (:dynamicRegistration))
(DocumentLinkCapabilities nil (:dynamicRegistration :tooltipSupport))
(DocumentLinkOptions nil (:resolveProvider))
(DocumentOnTypeFormattingOptions (:firstTriggerCharacter) (:moreTriggerCharacter))
(DocumentSymbol (:kind :name :range :selectionRange) (:children :deprecated :detail))
(DocumentSymbolCapabilities nil (:dynamicRegistration :hierarchicalDocumentSymbolSupport :symbolKind))
(ExecuteCommandCapabilities nil (:dynamicRegistration))
(ExecuteCommandOptions (:commands) nil)
(FileEvent (:type :uri) nil)
(FileSystemWatcher (:globPattern) (:kind))
(FileOperationFilter (:pattern) (:scheme))
(FileOperationPattern (:glob) (:matches :options))
(FileOperationPatternOptions nil (:ignoreCase))
(FileOperationRegistrationOptions (:filters) nil)
(FoldingRangeCapabilities nil (:dynamicRegistration :lineFoldingOnly :rangeLimit))
(FoldingRangeProviderOptions nil (:documentSelector :id))
(FormattingCapabilities nil (:dynamicRegistration))
(FormattingOptions (:tabSize :insertSpaces) (:trimTrailingWhitespace :insertFinalNewline :trimFinalNewlines))
(HoverCapabilities nil (:contentFormat :dynamicRegistration))
(ImplementationCapabilities nil (:dynamicRegistration :linkSupport))
(LabelDetails (:detail :description) nil)
(LinkedEditingRanges (:ranges) (:wordPattern))
(Location (:range :uri) nil)
(MarkedString (:language :value) nil)
(MarkupContent (:kind :value) nil)
(MessageActionItem (:title) nil)
(OnTypeFormattingCapabilities nil (:dynamicRegistration))
(ParameterInformation (:label) (:documentation))
(ParameterInformationCapabilities nil (:labelOffsetSupport))
(Position (:character :line) nil)
(PublishDiagnosticsCapabilities nil (:relatedInformation :tagSupport :versionSupport))
(Range (:start :end) nil)
(RangeFormattingCapabilities nil (:dynamicRegistration))
(ReferenceContext (:includeDeclaration) nil)
(ReferencesCapabilities nil (:dynamicRegistration))
(Registration (:method :id) (:registerOptions))
(RenameCapabilities nil (:dynamicRegistration :prepareSupport))
(RenameFileOptions nil (:ignoreIfExists :overwrite))
(RenameOptions nil (:documentSelector :id :prepareProvider))
(ResourceChange nil (:current :newUri))
(ResourceOperation (:kind) nil)
(SaveOptions nil (:includeText))
(SelectionRange (:range) (:parent))
(SelectionRangeCapabilities nil (:dynamicRegistration))
(SemanticHighlightingCapabilities nil (:semanticHighlighting))
(SemanticHighlightingInformation (:line) (:tokens))
(SemanticHighlightingServerCapabilities nil (:scopes))
(ServerCapabilities nil (:callHierarchyProvider :codeActionProvider :codeLensProvider :colorProvider :completionProvider :declarationProvider :definitionProvider :documentFormattingProvider :documentHighlightProvider :documentLinkProvider :documentOnTypeFormattingProvider :documentRangeFormattingProvider :documentSymbolProvider :executeCommandProvider :experimental :foldingRangeProvider :hoverProvider :implementationProvider :referencesProvider :renameProvider :selectionRangeProvider :semanticHighlighting :signatureHelpProvider :textDocumentSync :typeDefinitionProvider :typeHierarchyProvider :workspace :workspaceSymbolProvider :semanticTokensProvider))
(ServerInfo (:name) (:version))
(SignatureHelp (:signatures) (:activeParameter :activeSignature))
(SignatureHelpCapabilities nil (:contextSupport :dynamicRegistration :signatureInformation))
(SignatureHelpContext (:triggerKind :isRetrigger) (:activeSignatureHelp :triggerCharacter))
(SignatureHelpOptions nil (:retriggerCharacters :triggerCharacters))
(SignatureInformation (:label) (:documentation :parameters))
(SignatureInformationCapabilities nil (:documentationFormat :parameterInformation))
(StaticRegistrationOptions nil (:documentSelector :id))
(SymbolCapabilities nil (:dynamicRegistration :symbolKind))
(SymbolKindCapabilities nil (:valueSet))
(SynchronizationCapabilities nil (:didSave :dynamicRegistration :willSave :willSaveWaitUntil))
(TextDocumentClientCapabilities nil (:callHierarchy :codeAction :codeLens :colorProvider :completion :declaration :definition :documentHighlight :documentLink :documentSymbol :foldingRange :formatting :hover :implementation :onTypeFormatting :publishDiagnostics :rangeFormatting :references :rename :selectionRange :semanticHighlightingCapabilities :signatureHelp :synchronization :typeDefinition :typeHierarchyCapabilities))
(TextDocumentContentChangeEvent (:text) (:range :rangeLength))
(TextDocumentEdit (:textDocument :edits) nil)
(TextDocumentIdentifier (:uri) nil)
(TextDocumentItem (:languageId :text :uri :version) nil)
(TextDocumentSyncOptions nil (:change :openClose :save :willSave :willSaveWaitUntil))
(TextEdit (:newText :range) nil)
(InsertReplaceEdit (:newText :insert :replace) nil)
(SnippetTextEdit (:newText :range) (:insertTextFormat))
(TypeDefinitionCapabilities nil (:dynamicRegistration :linkSupport))
(TypeHierarchyCapabilities nil (:dynamicRegistration))
(TypeHierarchyItem (:kind :name :range :selectionRange :uri) (:children :data :deprecated :detail :parents))
(Unregistration (:method :id) nil)
(VersionedTextDocumentIdentifier (:uri) (:version))
(WorkspaceClientCapabilities nil (:applyEdit :configuration :didChangeConfiguration :didChangeWatchedFiles :executeCommand :symbol :workspaceEdit :workspaceFolders))
(WorkspaceEdit nil (:changes :documentChanges :resourceChanges))
(WorkspaceEditCapabilities nil (:documentChanges :failureHandling :resourceChanges :resourceOperations))
(WorkspaceFolder (:uri :name) nil)
(WorkspaceFoldersChangeEvent (:removed :added) nil)
(WorkspaceFoldersOptions nil (:changeNotifications :supported))
(WorkspaceServerCapabilities nil (:workspaceFolders :fileOperations))
(WorkspaceFileOperations nil (:didCreate :willCreate :didRename :willRename :didDelete :willDelete))
(ApplyWorkspaceEditParams (:edit) (:label))
(ApplyWorkspaceEditResponse (:applied) nil)
(CallHierarchyIncomingCall (:from :fromRanges) nil)
(CallHierarchyIncomingCallsParams (:item) nil)
(CallHierarchyOutgoingCall (:to :fromRanges) nil)
(CallHierarchyOutgoingCallsParams (:item) nil)
(CallHierarchyPrepareParams (:textDocument :position) (:uri))
(CodeAction (:title) (:command :diagnostics :edit :isPreferred :kind :data))
(CodeActionKind nil nil)
(CodeActionParams (:textDocument :context :range) nil)
(CodeLens (:range) (:command :data))
(CodeLensParams (:textDocument) nil)
(CodeLensRegistrationOptions nil (:documentSelector :resolveProvider))
(ColorInformation (:color :range) nil)
(ColorPresentation (:label) (:additionalTextEdits :textEdit))
(ColorPresentationParams (:color :textDocument :range) nil)
(ColoringParams (:uri :infos) nil)
(ColoringStyle nil nil)
(CompletionList (:items :isIncomplete) nil)
(CompletionParams (:textDocument :position) (:context :uri))
(CompletionRegistrationOptions nil (:documentSelector :resolveProvider :triggerCharacters))
(ConfigurationParams (:items) nil)
(CreateFile (:kind :uri) (:options))
(DeclarationParams (:textDocument :position) (:uri))
(DefinitionParams (:textDocument :position) (:uri))
(DeleteFile (:kind :uri) (:options))
(DidChangeConfigurationParams (:settings) nil)
(DidChangeTextDocumentParams (:contentChanges :textDocument) (:uri))
(DidChangeWatchedFilesParams (:changes) nil)
(DidChangeWatchedFilesRegistrationOptions (:watchers) nil)
(DidChangeWorkspaceFoldersParams (:event) nil)
(DidCloseTextDocumentParams (:textDocument) nil)
(DidOpenTextDocumentParams (:textDocument) (:text))
(DidSaveTextDocumentParams (:textDocument) (:text))
(DocumentColorParams (:textDocument) nil)
(DocumentFormattingParams (:textDocument :options) nil)
(DocumentHighlight (:range) (:kind))
(DocumentHighlightParams (:textDocument :position) (:uri))
(DocumentLink (:range) (:data :target :tooltip))
(DocumentLinkParams (:textDocument) nil)
(DocumentLinkRegistrationOptions nil (:documentSelector :resolveProvider))
(DocumentOnTypeFormattingParams (:ch :textDocument :options :position) nil)
(DocumentOnTypeFormattingRegistrationOptions (:firstTriggerCharacter) (:documentSelector :moreTriggerCharacter))
(DocumentRangeFormattingParams (:textDocument :options :range) nil)
(DocumentSymbolParams (:textDocument) nil)
(DynamicRegistrationCapabilities nil (:dynamicRegistration))
(ExecuteCommandParams (:command) (:arguments))
(ExecuteCommandRegistrationOptions (:commands) nil)
(FailureHandlingKind nil nil)
(FileRename (:oldUri :newUri) nil)
(FoldingRange (:endLine :startLine) (:endCharacter :kind :startCharacter))
(FoldingRangeKind nil nil)
(FoldingRangeRequestParams (:textDocument) nil)
(Hover (:contents) (:range))
(HoverParams (:textDocument :position) (:uri))
(ImplementationParams (:textDocument :position) (:uri))
(InitializeError (:retry) nil)
(InitializeErrorCode nil nil)
(InitializeParams nil (:capabilities :clientInfo :clientName :initializationOptions :processId :rootPath :rootUri :trace :workspaceFolders))
(InitializeResult (:capabilities) (:serverInfo))
(InitializedParams nil nil)
(LocationLink (:targetSelectionRange :targetUri :targetRange) (:originSelectionRange))
(MarkupKind nil nil)
(MessageParams (:type :message) nil)
(PrepareRenameParams (:textDocument :position) (:uri))
(PrepareRenameResult (:range :placeholder) nil)
(PublishDiagnosticsParams (:diagnostics :uri) (:version))
(QuickPickItem (:label :picked :userData) nil)
(ReferenceParams (:textDocument :context :position) (:uri))
(RegistrationParams (:registrations) nil)
(RenameFile (:kind :newUri :oldUri) (:options))
(RenameFilesParams (:files) nil)
(RenameParams (:newName :textDocument :position) (:uri))
(ResolveTypeHierarchyItemParams (:item :resolve :direction) nil)
(ResourceOperationKind nil nil)
(SelectionRangeParams (:textDocument :positions) nil)
(SemanticHighlightingParams (:textDocument :lines) nil)
(ShowDocumentParams (:uri) (:external :takeFocus :selection))
(ShowDocumentResult (:success) nil)
(ShowInputBoxParams (:prompt) (:value))
(ShowMessageRequestParams (:type :message) (:actions))
(ShowQuickPickParams (:placeHolder :canPickMany :items) nil)
(SignatureHelpParams (:textDocument :position) (:context :uri))
(SignatureHelpRegistrationOptions nil (:documentSelector :triggerCharacters))
(SymbolInformation (:kind :name :location) (:containerName :deprecated))
(TextDocumentChangeRegistrationOptions (:syncKind) (:documentSelector))
(TextDocumentPositionParams (:textDocument :position) (:uri))
(TextDocumentRegistrationOptions nil (:documentSelector))
(TextDocumentSaveRegistrationOptions nil (:documentSelector :includeText))
(TypeDefinitionParams (:textDocument :position) (:uri))
(TypeHierarchyParams (:resolve :textDocument :position) (:direction :uri))
(UnregistrationParams (:unregisterations) nil)
(WatchKind nil nil)
(WillSaveTextDocumentParams (:reason :textDocument) nil)
(WorkspaceSymbolParams (:query) nil)
;; 3.17
(InlayHint (:label :position) (:kind :paddingLeft :paddingRight))
(InlayHintLabelPart (:value) (:tooltip :location :command))
(InlayHintsParams (:textDocument) (:range)))
;; 3.17
(defconst lsp/inlay-hint-kind-type-hint 1)
(defconst lsp/inlay-hint-kind-parameter-hint 2)
(provide 'lsp-protocol)
;;; lsp-protocol.el ends here