;ELC ;;; Compiled ;;; in Emacs version 26.3 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. ;;; This file does not contain utf-8 non-ASCII characters, ;;; and so can be loaded in Emacs versions earlier than 23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\301\302!\210\301\303!\210\301\304!\210\301\305!\210\301\306!\210\301\307!\210\301\310!\210\301\311!\210\301\312!\210\301\313!\210\301\314!\210\301\315!\210\301\316!\210\301\317!\210\301\320!\210\321W\203O\322\323!\204O\324\325!\210\202S\301\326!\210\327\330\331\332\333\334\335\336&\207" [emacs-major-version require json imenu cl-lib project url-parse url-util pcase compile warnings flymake xref jsonrpc filenotify ert array 28 boundp eldoc-documentation-strategy load "eldoc" eldoc custom-declare-group eglot nil "Interaction with Language Server Protocol servers" :prefix "eglot-" :group applications] 8) #@2156 How the command `eglot' guesses the server to start. An association list of (MAJOR-MODE . CONTACT) pairs. MAJOR-MODE is a mode symbol, or a list of mode symbols. The associated CONTACT specifies how to connect to a server for managing buffers of those modes. CONTACT can be: * In the most common case, a list of strings (PROGRAM [ARGS...]). PROGRAM is called with ARGS and is expected to serve LSP requests over the standard input/output channels. * A list (HOST PORT [TCP-ARGS...]) where HOST is a string and PORT is a positive integer for connecting to a server via TCP. Remaining ARGS are passed to `open-network-stream' for upgrading the connection with encryption or other capabilities. * A list (PROGRAM [ARGS...] :autoport [MOREARGS...]), whereupon a combination of the two previous options is used. First, an attempt is made to find an available server port, then PROGRAM is launched with ARGS; the `:autoport' keyword substituted for that number; and MOREARGS. Eglot then attempts to establish a TCP connection to that port number on the localhost. * A cons (CLASS-NAME . INITARGS) where CLASS-NAME is a symbol designating a subclass of `eglot-lsp-server', for representing experimental LSP servers. INITARGS is a keyword-value plist used to initialize the object of CLASS-NAME, or a plain list interpreted as the previous descriptions of CONTACT. In the latter case that plain list is used to produce a plist with a suitable :PROCESS initarg to CLASS-NAME. The class `eglot-lsp-server' descends from `jsonrpc-process-connection', which you should see for the semantics of the mandatory :PROCESS argument. * A function of a single argument producing any of the above values for CONTACT. The argument's value is non-nil if the connection was requested interactively (e.g. from the `eglot' command), and nil if it wasn't (e.g. from `eglot-ensure'). If the call is interactive, the function can ask the user for hints on finding the required programs, etc. Otherwise, it should not ask the user for any input, and return nil or signal an error if it can't produce a valid CONTACT. (defvar eglot-server-programs '((rust-mode eglot-rls "rls") (python-mode "pyls") ((js-mode typescript-mode) "javascript-typescript-stdio") (sh-mode "bash-language-server" "start") (php-mode "php" "vendor/felixfbecker/language-server/bin/php-language-server.php") ((c++-mode c-mode) "ccls") ((caml-mode tuareg-mode reason-mode) "ocaml-language-server" "--stdio") (ruby-mode "solargraph" "socket" "--port" :autoport) (haskell-mode "haskell-language-server-wrapper" "--lsp") (elm-mode "elm-language-server") (kotlin-mode "kotlin-language-server") (go-mode "gopls") ((R-mode ess-r-mode) "R" "--slave" "-e" "languageserver::run()") (java-mode . eglot--eclipse-jdt-contact) (dart-mode "dart_language_server") (elixir-mode "language_server.sh") (ada-mode "ada_language_server") (scala-mode "metals-emacs") ((tex-mode context-mode texinfo-mode bibtex-mode) "digestif") (erlang-mode "erlang_ls" "--transport" "stdio") (gdscript-mode "localhost" 6008)) (#$ . 1037)) (byte-code "\300\301\302\303#\210\304\305\306\307\310DD\311\312\313%\210\304\314\306\307\315DD\316\312\317%\210\304\320\306\307\321DD\322\312\323%\210\304\324\306\307\325DD\326\312\327%\210\304\330\306\307\331DD\332\312\317%\210\304\333\306\307\334DD\335\312\336%\210\304\337\306\307\340DD\341\312\342%\207" [custom-declare-face eglot-mode-line ((t (:inherit font-lock-constant-face :weight bold))) "Face for package-name in EGLOT's mode line." custom-declare-variable eglot-autoreconnect funcall function #[0 "\300\207" [3] 1] "Control ability to reconnect automatically to the LSP server.\nIf t, always reconnect automatically (not recommended). If nil,\nnever reconnect automatically after unexpected server shutdowns,\ncrashes or network failures. A positive integer number says to\nonly autoreconnect if the previous successful connection attempt\nlasted more than that many seconds." :type (choice (boolean :tag "Whether to inhibit autoreconnection") (integer :tag "Number of seconds")) eglot-connect-timeout #[0 "\300\207" [30] 1] "Number of seconds before timing out LSP connection attempts.\nIf nil, never time out." number eglot-sync-connect #[0 "\300\207" [3] 1] "Control blocking of LSP connection attempts.\nIf t, block for `eglot-connect-timeout' seconds. A positive\ninteger number means block for that many seconds, and then wait\nfor the connection in the background. nil has the same meaning\nas 0, i.e. don't block at all." (choice (boolean :tag "Whether to inhibit autoreconnection") (integer :tag "Number of seconds")) eglot-autoshutdown #[0 "\300\207" [nil] 1] "If non-nil, shut down server after killing last managed buffer." boolean eglot-send-changes-idle-time #[0 "\300\207" [0.5] 1] "Don't tell server of changes before Emacs's been idle for this many seconds." eglot-events-buffer-size #[0 "\300\207" [2000000] 1] "Control the size of the Eglot events buffer.\nIf a number, don't let the buffer grow larger than that many\ncharacters. If 0, don't use an event's buffer at all. If nil,\nlet the buffer grow forever." (choice (const :tag "No limit" nil) (integer :tag "Number of characters")) eglot-confirm-server-initiated-edits #[0 "\300\207" [confirm] 1] "Non-nil if server-initiated edits should be confirmed with user." (choice (const :tag "Don't show confirmation prompt" nil) (symbol :tag "Show confirmation prompt" 'confirm))] 6) (defconst eglot--symbol-kind-names '((1 . "File") (2 . "Module") (3 . "Namespace") (4 . "Package") (5 . "Class") (6 . "Method") (7 . "Property") (8 . "Field") (9 . "Constructor") (10 . "Enum") (11 . "Interface") (12 . "Function") (13 . "Variable") (14 . "Constant") (15 . "String") (16 . "Number") (17 . "Boolean") (18 . "Array") (19 . "Object") (20 . "Key") (21 . "Null") (22 . "EnumMember") (23 . "Struct") (24 . "Event") (25 . "Operator") (26 . "TypeParameter"))) (defconst eglot--kind-names '((1 . "Text") (2 . "Method") (3 . "Function") (4 . "Constructor") (5 . "Field") (6 . "Variable") (7 . "Class") (8 . "Interface") (9 . "Module") (10 . "Property") (11 . "Unit") (12 . "Value") (13 . "Enum") (14 . "Keyword") (15 . "Snippet") (16 . "Color") (17 . "File") (18 . "Reference"))) #@24 The empty JSON object. (defconst eglot--{} (make-hash-table) (#$ . 7309)) #@566 Alist (INTERFACE-NAME . INTERFACE) of known external LSP interfaces. INTERFACE-NAME is a symbol designated by the spec as "interface". INTERFACE is a list (REQUIRED OPTIONAL) where REQUIRED and OPTIONAL are lists of KEYWORD designating field names that must be, or may be, respectively, present in a message adhering to that interface. KEY can be a keyword or a cons (SYM TYPE), where type is used by `cl-typep' to check types at runtime. Here's what an element of this alist might look like: (Command ((:title . string) (:command . string)) (:arguments)) (defvar eglot--lsp-interface-alist '((CodeAction (:title) (:kind :diagnostics :edit :command :isPreferred)) (ConfigurationItem nil (:scopeUri :section)) (Command ((:title . string) (:command . string)) (:arguments)) (CompletionItem (:label) (:kind :detail :documentation :deprecated :preselect :sortText :filterText :insertText :insertTextFormat :textEdit :additionalTextEdits :commitCharacters :command :data)) (Diagnostic (:range :message) (:severity :code :source :relatedInformation)) (DocumentHighlight (:range) (:kind)) (FileSystemWatcher (:globPattern) (:kind)) (Hover (:contents) (:range)) (InitializeResult (:capabilities) (:serverInfo)) (Location (:uri :range)) (LogMessageParams (:type :message)) (MarkupContent (:kind :value)) (ParameterInformation (:label) (:documentation)) (Position (:line :character)) (Range (:start :end)) (Registration (:id :method) (:registerOptions)) (Registration (:id :method) (:registerOptions)) (ResponseError (:code :message) (:data)) (ShowMessageParams (:type :message)) (ShowMessageRequestParams (:type :message) (:actions)) (SignatureHelp (:signatures) (:activeSignature :activeParameter)) (SignatureInformation (:label) (:documentation :parameters)) (SymbolInformation (:name :kind :location) (:deprecated :containerName)) (DocumentSymbol (:name :range :selectionRange :kind) (:detail :deprecated :children :containerName)) (TextDocumentEdit (:textDocument :edits) nil) (TextEdit (:range :newText)) (VersionedTextDocumentIdentifier (:uri :version) nil) (WorkspaceEdit nil (:changes :documentChanges))) (#$ . 7390)) #@889 How strictly to check LSP interfaces at compile- and run-time. Value is a list of symbols (if the list is empty, no checks are performed). If the symbol `disallow-non-standard-keys' is present, an error is raised if any extraneous fields are sent by the server. At compile-time, a warning is raised if a destructuring spec includes such a field. If the symbol `enforce-required-keys' is present, an error is raised if any required fields are missing from the message sent from the server. At compile-time, a warning is raised if a destructuring spec doesn't use such a field. If the symbol `enforce-optional-keys' is present, nothing special happens at run-time. At compile-time, a warning is raised if a destructuring spec doesn't use all optional fields. If the symbol `disallow-unknown-methods' is present, Eglot warns on unknown notifications and errors on unknown requests.  (defvar eglot-strict-mode (byte-code "?\205\301\207" [load-file-name (disallow-non-standard-keys)] 1) (#$ . 9523)) #@14 (fn PLIST) (defalias 'eglot--plist-keys #[257 "\211\300\211\211\211:\203&\262\211A\262\242\262@\262B\262AA\262\202\211\237\207" [nil] 8 (#$ . 10535)]) #@161 Check that OBJECT conforms to INTERFACE. Error otherwise. (fn INTERFACE-NAME OBJECT &optional (ENFORCE-REQUIRED t) (DISALLOW-NON-STANDARD t) (CHECK-TYPES t)) (defalias 'eglot--check-object #[642 "\211\203 \211A\262\242\202\300\203\211A\262\242\202\300\203)\211A\262\242\202*\300\2039\301\302\303\304G\\D\"\210\305!\306\307\"A@\306\310\"A@\306\311\"A@\205[\312\313 !\"\211\203f\314\315\f#\210\210\205u\312\313\n!\316\"\"\211\203\200\314\317\f#\210\210\203\302\320\211\211\211:\203\300\262\211A\262\242\262@\262\321 \"A\206\251\300\262\322\"\204\270\314\323\"\210AA\262\202\213\266\300\266\204\207" [t signal wrong-number-of-arguments eglot--check-object 5 eglot--interface plist-member :types :required-keys :optional-keys cl-set-difference eglot--plist-keys eglot--error "A `%s' must have %s" append "A `%s' mustn't have %s" nil assoc cl-typep "A `%s' must have a %s as %s, but has %s"] 18 (#$ . 10711)]) #@13 (fn VARS) (defalias 'eglot--keywordize-vars #[257 "\300\301\"\207" [mapcar #[257 "\300\301\302\"!\207" [intern format ":%s"] 5 "\n\n(fn VAR)"]] 4 (#$ . 11692)]) #@10 (fn K) (defalias 'eglot--ensure-type #[257 "\211:\203\207\211\300B\207" [t] 3 (#$ . 11863)]) #@23 (fn INTERFACE-NAME) (defalias 'eglot--interface #[257 "\301\"\302\303A@\"\302\303AA@\"\304\305\"\306\302\307\"\310\302\307\"\257\207" [eglot--lsp-interface-alist assoc mapcar eglot--ensure-type :types append :required-keys car :optional-keys] 12 (#$ . 11966)]) #@83 Check destructuring spec DSPEC against INTERFACE-NAME. (fn INTERFACE-NAME DSPEC) (defalias 'eglot--check-dspec #[514 "\301!\302\303\"A@\302\304\"A@\204\211\203e\305>\205&\306\307!\310\"\"\311>\2053\306\307!\"\312>\205@\306\307!\"\203K\313\314 #\210\203V\313\315 #\210\211\205`\313\316 #\266\203\202j\313\317\"\207" [eglot-strict-mode eglot--interface plist-member :required-keys :optional-keys disallow-non-standard-keys cl-set-difference eglot--keywordize-vars append enforce-required-keys enforce-optional-keys byte-compile-warn "Destructuring for %s has extraneous %s" "Destructuring for %s ignores required %s" "Destructuring for %s is missing out on %s" "Unknown LSP interface %s"] 12 (#$ . 12246)]) #@132 Destructure OBJECT, binding VARS in BODY. VARS is ([(INTERFACE)] SYMS...) Honour `eglot-strict-mode'. (fn VARS OBJECT &body BODY) (defalias 'eglot--dbind '(macro . #[642 "@:\205 \211A\262\242@\300\301!\300\302!\203A\303\"\210\304DC\305\306\307\n\310\"B\311\312 D\313BBB BBBBE\202u\304D\314 BBDD\315\316\305\306 B\317BBF\305\306\307 \320\"B\317 BBFFE\207" [make-symbol "object-once" "fn-once" eglot--check-dspec let cl-destructuring-bind &key append (&allow-other-keys) eglot--check-object quote ((memq 'enforce-required-keys eglot-strict-mode) (memq 'disallow-non-standard-keys eglot-strict-mode) (memq 'check-types eglot-strict-mode)) lambda if (memq 'disallow-non-standard-keys eglot-strict-mode) funcall (&allow-other-keys)] 17 (#$ . 12995)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put eglot--dbind lisp-indent-function 2 put edebug-form-spec (sexp sexp &rest form)] 5) #@127 Function of args CL-LAMBDA-LIST for processing INTERFACE objects. Honour `eglot-strict-mode'. (fn CL-LAMBDA-LIST &body BODY) (defalias 'eglot--lambda '(macro . #[385 "\300\301!\302C\303BBBE\207" [cl-gensym "jsonrpc-lambda-elem" lambda eglot--dbind] 9 (#$ . 13939)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put eglot--lambda lisp-indent-function 1 put edebug-form-spec (sexp &rest form)] 5) #@158 Like `pcase', but for the LSP object OBJ. CLAUSES is a list (DESTRUCTURE FORMS...) where DESTRUCTURE is treated as in `eglot-dbind'. (fn OBJ &rest CLAUSES) (defalias 'eglot--dcase '(macro . #[385 "\300\301!\302DC\303\304\305\211\211\211\211\211:\203|@\262\211A\262\242\262\306!\262@:\2056\211A\262\242@\262\203Q\307\"\210\310\311\312D\313BBBD\202]\314\315\312D\316DED\262\317\320\304\321\"B BBBDB\262A\262\202\211\237\266\207\322\323\324\312\325\326 \"DFDC\"BE\207" [make-symbol "obj-once" let cond append nil eglot--keywordize-vars eglot--check-dspec ignore-errors eglot--check-object quote (t (memq 'disallow-non-standard-keys eglot-strict-mode) t) null cl-set-difference eglot--plist-keys cl-destructuring-bind &key (&allow-other-keys) t eglot--error "%S didn't match any of %S" mapcar car] 20 (#$ . 14365)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put eglot--dcase lisp-indent-function 1 put edebug-form-spec (sexp &rest (sexp &rest form))] 5) #@58 Check BUF live, then do BODY in it. (fn BUF &rest BODY) (defalias 'eglot--when-live-buffer '(macro . #[385 "\300 \301DC\302\303D\304BBEE\207" [cl-gensym let if buffer-live-p with-current-buffer] 10 (#$ . 15392)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put eglot--when-live-buffer lisp-indent-function 1 put edebug-form-spec t] 5) #@70 Check BUF showing somewhere, then do BODY in it (fn BUF &body BODY) (defalias 'eglot--when-buffer-window '(macro . #[385 "\300 \301DC\302\303\304D\305BB\306BBEE\207" [cl-gensym let when or get-buffer-window ((ert-running-test)) with-current-buffer] 10 (#$ . 15759)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put eglot--when-buffer-window lisp-indent-function 1 put edebug-form-spec t] 5) #@72 Save excursion and restriction. Widen. Then run BODY. (fn &rest BODY) (defalias 'eglot--widening '(macro . #[128 "\300\301\302BBD\207" [save-excursion save-restriction (widen)] 5 (#$ . 16182)])) (byte-code "\300\301\302\303#\210\304\305\306\305\307\310#\311#\210\304\312\306\312\313\310#\314#\210\304\315\306\315\316\310#\317#\210\304\320\306\320\321\310#\322#\210\323\320\310\324\310\325%\210\304\326\306\326\327\310#\330#\210\323\326\310\331\310\332%\210\304\333\306\333\334\310#\330#\210\323\333\310\335\310\336%\210\304\337\306\337\340\310#\341#\210\323\337\310\342\310\343%\210\304\344\345\346!\"\210\304\347\350\346!\"\210\304\351\347\"\210\352\351\353\354#\210\355\346\356\347#\357\346\360\361\362$\210\323\363\310\364\310\365%\210\323\366\310\367\310\370%\210\323\371\310\372\310\373%\210\323\374\310\375\310\376%\210\323\377\310\201@\310\201A%\210\323\201B\310\201C\310\201D%\210\323\201E\310\201F\310\201G%\210\323\201H\310\201I\310\201J%\210\323\201K\310\201L\310\201M%\210\323\201N\310\201O\310\201P%\210\323\201Q\310\201R\310\201S%\210\323\201T\310\201U\310\201V%\210\323\201W\310\201X\310\201Y%\210\323\201Z\310\201[\310\201\\%\210\323\201]\310\201^\310\201_%\210\323\201`\310\201a\310\201b%\210\323\201c\310\201d\310\201e%\210\323\201f\310\201g\310\201h%\210\323\201i\310\201j\310\201k%\210\323\201l\310\201m\310\201n%\210\323\201o\310\201p\310\201q%\210\323\201r\310\201s\310\201t%\210\323\201u\310\201v\310\201w%\210\323\201x\310\201y\310\201z%\210\323\201{\310\201|\310\201}%\207" [put eglot--widening edebug-form-spec t defalias eglot-handle-request cl-generic-define (server method &rest params) nil "Handle SERVER's METHOD request with PARAMS.\n\n(fn SERVER METHOD &rest PARAMS)" eglot-handle-notification (server method &rest params) "Handle SERVER's METHOD notification with PARAMS.\n\n(fn SERVER METHOD &rest PARAMS)" eglot-execute-command (server command arguments) "Ask SERVER to execute COMMAND with ARGUMENTS.\n\n(fn SERVER COMMAND ARGUMENTS)" eglot-initialization-options (server) "JSON object to send under `initializationOptions'\n\n(fn SERVER)" cl-generic-define-method (_s) #[257 "\207" [eglot--{}] 2 "\n\n(fn S)"] eglot-register-capability (server method id &rest params) "Ask SERVER to register capability METHOD marked with ID.\n\n(fn SERVER METHOD ID &rest PARAMS)" (_s method _id &rest _params) #[899 "\300\301\"\207" [eglot--warn "Server tried to register unsupported capability `%s'"] 7 "\n\n(fn S METHOD ID &rest PARAMS)"] eglot-unregister-capability (server method id &rest params) (_s method _id &rest _params) #[899 "\300\301\"\207" [eglot--warn "Server tried to unregister unsupported capability `%s'"] 7 "\n\n(fn S METHOD ID &rest PARAMS)"] eglot-client-capabilities (server) "What the EGLOT LSP client supports for SERVER.\n\n(fn SERVER)" (_s) #[257 "\302\303\304\305\306\307\310\311\312\313\314\315\304\257\f\316\317\320\321\322\304\323\304\324\304\257\325\320\321\326\327\330 \203)\304\202*\321D\331\304\257\332\320\321\333\334\335!\203=\336\202>\337F\340\320\321\341\342F\343\344\345\346\347\350\351\352\353\354\355\320\321\356\304\357\360\361\362\363\364\"\"D\257\365\366\367\320\321\370\371\372\304\257\373\374\375\376\377\201@\201A\201B\257 \201C \257\207" [eglot--symbol-kind-names eglot--{} :workspace :applyEdit t :executeCommand (:dynamicRegistration :json-false) :workspaceEdit (:documentChanges :json-false) :didChangeWatchedFiles (:dynamicRegistration t) :symbol (:dynamicRegistration :json-false) :configuration :textDocument :synchronization :dynamicRegistration :json-false :willSave :willSaveWaitUntil :didSave :completion :completionItem :snippetSupport eglot--snippet-expansion-fn :contextSupport :hover :contentFormat fboundp gfm-view-mode ["markdown" "plaintext"] ["plaintext"] :signatureHelp :signatureInformation (:parameterInformation (:labelOffsetSupport t)) :references (:dynamicRegistration :json-false) :definition (:dynamicRegistration :json-false) :declaration (:dynamicRegistration :json-false) :implementation (:dynamicRegistration :json-false) :typeDefinition (:dynamicRegistration :json-false) :documentSymbol :hierarchicalDocumentSymbolSupport :symbolKind :valueSet apply vector mapcar car :documentHighlight (:dynamicRegistration :json-false) :codeAction :codeActionLiteralSupport (:codeActionKind (:valueSet ["quickfix" "refactor" "refactor.extract" "refactor.inline" "refactor.rewrite" "source" "source.organizeImports"])) :isPreferredSupport :formatting (:dynamicRegistration :json-false) :rangeFormatting (:dynamicRegistration :json-false) :rename (:dynamicRegistration :json-false) :publishDiagnostics (:relatedInformation :json-false) :experimental] 36 "\n\n(fn S)"] eglot-lsp-server-p eieio-make-class-predicate eglot-lsp-server eglot-lsp-server--eieio-childp eieio-make-child-predicate eglot-lsp-server-child-p make-obsolete "use (cl-typep ... \\='eglot-lsp-server) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (jsonrpc-process-connection) ((project-nickname :documentation "Short nickname for the associated project." :accessor eglot--project-nickname :reader eglot-project-nickname) (major-mode :documentation "Major mode symbol." :accessor eglot--major-mode) (capabilities :documentation "JSON object containing server capabilities." :accessor eglot--capabilities) (server-info :documentation "JSON object containing server info." :accessor eglot--server-info) (shutdown-requested :documentation "Flag set when server is shutting down." :accessor eglot--shutdown-requested) (project :documentation "Project associated with server." :accessor eglot--project) (spinner :documentation "List (ID DOING-WHAT DONE-P) representing server progress." :initform `(nil nil t) :accessor eglot--spinner) (inhibit-autoreconnect :initform t :documentation "Generalized boolean inhibiting auto-reconnection if true." :accessor eglot--inhibit-autoreconnect) (file-watches :documentation "Map ID to list of WATCHES for `didChangeWatchedFiles'." :initform (make-hash-table :test #'equal) :accessor eglot--file-watches) (managed-buffers :documentation "List of buffers managed by server." :accessor eglot--managed-buffers) (saved-initargs :documentation "Saved initargs for reconnection purposes." :accessor eglot--saved-initargs) (inferior-process :documentation "Server subprocess started automatically." :accessor eglot--inferior-process)) (:documentation "Represents a server. Wraps a process for LSP communication.") eglot--inferior-process ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp inferior-process eieio-oref] 4 "Retrieve the slot `inferior-process' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--inferior-process\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset inferior-process] 6 "\n\n(fn VALUE THIS)"] eglot--saved-initargs ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp saved-initargs eieio-oref] 4 "Retrieve the slot `saved-initargs' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--saved-initargs\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset saved-initargs] 6 "\n\n(fn VALUE THIS)"] eglot--managed-buffers ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp managed-buffers eieio-oref] 4 "Retrieve the slot `managed-buffers' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--managed-buffers\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset managed-buffers] 6 "\n\n(fn VALUE THIS)"] eglot--file-watches ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp file-watches eieio-oref] 4 "Retrieve the slot `file-watches' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--file-watches\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset file-watches] 6 "\n\n(fn VALUE THIS)"] eglot--inhibit-autoreconnect ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp inhibit-autoreconnect eieio-oref] 4 "Retrieve the slot `inhibit-autoreconnect' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--inhibit-autoreconnect\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset inhibit-autoreconnect] 6 "\n\n(fn VALUE THIS)"] eglot--spinner ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp spinner eieio-oref] 4 "Retrieve the slot `spinner' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--spinner\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset spinner] 6 "\n\n(fn VALUE THIS)"] eglot--project ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp project eieio-oref] 4 "Retrieve the slot `project' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--project\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset project] 6 "\n\n(fn VALUE THIS)"] eglot--shutdown-requested ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp shutdown-requested eieio-oref] 4 "Retrieve the slot `shutdown-requested' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--shutdown-requested\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset shutdown-requested] 6 "\n\n(fn VALUE THIS)"] eglot--server-info ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp server-info eieio-oref] 4 "Retrieve the slot `server-info' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--server-info\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset server-info] 6 "\n\n(fn VALUE THIS)"] eglot--capabilities ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp capabilities eieio-oref] 4 "Retrieve the slot `capabilities' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--capabilities\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset capabilities] 6 "\n\n(fn VALUE THIS)"] eglot--major-mode ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp major-mode eieio-oref] 4 "Retrieve the slot `major-mode' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--major-mode\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset major-mode] 6 "\n\n(fn VALUE THIS)"] eglot-project-nickname ((this eglot-lsp-server)) #[257 "\300\301\"\207" [slot-value project-nickname] 4 "Access the slot `project-nickname' from object of class `eglot-lsp-server'.\n\n(fn THIS)"] eglot--project-nickname ((this eglot-lsp-server)) #[257 "\300\301\"\205 \302\301\"\207" [slot-boundp project-nickname eieio-oref] 4 "Retrieve the slot `project-nickname' from an object of class `eglot-lsp-server'.\n\n(fn THIS)"] \(setf\ eglot--project-nickname\) (value (this eglot-lsp-server)) #[514 "\300\301#\207" [eieio-oset project-nickname] 6 "\n\n(fn VALUE THIS)"]] 7) #@73 Create a new object of class type `eglot-lsp-server'. (fn &rest SLOTS) (defalias 'eglot-lsp-server #[128 "\300\301\302#\207" [apply make-instance eglot-lsp-server] 5 (#$ . 27260)]) (byte-code "\300\301\302\303#\300\207" [function-put eglot-lsp-server compiler-macro eglot-lsp-server--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'eglot-lsp-server--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 27568)]) #@52 Keys are projects. Values are lists of processes. (defvar eglot--servers-by-project (make-hash-table :test 'equal) (#$ . 27804)) #@460 Politely ask SERVER to quit. Interactively, read SERVER from the minibuffer unless there is only one and it's managing the current buffer. Forcefully quit it if it doesn't respond within TIMEOUT seconds. Don't leave this function with the server still running. If PRESERVE-BUFFERS is non-nil (interactively, when called with a prefix argument), do not kill events and output buffers of SERVER. . (fn SERVER &optional INTERACTIVE TIMEOUT PRESERVE-BUFFERS) (defalias 'eglot-shutdown #[1025 "\300\301\302!\"\210\303\304\305\306\307\"\310\"\311$\216\312\313\"\266\314\315\316\317\206)\320%\210\321\322\316#)\207" [eglot--message "Asking %s politely to terminate" jsonrpc-name make-byte-code 0 "\302\300\301?\"\210\301?\205\303\304\300!!\207" vconcat vector [jsonrpc-shutdown kill-buffer jsonrpc-events-buffer] 3 \(setf\ eglot--shutdown-requested\) t jsonrpc-request :shutdown nil :timeout 1.5 jsonrpc-notify :exit] 11 (#$ . 27941) (byte-code "\301\302\303 \"\304\305F\207" [current-prefix-arg eglot--read-server "Shutdown which server" eglot-current-server t nil] 4)]) #@64 Called by jsonrpc.el when SERVER is already dead. (fn SERVER) (defalias 'eglot--on-shutdown #[257 "\302!\211\203#\211@\303\211\304!\203r\211q\210\305 \210)\210)A\266\202\202\210\306\307\310!\"\210\311!\211\2036\312!\210\210\313! \314\315\316\313! \"\"#\266\317!\203S\320\207\321!\204a\322\323!\210\324!\207\325\321!!\205l\322\326!\207" [eglot-autoshutdown eglot--servers-by-project eglot--managed-buffers nil buffer-live-p eglot--managed-mode-off maphash #[514 "\300\301\"\207" [mapcar file-notify-rm-watch] 5 "\n\n(fn ID WATCHES)"] eglot--file-watches eglot--inferior-process delete-process eglot--project puthash delq gethash eglot--shutdown-requested t eglot--inhibit-autoreconnect eglot--warn "Reconnecting after unexpected server exit." eglot-reconnect timerp "Not auto-reconnecting, last one didn't last long."] 10 (#$ . 29033)]) #@31 Return all known major modes. (defalias 'eglot--all-major-modes #[0 "\300C\301\302\303\304\305\306!\307\"\310\311%!\210\211\242\207" [nil mapatoms make-byte-code 257 "\301\302!\303\"\205\300\300\242B\240\207" vconcat vector [plist-member symbol-plist derived-mode-parent] 4 "\n\n(fn SYM)"] 8 (#$ . 29904)]) #@42 History of CONTACT arguments to `eglot'. (defvar eglot--command-history nil (#$ . 30223)) #@191 Helper for `eglot'. Return (MANAGED-MODE PROJECT CLASS CONTACT). If INTERACTIVE is non-nil, maybe prompt user, else error as soon as something can't be guessed. (fn &optional INTERACTIVE) (defalias 'eglot--guess-contact #[256 "\205 \203/\305\n!\306Y\204\211\204/\307\310\311\312\313\314 \"\315\316\313!\315\313 !\315&!\202;\211\204:\317\320p\"\202;\211\321 \206C\322 B\323\f\324#A\325!\203U\211!\202V\211\211:\203j\211@9\203j\211@A\262\206k\326<\205\204@;\205\204A\203\202A@;\205\204@\205\212\327\205\226\330\331\332\333#!\205\305\n\203\242\202\305\204\257\334\335 #\202\305\205\305\336!?\205\305\334\337\"\334\340\"\341R\211\203.\342\343#\344\345\315\211\344\346\206\334\347\350Q\"\203\356\351\352\316\211$\266\202\202\361\266\202\344\353\206\371\347\354Q\"\203 \351\352\316\211$\266\205\202\266\205\"\203 \355\356\"\357\355\360\"!D\202)\331\333\332\361!\362\363%\262\2067\2067\317\364\n\"  F\207" [buffer-file-name major-mode current-prefix-arg default-directory eglot-server-programs prefix-numeric-value 16 intern completing-read "[eglot] Start a server to manage buffers of what major mode? " mapcar symbol-name eglot--all-major-modes nil t eglot--error "Can't guess mode to manage for `%s'" project-current transient assoc #[514 "\300<\203 \202 C\301\302$\207" [cl-find :test provided-mode-derived-p] 7 "\n\n(fn M1 M2)"] functionp eglot-lsp-server "Enter program to execute (or :): " combine-and-quote-strings cl-subst ":autoport:" :autoport format "[eglot] Sorry, couldn't guess for `%s'!\n%s" executable-find "[eglot] I guess you want to run `%s'" ", but I can't find `%s' in PATH!" "\n" read-shell-command eglot-command-history string-match "^\\([^ ]+\\):\\([[:digit:]]+\\)$" "\\(?:" "[ \n ]+" "\\)\\'" replace-match "" "\\`\\(?:" "\\)" match-string 1 string-to-number 2 split-string-and-unquote :test equal "Couldn't guess for `%s'!"] 24 (#$ . 30320)]) #@1244 Manage a project with a Language Server Protocol (LSP) server. The LSP server of CLASS started (or contacted) via CONTACT. If this operation is successful, current *and future* file buffers of MANAGED-MAJOR-MODE inside PROJECT automatically become "managed" by the LSP server, meaning information about their contents is exchanged periodically to provide enhanced code-analysis via `xref-find-definitions', `flymake-mode', `eldoc-mode', `completion-at-point', among others. Interactively, the command attempts to guess MANAGED-MAJOR-MODE from current buffer, CLASS and CONTACT from `eglot-server-programs' and PROJECT from `project-current'. If it can't guess, the user is prompted. With a single \[universal-argument] prefix arg, it always prompt for COMMAND. With two \[universal-argument] prefix args, also prompts for MANAGED-MAJOR-MODE. PROJECT is a project instance as returned by `project-current'. CLASS is a subclass of symbol `eglot-lsp-server'. CONTACT specifies how to contact the server. It is a keyword-value plist used to initialize CLASS or a plain list as described in `eglot-server-programs', which see. INTERACTIVE is t if called interactively. (fn MANAGED-MAJOR-MODE PROJECT CLASS CONTACT &optional INTERACTIVE) (defalias 'eglot #[1284 "\300 \211\205 \301!\211\203\203\302\303!\203\304\"\202<\211\2032\3051-\306!0\2021\210\2022\210\307$\207" [eglot-current-server jsonrpc-running-p y-or-n-p "[eglot] Live process found, reconnect instead? " eglot-reconnect (error) eglot-shutdown eglot--connect] 12 (#$ . 32309) (byte-code "\300\301\302!\303\"\207" [append eglot--guess-contact t (t)] 3)]) #@99 Reconnect to SERVER. INTERACTIVE is t if called interactively. (fn SERVER &optional INTERACTIVE) (defalias 'eglot-reconnect #[513 "\300!\203\3011\302\303\304$0\202\210\202\210\305\306!\307!\310!\311!$\210\312\313!\207" [jsonrpc-running-p (error) eglot-shutdown nil preserve-buffers eglot--connect eglot--major-mode eglot--project eieio-object-class-name eglot--saved-initargs eglot--message "Reconnected!"] 8 (#$ . 33961) (byte-code "\300 \301D\207" [eglot--current-server-or-lose t] 2)]) #@60 Start Eglot session for current buffer if there isn't one. (defalias 'eglot-ensure #[0 "p\301C\211\302\303\304\305\306\"\307\"\310$\240\210\205\311\312\242\313\301$\262\207" [buffer-file-name nil make-byte-code 0 "\303\304\301\242\305#\210\300\306!\205r\211q\210\n?\205\307\310\311 \")\207" vconcat vector [eglot--managed-mode remove-hook post-command-hook nil buffer-live-p apply eglot--connect eglot--guess-contact] 4 add-hook post-command-hook append] 10 (#$ . 34473)]) #@109 Display events buffer for SERVER. Use current server's or first available Eglot events buffer. (fn SERVER) (defalias 'eglot-events-buffer #[257 "\211\203\n\300!\202\301\302\303 \304\305\306\307&\211\203\310!\202!\311\312!\207" [jsonrpc-events-buffer cl-find "\\*EGLOT.*events\\*" buffer-list :key buffer-name :test string-match display-buffer eglot--error "Can't find an Eglot events buffer!"] 8 (#$ . 34967) (byte-code "\300 C\207" [eglot-current-server] 1)]) #@48 Display stderr buffer for SERVER. (fn SERVER) (defalias 'eglot-stderr-buffer #[257 "\300\301!!\207" [display-buffer jsonrpc-stderr-buffer] 4 (#$ . 35444) (byte-code "\300 C\207" [eglot--current-server-or-lose] 1)]) #@50 Forget pending requests for SERVER. (fn SERVER) (defalias 'eglot-forget-pending-continuations #[257 "\300!\207" [jsonrpc-forget-pending-continuations] 3 (#$ . 35667) (byte-code "\300 C\207" [eglot--current-server-or-lose] 1)]) #@48 Hook run after connecting in `eglot--connect'. (defvar eglot-connect-hook '(eglot-signal-didChangeConfiguration) (#$ . 35902)) #@318 Hook run after a `eglot-lsp-server' instance is created. That is before a connection was established. Use `eglot-connect-hook' to hook into when a connection was successfully established and the server on the other side has received the initializing configuration. Each function is passed the server as an argument (defvar eglot-server-initialized-hook nil (#$ . 36036)) #@153 Connect to MANAGED-MAJOR-MODE, PROJECT, CLASS and CONTACT. This docstring appeases checkdoc, that's all. (fn MANAGED-MAJOR-MODE PROJECT CLASS CONTACT) (defalias 'eglot--connect #[1028 "\304!\305\306!!\307\310#\311C\312!\203 \202\313@!\203(\211\202y\211A@\250\203B\314\315\316\317\320\321\"\322\"\323$D\202y\211@;\203c\324>\203c\314\315\316\325\320\321#\326\"\323$D\202y\211@;\205y\314\315\316\327\320\321\"\330\"\331$D\332\333\334 \335\336 \337\340!\341\n\342!\343\344& \311C\345\346!C\347\"\266\350 \"\266\351\n\"\266\352\"\266\353\242\"\266\354\355\"\210\315\316\356\320\321!\357\"\360$\216\3611\276\211\2422}\362\363\364\365!\366=?\205\354\367 \370\371!\372\373!\374\375 !\376\377!\257\n\201@\315\201A\201B\320\321%\201C\"\331\201D%\201E\n\201F\315\201A\201G\320\321#\201H\"\201I\201J%\201K\315\316\201L\320\321#\201M\"\201N$& \210 \247\203l\201O\311 \"\202| \205|\201O\311\201P\"\210\202p0\211:\203\241\211@\211\201Q=\203\233A\211\201R!\262\262\202\234\262\202\270\211\204\267\201S\201T\201U!\"\210\311\202\270\2620\202\313\201V!\210\201W\240\262*\207" [default-directory eglot-events-buffer-size eglot-connect-timeout eglot-sync-connect project-root file-name-base directory-file-name format "EGLOT (%s/%s)" nil functionp keywordp :process make-byte-code 0 "\302\303\300\304\301@\301A@\301AA&\207" vconcat vector [apply open-network-stream nil] 7 :autoport "\303\300\302\"\211@A\211\301\240\210\262\207" [eglot--inferior-bootstrap] "\n\303\304\300\305\301\306\307\310\311\312\313\314\315\316\317\300\"!&\f)\207" [default-directory make-process :name :command :connection-type pipe :coding utf-8-emacs-unix :noquery t :stderr get-buffer-create format "*%s stderr*"] 16 #[257 "\300\301\302\303\304!\305\"\306\307%\207" [make-byte-code 771 "\301\300\302\303\"$\207" vconcat vector [apply append nil] 10 "\n\n(fn SERVER METHOD PARAMS)"] 7 "\n\n(fn FN)"] apply make-instance :name :events-buffer-scrollback-size :notification-dispatcher eglot-handle-notification :request-dispatcher eglot-handle-request :on-shutdown eglot--on-shutdown make-symbol "connected-catch-tag" \(setf\ eglot--saved-initargs\) \(setf\ eglot--project\) \(setf\ eglot--project-nickname\) \(setf\ eglot--major-mode\) \(setf\ eglot--inferior-process\) run-hook-with-args eglot-server-initialized-hook "\300\301\240\207" [nil] 2 (quit) jsonrpc-async-request :initialize :processId jsonrpc-process-type network emacs-pid :rootPath expand-file-name :rootUri eglot--path-to-uri :initializationOptions eglot-initialization-options :capabilities eglot-client-capabilities :success-fn 257 "\211\211\306\307\"A@\306\310\"A@\311\312\313 >\314 >\315 >%\210\303\242?\205\270\301-\316\302\317\"B#\266\302\320\"\266\302\321\"\266\322\302\323.#\210\324 \211\203]\211@r\211q\210\325 \210)A\266\202\202H\210\302\326\327/!\203m/?\202\207/\211\330V\262\205\207\331/\332\333\330\334\335\336\302!\337\"\340$#\"\266\341\301!\30001\342 \210\343\344\302\"\210*\345\346\347\350\"\206\250\351\302!\300\352\302!$\210\304\242\205\270\353\304\242\354\"\266\203\207" [eglot-strict-mode plist-member :capabilities :serverInfo eglot--check-object InitializeResult enforce-required-keys disallow-non-standard-keys check-types puthash gethash \(setf\ eglot--capabilities\) \(setf\ eglot--server-info\) jsonrpc-notify :initialized buffer-list eglot--maybe-activate-editing-mode \(setf\ eglot--inhibit-autoreconnect\) booleanp 0 run-with-timer nil make-byte-code "\300\302 ?\"\207" vconcat vector [eglot-autoreconnect \(setf\ eglot--inhibit-autoreconnect\)] 4 project-root hack-dir-local-variables-non-file-buffer run-hook-with-args eglot-connect-hook eglot--message "Connected! Server `%s' now managing `%s' buffers in project `%s'." plist-get :name jsonrpc-name eglot-project-nickname throw t eglot--servers-by-project eglot--{} eglot-autoreconnect major-mode default-directory] "\n\n(fn JSONRPC-LAMBDA-ELEM51)" :timeout :error-fn "\211\211\304\305\"A@\304\306\"A@\307\310\311 >\312 >\313 >%\210\301\242?\205?\314\300!\210\315\316#\302\242\203:\317\302\242\320B\"\202=\321!\262\266\203\207" [eglot-strict-mode plist-member :code :message eglot--check-object ResponseError enforce-required-keys disallow-non-standard-keys check-types jsonrpc-shutdown format "%s: %s" throw error eglot--error] 12 "\n\n(fn JSONRPC-LAMBDA-ELEM52)" :timeout-fn "\301\242?\205!\303\300!\210\304\305!\302\242\203\306\302\242\307B\"\202\310!\262\207" [jsonrpc-shutdown format "Timed out" throw error eglot--error] 5 accept-process-output 30 error eglot--error eglot--message "Waiting in background for server `%s'" jsonrpc-name jsonrpc-shutdown quit] 32 (#$ . 36416)]) #@255 Use CONTACT to start a server, then connect to it. Return a cons of two process objects (CONNECTION . INFERIOR). Name both based on NAME. CONNECT-ARGS are passed as additional arguments to `open-network-stream'. (fn NAME CONTACT &optional CONNECT-ARGS) (defalias 'eglot--inferior-bootstrap #[770 "\300\301\302\303\304\305\306\307\310&\311\310\312\313\314!\315\"\316$\216\317\307\")\320C\320C\311\310\321\313\314#\322\"\323$\216\324\301\325\326 \"\327\325\330 \"\331\304\332\333\325\334\"\335#&\240\210\211\336\337\304\320S\211\262\310Y\203\235\340\320\341\"\210\342\242!\203\235\343\344 #\210\3451\212\346\347\325\350\"\320\306\f&0\202\214\210\320\211\262?\211\262\203\235T\262\202U\266\203\240\210\211\242\242)B\207" [make-network-process :name "eglot-port-probe-dummy" :server t :host "localhost" :service 0 make-byte-code "\301\300!\207" vconcat vector [delete-process] 2 process-contact nil "\303\302\242!\203\303\301\242!\203\304\305\300\"\207\301\242\203\306\301\242!\210\302\242\203'\306\302\242!\210\307\310\301\242\2038\311\312\313\301\242!\"\2029\314\"\207" [process-live-p eglot--message "Done, connected to %s!" delete-process eglot--error "Could not start and connect to server%s" format " started with %s" process-command "!"] 6 make-process format "autostart-inferior-%s" :stderr "*%s stderr*" :noquery :command cl-subst "%s" :autoport 10 1 accept-process-output 0.5 process-live-p eglot--message "Trying to connect to localhost and port %s (attempt %s)" (error) apply open-network-stream "autoconnect-%s"] 20 (#$ . 41225)]) #@58 Error out with FORMAT with ARGS. (fn FORMAT &rest ARGS) (defalias 'eglot--error #[385 "\300\301\302\303#\"\207" [error "[eglot] %s" apply format] 8 (#$ . 42821)]) #@60 Message out with FORMAT with ARGS. (fn FORMAT &rest ARGS) (defalias 'eglot--message #[385 "\300\301\302\303#\"\207" [message "[eglot] %s" apply format] 8 (#$ . 42993)]) #@63 Warning message with FORMAT and ARGS. (fn FORMAT &rest ARGS) (defalias 'eglot--warn #[385 "\301\302\303P#\210\304\305\306\301\307#\310#)\207" [warning-minimum-level apply eglot--message "(warning) " :error display-warning eglot format :warning] 8 (#$ . 43171)]) (defalias 'eglot-current-column #[0 "`\300 Z\207" [point-at-bol] 2]) #@343 Function to calculate the current column. This is the inverse operation of `eglot-move-to-column-function' (which see). It is a function of no arguments returning a column number. For buffers managed by fully LSP-compliant servers, this should be set to `eglot-lsp-abiding-column' (the default), and `eglot-current-column' for all others. (defvar eglot-current-column-function 'eglot-lsp-abiding-column (#$ . 43515)) #@117 Calculate current COLUMN as defined by the LSP spec. LBP defaults to `line-beginning-position'. (fn &optional LBP) (defalias 'eglot-lsp-abiding-column #[256 "\300\206\301 `\302\303$G\304Z\304\245\207" [encode-coding-region line-beginning-position utf-16 t 2] 6 (#$ . 43942)]) #@56 Convert point POS to LSP position. (fn &optional POS) (defalias 'eglot--pos-to-lsp-position #[256 "\212\214~\210\301\302\303\"S\304\203b\210 F*\207" [eglot-current-column-function :line line-number-at-pos t :character] 5 (#$ . 44228)]) #@541 Function to move to a column reported by the LSP server. According to the standard, LSP column/character offsets are based on a count of UTF-16 code units, not actual visual columns. So when LSP says position 3 of a line containing just "aXbc", where X is a multi-byte character, it actually means `b', not `c'. However, many servers don't follow the spec this closely. For buffers managed by fully LSP-compliant servers, this should be set to `eglot-move-to-lsp-abiding-column' (the default), and `eglot-move-to-column' for all others. (defvar eglot-move-to-column-function 'eglot-move-to-lsp-abiding-column (#$ . 44478)) #@69 Move to COLUMN without closely following the LSP spec. (fn COLUMN) (defalias 'eglot-move-to-column #[257 "\300 \\\301 ^b\207" [line-beginning-position line-end-position] 3 (#$ . 45110)]) #@54 Move to COLUMN abiding by the LSP spec. (fn COLUMN) (defalias 'eglot-move-to-lsp-abiding-column #[257 "\214\3002D\301 \302\303 }\210\304!\210\305!Z\262\211\306U\204@\30716\211\306V\203-\211T\202/\211S\310\245u0\202<\311\300\"\262\210\202\302\266\2020)\207" [--cl-block-nil-- line-beginning-position nil line-end-position move-to-column eglot-lsp-abiding-column 0 (end-of-buffer) 2 throw] 7 (#$ . 45305)]) #@125 Convert LSP position POS-PLIST to Emacs point. If optional MARKER, return a marker instead (fn POS-PLIST &optional MARKER) (defalias 'eglot--lsp-position-to-point #[513 "\212\214~\210eb\210\303\304\"^y\210m\204/\305\303\306\"\307!\204(\310\311\"\210\312\262\n!\210)\266\211\203:\313\314 !\202;`*\207" [most-positive-fixnum tab-width eglot-move-to-column-function plist-get :line 1 :character wholenump eglot--warn "Caution: LSP server sent invalid character position %s. Using 0 instead." 0 copy-marker point-marker] 7 (#$ . 45733)]) #@24 URIfy PATH. (fn PATH) (defalias 'eglot--path-to-uri #[257 "\302\303\304=\205 \305\306!Q \"\207" [system-type url-path-allowed-chars url-hexify-string "file://" windows-nt "/" file-truename] 6 (#$ . 46288)]) #@39 Convert URI to a file path. (fn URI) (defalias 'eglot--uri-to-path #[257 "\302!\203\303!\304\305O\262\306\307!!\310!>\204\"\311\312\313D\"\210\211\314H\262 \315=\2034\211\304\305O\2025\211\207" [cl-struct-url-tags system-type keywordp symbol-name 1 nil url-generic-parse-url url-unhex-string type-of signal wrong-type-argument url 6 windows-nt] 6 (#$ . 46505)]) #@84 Compute a function to expand snippets. Doubles as an indicator of snippet support. (defalias 'eglot--snippet-expansion-fn #[0 "\300\301!\205\f\301J\205\f\302\207" [boundp yas-minor-mode yas-expand-snippet] 2 (#$ . 46887)]) #@53 Format MARKUP according to LSP's spec. (fn MARKUP) (defalias 'eglot--format-markup #[257 "\211;\203 \211\303D\202+\304\305\"\304\306\"\211\307\232\203\303\202(\211\310\232\203'\311\202(\262D\211@A\211@A\312\313!r\211q\210\314\315\316\317\320!\321\"\322$\216\323\301!\210\324c\210\3251b\323\302!\210\324 )0\202f\210\202g\210\326 \210\327ed\"\330\211\331\332\206y\333\334Q\"\203\213\335\336\324\211$\266\202\202\216\266\202\331\337\206\226\333\340Q\"\203\250\335\336\324\211$\266\205\202\253\266\205*\262\266\202\207" [major-mode markdown-fontify-code-blocks-natively delay-mode-hooks gfm-view-mode plist-get :value :kind "markdown" "plaintext" text-mode generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 make-local-variable t (error) font-lock-ensure filter-buffer-substring nil string-match "\\(?:" "[ \n ]+" "\\)\\'" replace-match "" "\\`\\(?:" "\\)"] 19 (#$ . 47118)]) (byte-code "\300\301\302\303\304DD\305\306\307%\207" [custom-declare-variable eglot-ignored-server-capabilites funcall function #[0 "\300\207" [nil] 1] "LSP server capabilities that Eglot could use, but won't.\nYou could add, for instance, the symbol\n`:documentHighlightProvider' to prevent automatic highlighting\nunder cursor." :type (repeat (choice (const :tag "Documentation on hover" :hoverProvider) (const :tag "Code completion" :completionProvider) (const :tag "Function signature help" :signatureHelpProvider) (const :tag "Go to definition" :definitionProvider) (const :tag "Go to type definition" :typeDefinitionProvider) (const :tag "Go to implementation" :implementationProvider) (const :tag "Go to declaration" :implementationProvider) (const :tag "Find references" :referencesProvider) (const :tag "Highlight symbols automatically" :documentHighlightProvider) (const :tag "List symbols in buffer" :documentSymbolProvider) (const :tag "List symbols in workspace" :workspaceSymbolProvider) (const :tag "Execute code actions" :codeActionProvider) (const :tag "Code lens" :codeLensProvider) (const :tag "Format buffer" :documentFormattingProvider) (const :tag "Format portion of buffer" :documentRangeFormattingProvider) (const :tag "On-type formatting" :documentOnTypeFormattingProvider) (const :tag "Rename symbol" :renameProvider) (const :tag "Highlight links in document" :documentLinkProvider) (const :tag "Decorate color references" :colorProvider) (const :tag "Fold regions of buffer" :foldingRangeProvider) (const :tag "Execute custom commands" :executeCommandProvider) (symbol :tag "Other")))] 6) #@68 Determine if current server is capable of FEATS. (fn &rest FEATS) (defalias 'eglot--server-capable #[128 "\300\301\"?\205{\3022{\303\303\211\211\304\211\203\305\306 !\202 A@\262:\203l\262\211A\262\242\262\307\"\262\204B\310\302\303\"\210A@\311=\203O\310\302\303\"\210A@<\204b\310\302?\205`A@\"\210A\262\303\262\202\310\302A@\206u\304\"\210\303\266\2060\207" [cl-some #[257 "\211>\207" [eglot-ignored-server-capabilites] 3 "\n\n(fn FEAT)"] --cl-block-nil-- nil t eglot--capabilities eglot--current-server-or-lose plist-member throw :json-false] 10 (#$ . 49725)]) #@119 Return region (BEG . END) that represents LSP RANGE. If optional MARKERS, make markers. (fn RANGE &optional MARKERS) (defalias 'eglot--range-region #[513 "\300\301\"\302\"\302\300\303\"\"B\207" [plist-get :start eglot--lsp-position-to-point :end] 8 (#$ . 50332)]) #@233 Read a running Eglot server from minibuffer using PROMPT. If DONT-IF-JUST-THE-ONE and there's only one server, don't prompt and just return it. PROMPT shouldn't end with a question mark. (fn PROMPT &optional DONT-IF-JUST-THE-ONE) (defalias 'eglot--read-server #[513 "\301C\302\303\304\305\306\307!\310\"\311\312%\"\210\211\242\237\262\313\204#\314\315!\202fA\204,\204d\316 \211\2055!\262\317\203E\320\321#\202H\322P\323\"\301\324\301\211&\325\326\327\330&\266\202\202f@\207" [eglot--servers-by-project nil maphash make-byte-code 514 "\300\301!\300\242\244\240\207" vconcat vector [reverse] 5 "\n\n(fn --CL-VAR-- SERVERS)" #[257 "\300\301\302!\303!#\207" [format "%s/%s" eglot-project-nickname eglot--major-mode] 6 "\n\n(fn SRV)"] eglot--error "No servers!" eglot-current-server completing-read format "%s (default %s)? " "? " mapcar t cl-find :key :test equal] 13 (#$ . 50611)]) (defvar eglot-mode-map (byte-code "\300 \301\302\303#\210\211\207" [make-sparse-keymap define-key [remap display-local-help] eldoc-doc-buffer] 5)) #@49 Current flymake report function for this buffer (defvar eglot--current-flymake-report-fn nil (#$ . 51684)) (make-variable-buffer-local 'eglot--current-flymake-report-fn) #@41 Bindings saved by `eglot--setq-saving'. (defvar eglot--saved-bindings nil (#$ . 51860)) (make-variable-buffer-local 'eglot--saved-bindings) #@816 List of Emacs things that Eglot should try to stay of. Each element is a string, a symbol, or a regexp which is matched against a variable's name. Examples include the string "company" or the symbol `xref'. Before Eglot starts "managing" a particular buffer, it opinionatedly sets some peripheral Emacs facilites, such as Flymake, Xref and Company. These overriding settings help ensure consistent Eglot behaviour and only stay in place until "managing" stops (usually via `eglot-shutdown'), whereupon the previous settings are restored. However, if you wish for Eglot to stay out of a particular Emacs facility that you'd like to keep control of add an element to this list and Eglot will refrain from setting it. For example, to keep your Company customization use (add-to-list 'eglot-stay-out-of 'company) (defvar eglot-stay-out-of nil (#$ . 52007)) #@54 Tell if EGLOT should stay of of SYMBOL. (fn SYMBOL) (defalias 'eglot--stay-out-of-p #[257 "\301\302!\303\304$\207" [eglot-stay-out-of cl-find symbol-name :test #[514 "\2119\203 \300!\202\f\211\301\"\207" [symbol-name string-match] 6 "\n\n(fn S THING)"]] 6 (#$ . 52872)]) #@23 (fn SYMBOL BINDING) (defalias 'eglot--setq-saving '(macro . #[514 "\300\301\302\303\304DDD\305\304DDE\306\307\304D\310\304DDE\311BB\312EF\207" [unless or not boundp quote eglot--stay-out-of-p push cons symbol-value (eglot--saved-bindings) setq-local] 10 (#$ . 53157)])) #@49 A cached reference to the current EGLOT server. (defvar eglot--cached-server nil (#$ . 53445)) (make-variable-buffer-local 'eglot--cached-server) #@45 Tell if current buffer is managed by EGLOT. (defalias 'eglot-managed-p #[0 "\207" [eglot--managed-mode] 1 (#$ . 53597)]) (make-obsolete-variable 'eglot--managed-mode-hook 'eglot-managed-mode-hook "1.6") #@130 A hook run by EGLOT after it started/stopped managing a buffer. Use `eglot-managed-p' to determine if current buffer is managed. (defvar eglot-managed-mode-hook nil (#$ . 53808)) #@107 Non-nil if Eglot--Managed mode is enabled. Use the command `eglot--managed-mode' to change this variable. (defvar eglot--managed-mode nil (#$ . 53994)) (make-variable-buffer-local 'eglot--managed-mode) #@76 Mode for source buffers managed by some EGLOT project. (fn &optional ARG) (defalias 'eglot--managed-mode #[256 "\306 \307=\203 ?\202\310!\311V\211\203E\312\313\314\315\316$\210\312\317\320\315\316$\210\312\321\322\315\316$\210\312\321\323\315\316$\210\312\324\323\315\316$\210\312\325\326\315\316$\210\312\327\330\315\316$\210\312\331\332\315\316$\210\333\334!\204\\\312\335\336\315\316$\210\312\337\340\315\316$\210\312\341\322\315\316$\210\312\342\343\315\316$\210\312\344\345\315\316$\210\346\302!\203\221\333\302!\204\221\302\211JB B\347\302!\210\350\346\303!\203\252\333\303!\204\252\303\211JB B\347\303!\210\351\346\304!\203\303\333\304!\204\303\304\211JB B\347\304!\210\315\346\305!\203\334\333\305!\204\334\305\211JB B\347\305!\210\352\346\353!\203\366\333\353!\204\366\353\211JB B\347\353!\210\354+\346\355!\203\333\355!\204\355\211JB B\347\355!\210\316-\333\356!\204\357\360\361\362B\363\315$\210\364\365!\210\366\365!\210p@\367\370!\371\"\2039\211\202<B\262\"\266\202\364\372\313\314\316#\210\372\317\320\316#\210\372\321\322\316#\210\372\321\323\316#\210\372\324\323\316#\210\372\325\326\316#\210\372\327\330\316#\210\372\331\332\316#\210\372\335\336\316#\210\372\337\340\316#\210\372\341\322\316#\210\372\342\343\316#\210\372\344\345\316#\210 \315\211:\203\264@\262\211A\262\242\262\347!L\210A\262\202\226\266\373\374\375!\363\"\211\374\375!=\204\311\376\375\"\210\210\315A@\315@\211\203\363\211\367\377p\370!\"\"\266B\203\363\370!\204\363\201C!\210\210\201D\201E!\210\201D\201F\203\f\201G\202\201H\"\210\201I\201J!\203A\306 \203'\211\306 \232\203A\201K\201L\201M\203:\201N\202=\201O#\266\210\201P \210\207" [eglot--managed-mode eglot--saved-bindings eldoc-documentation-functions eldoc-documentation-strategy xref-prompt-for-identifier flymake-diagnostic-functions current-message toggle prefix-numeric-value 0 add-hook after-change-functions eglot--after-change nil t before-change-functions eglot--before-change kill-buffer-hook eglot--managed-mode-off eglot--signal-textDocument/didClose before-revert-hook after-revert-hook eglot--after-revert-hook before-save-hook eglot--signal-textDocument/willSave after-save-hook eglot--signal-textDocument/didSave eglot--stay-out-of-p xref xref-backend-functions eglot-xref-backend completion-at-point-functions eglot-completion-at-point change-major-mode-hook post-self-insert-hook eglot--post-self-insert-hook pre-command-hook eglot--pre-command-hook boundp make-local-variable (eglot-signature-eldoc-function eglot-hover-eldoc-function) eldoc-documentation-enthusiast (eglot-flymake-backend t) company-backends (company-capf) company-tooltip-align-annotations imenu advice--add-function :before-until #[0 "\300\301!\207" [advice--buffer-local imenu-create-index-function] 2] #[257 "\300\301\"\207" [advice--set-buffer-local imenu-create-index-function] 4 "\n\n(fn GV--VAL)"] eglot-imenu flymake-mode 1 eldoc-mode \(setf\ eglot--managed-buffers\) eglot--managed-buffers memql remove-hook advice--remove-function advice--buffer-local imenu-create-index-function advice--set-buffer-local delq eglot--cached-server eglot--current-flymake-report-fn eglot-autoshutdown eglot-shutdown run-hooks eglot-managed-mode-hook eglot--managed-mode-hook eglot--managed-mode-on-hook eglot--managed-mode-off-hook called-interactively-p any " in current buffer" message "Eglot--Managed mode %sabled%s" "en" "dis" force-mode-line-update] 10 (#$ . 54202) (byte-code "\206\301C\207" [current-prefix-arg toggle] 1)]) (defvar eglot--managed-mode-hook nil) (byte-code "\301\302N\204\f\303\301\302\304#\210\305\306\307\307\211%\207" [eglot-mode-map eglot--managed-mode-hook variable-documentation put "Hook run after entering or leaving `eglot--managed-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" add-minor-mode eglot--managed-mode nil] 6) #@49 Turn off `eglot--managed-mode' unconditionally. (defalias 'eglot--managed-mode-off #[0 "\300\301!\207" [eglot--managed-mode -1] 2 (#$ . 58183)]) #@62 Return logical EGLOT server for current buffer, nil if none. (defalias 'eglot-current-server #[0 "\207" [eglot--cached-server] 1 (#$ . 58334)]) #@58 Return current logical EGLOT server connection or error. (defalias 'eglot--current-server-or-lose #[0 "\206\301\302!\207" [eglot--cached-server jsonrpc-error "No current JSON-RPC connection"] 2 (#$ . 58485)]) #@49 Unreported Flymake diagnostics for this buffer. (defvar eglot--unreported-diagnostics nil (#$ . 58703)) (make-variable-buffer-local 'eglot--unreported-diagnostics) #@30 Eglot's `after-revert-hook'. (defalias 'eglot--after-revert-hook #[0 "\205\301 \207" [revert-buffer-preserve-modes eglot--signal-textDocument/didOpen] 1 (#$ . 58873)]) #@94 Maybe activate `eglot--managed-mode'. If it is activated, also signal textDocument/didOpen. (defalias 'eglot--maybe-activate-editing-mode #[0 "?\205* \205*\n\204\"\306 \307\310 \206\311\fB \"\312\313$\211\205*\314\300 \210\315 \207" [eglot--managed-mode buffer-file-name eglot--cached-server major-mode default-directory eglot--servers-by-project cl-find gethash project-current transient :key eglot--major-mode (:just-opened) eglot--signal-textDocument/didOpen eglot--unreported-diagnostics] 5 (#$ . 59050)]) (byte-code "\300\301\302\"\210\300\303\302\"\207" [add-hook find-file-hook eglot--maybe-activate-editing-mode after-change-major-mode-hook] 3) #@55 Clear the last JSONRPC error for SERVER. (fn SERVER) (defalias 'eglot-clear-status #[257 "\211\300\301\"\207" [\(setf\ jsonrpc-last-error\) nil] 5 (#$ . 59720) (byte-code "\300 C\207" [eglot--current-server-or-lose] 1)]) (defvar eglot--mode-line-format '(:eval (eglot--mode-line-format))) (put 'eglot--mode-line-format 'risky-local-variable t) #@72 Make an interactive lambda for calling WHAT from mode-line. (fn WHAT) (defalias 'eglot--mouse-call #[257 "\300\301\302\303\304!\305\"\306\307\310&\207" [make-byte-code 257 "\301!\302\211@\262!r\303\304\305\306\307!\310\"\311$\216\312@\313\"\210\212\314!\206%`b\210\315\300!\210\316\317!+\262\207" vconcat vector [event-start internal--before-with-selected-window make-byte-code 0 "\301\300!\207" vconcat vector [internal--after-with-selected-window] 2 select-window norecord posn-point call-interactively force-mode-line-update t] 9 "\n\n(fn EVENT)" "e"] 8 (#$ . 60072)]) #@124 Helper for function `eglot--mode-line-format'. Uses THING, FACE, DEFS and PREPEND. (fn THING FACE DEFS &optional PREPEND) (defalias 'eglot--mode-line-props #[1027 "\300 \301\211\211\211\211\211\302:\203_\262\211A\262\242\262\262\211A\262\242\262\211A\262\242\262@\262\303 \304\305\"\306!#\210\211\307\310#P\262\203W\211\311P\262A\262\202\n\312 \313\314 \315P\316BBBBBBBB\207" [make-sparse-keymap nil "" define-key vector mode-line eglot--mouse-call format "%s: %s" "\n" :propertize face keymap help-echo (mouse-face mode-line-highlight)] 22 (#$ . 60662)]) #@32 Compose the EGLOT's mode-line. (defalias 'eglot--mode-line-format #[0 "\300 \211\205 \301!\205\302\303!!\205\304!\211@A\211@A\211@A\211@A\n\2058\305!\306\307\310\311\312#C\205\212\313\307\311\314#\306\205_\315\307\316\317\320\321\322\323 \324\"\"$D\205r ?\205r\315\307\n\325\312#D\211\326V\262\205\207\315\307\321\327\"\330\331#D#BB\"\262\266\204\207" [eglot-current-server eglot-project-nickname hash-table-count jsonrpc--request-continuations eglot--spinner jsonrpc-last-error append eglot--mode-line-props "eglot" eglot-mode-line nil ":" ((C-mouse-1 eglot-stderr-buffer "go to stderr buffer") (mouse-1 eglot-events-buffer "go to events buffer") (mouse-2 eglot-shutdown "quit server") (mouse-3 eglot-reconnect "reconnect to server")) "/" "error" compilation-mode-line-fail ((mouse-3 eglot-clear-status "clear this status")) format "An error occured: %s\n" plist-get :message compilation-mode-line-run 0 "%d" warning ((mouse-3 eglot-forget-pending-continuations "forget pending continuations"))] 32 (#$ . 61272)]) (byte-code "\300\301\302\"\210\303\304\305\306#\210\303\307\305\310#\210\303\311\305\312#\210\313\314\315\"\210\313\316\317\"\210\320\321\322:\203T@\262\303\323\324\325\326\\B\327\330 \331\332\333\334!#\210\211\262BE#\210T\262A\262\202$\266\335\336\322\337\322\340%\210\335\341\322\342\322\343%\210\335\344\322\345\322\346%\210\335\336\322\347\322\350%\210\335\341\322\351\322\352%\210\335\336\322\353\322\354%\210\335\336\322\355\322\356%\210\335\336\322\357\322\360%\207" [add-to-list mode-line-misc-info (eglot--managed-mode (" [" eglot--mode-line-format "] ")) put eglot-note flymake-category flymake-note eglot-warning flymake-warning eglot-error flymake-error defalias eglot--make-diag flymake-make-diagnostic eglot--diag-data flymake-diagnostic-data 1 (eglot-note eglot-warning eglot-error) nil flymake-overlay-control (mouse-face . highlight) priority 50 keymap make-sparse-keymap define-key [mouse-1] eglot--mouse-call eglot-code-actions cl-generic-define-method eglot-handle-notification (_server method &key &allow-other-keys) #[642 "\301\302\303\304\"\"\206\305>??\205\306\307\"\207" [eglot-strict-mode string-prefix-p "$" format "%s" disallow-unknown-methods eglot--warn "Server sent unknown notification method `%s'"] 8 "Handle unknown notification\n\n(fn SERVER METHOD &key &allow-other-keys)"] eglot-handle-request (_server method &key &allow-other-keys) #[642 "\301>\205\n\302\303\"\207" [eglot-strict-mode disallow-unknown-methods jsonrpc-error "Unknown request method `%s'"] 6 "Handle unknown request\n\n(fn SERVER METHOD &key &allow-other-keys)"] eglot-execute-command (server command arguments) #[771 "\300\301\302\303\304\"\305F#\207" [jsonrpc-request :workspace/executeCommand :command format "%s" :arguments] 10 "Execute COMMAND on SERVER with `:workspace/executeCommand'.\nCOMMAND is a symbol naming the command.\n\n(fn SERVER COMMAND ARGUMENTS)"] (_server (_method (eql window/showMessage)) &key type message) #[642 "\300\301\"A@\300\302\"A@\211\2037\211@\303>\203 \211AA\262\202 \304>A@\203.\305\262\202 \306\307@\"\210\202 \210\310\311\312\313\314X\205C\306##\207" [plist-member :type :message (:type :message . #1=(:allow-other-keys)) :allow-other-keys nil error "Keyword argument %s not one of (:type :message)" eglot--message propertize "Server reports (type=%s): %s" face 1] 11 "Handle notification window/showMessage\n\n(fn SERVER METHOD &key TYPE MESSAGE)"] (_server (_method (eql window/showMessageRequest)) &key type message actions) #[642 "\300\301\"A@\300\302\"A@\300\303\"A@\211\203=\211@\304>\203&\211AA\262\202\305>A@\2034\306\262\202\307\310@\"\210\202\210\311\312\313\314\315\316X\205K\307##\317P\320\321\"\206Y\322\306\323\324\325\234\326\"%\211\203m\326D\202n\327\262\207" [plist-member :type :message :actions (:type :message :actions . #1#) :allow-other-keys nil error "Keyword argument %s not one of (:type :message :actions)" completing-read format propertize "[eglot] Server reports (type=%s): %s" face 1 "\nChoose an option: " mapcar #[257 "\300\301\"\207" [plist-get :title] 4 "\n\n(fn OBJ)"] ("OK") t plist-get 0 :title :null] 14 "Handle server request window/showMessageRequest\n\n(fn SERVER METHOD &key TYPE MESSAGE ACTIONS)"] (_server (_method (eql window/logMessage)) &key _type _message) #[642 "\300\301\"A@\300\302\"A@\211\2037\211@\303>\203 \211AA\262\202 \304>A@\203.\305\262\202 \306\307@\"\210\202 \210\310\207" [plist-member :type :message (:type :message . #1#) :allow-other-keys nil error "Keyword argument %s not one of (:type :message)" "Handle notification window/logMessage"] 9 "\n\n(fn SERVER METHOD &key TYPE MESSAGE)"] (_server (_method (eql telemetry/event)) &rest _any) #[642 "\300\207" ["Handle notification telemetry/event"] 4 "\n\n(fn SERVER METHOD &rest ANY)"] (server (_method (eql textDocument/publishDiagnostics)) &key uri diagnostics &allow-other-keys) #[642 "\304\305\"A@\304\306\"A@\307\310!!\211\203r\211q\210\311\312\211T\211\262GW\203\352H\262\211\211\304\313\"A@\304\314\"A@\304\315\"A@\304\316\"A@\317\320\321>\322>\323>%\210\211\324Q\262\325!\211@A\211\211U\203\265\326\n\327\"\211\205\202\330p\326\331\"T\326\332\"#\211\203\221\211@\262\211A\262\202\263\212\214~\210eb\210\333\326\211\327\"\331\"T!\262\334\326\211\335\"\331\"T!\262*\266\336p \337X\203\304\340\202\320 \341U\203\317\342\202\320\343 \344BC&\266\202\266\202\266\202\266\205\262C\244\262\202 \203\n\203\214~\210\n\345edB#\210)\312\202\346B\312\266\204)\202\347\350#\262\207" [eglot-strict-mode flymake-mode eglot--current-flymake-report-fn eglot--unreported-diagnostics plist-member :uri :diagnostics find-buffer-visiting eglot--uri-to-path -1 nil :range :message :severity :source eglot--check-object Diagnostic enforce-required-keys disallow-non-standard-keys check-types ": " eglot--range-region plist-get :start flymake-diag-region :line :character point-at-bol point-at-eol :end eglot--make-diag 1 eglot-error 2 eglot-warning eglot-note eglot-lsp-diag :region t jsonrpc--debug "Diagnostics received for unvisited %s"] 31 "Handle notification publishDiagnostics\n\n(fn SERVER METHOD &key URI DIAGNOSTICS &allow-other-keys)"]] 15) #@117 Helper for `registerCapability'. THINGS are either registrations or unregisterations (sic). (fn SERVER THINGS HOW) (defalias 'eglot--register-unregister #[771 "\301\302\"\303:\203f@\262\211\211\304\305\"A@\304\306\"A@\304\307\"A@\310\311\312>\313>\314>%\210\315\316 \317\"\203>\320\202T\316 \321\"\203J\322\202T\323\324\n\325#\205T\303 \326!%\266A\262\202\303\207" [eglot-strict-mode cl-coerce list nil plist-member :id :method :registerOptions eglot--check-object Registration enforce-required-keys disallow-non-standard-keys check-types apply eql register eglot-register-capability unregister eglot-unregister-capability error "cl-ecase failed: %s, %s" (register unregister) intern] 17 (#$ . 67598)]) (byte-code "\300\301\302\303\302\304%\210\300\301\302\305\302\306%\210\300\301\302\307\302\310%\207" [cl-generic-define-method eglot-handle-request nil (server (_method (eql client/registerCapability)) &key registrations) #[642 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310#\207" [plist-member :registrations (:registrations . #1=(:allow-other-keys)) :allow-other-keys nil error "Keyword argument %s not one of (:registrations)" eglot--register-unregister register] 8 "Handle server request client/registerCapability\n\n(fn SERVER METHOD &key REGISTRATIONS)"] (server (_method (eql client/unregisterCapability)) &key unregisterations) #[642 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310#\207" [plist-member :unregisterations (:unregisterations . #1#) :allow-other-keys nil error "Keyword argument %s not one of (:unregisterations)" eglot--register-unregister unregister] 8 "Handle server request client/unregisterCapability\n\n(fn SERVER METHOD &key UNREGISTERATIONS)"] (_server (_method (eql workspace/applyEdit)) &key _label edit) #[642 "\301\302\"A@\301\303\"A@\211\2037\211@\304>\203 \211AA\262\202 \305>A@\203.\306\262\202 \307\310@\"\210\202 \210\311\"\207" [eglot-confirm-server-initiated-edits plist-member :label :edit (:label :edit . #1#) :allow-other-keys nil error "Keyword argument %s not one of (:label :edit)" eglot--apply-workspace-edit] 9 "Handle server request workspace/applyEdit\n\n(fn SERVER METHOD &key LABEL EDIT)"]] 6) #@59 Compute TextDocumentIdentifier object for current buffer. (defalias 'eglot--TextDocumentIdentifier #[0 "\301\302\206\3031\300\304 !0\202\210\305!D\207" [buffer-file-name :uri eglot--path-to-uri (error) buffer-base-buffer nil] 4 (#$ . 69953)]) (defvar eglot--versioned-identifier 0 nil) (make-variable-buffer-local 'eglot--versioned-identifier) #@68 Compute VersionedTextDocumentIdentifier object for current buffer. (defalias 'eglot--VersionedTextDocumentIdentifier #[0 "\301\302 \303D\"\207" [eglot--versioned-identifier append eglot--TextDocumentIdentifier :version] 4 (#$ . 70310)]) #@53 Compute TextDocumentItem object for current buffer. (defalias 'eglot--TextDocumentItem #[0 "\301\302 \303\304\305\306!\"\203\307\310\306!\"\202\311\312\212\214~\210\313ed\"*F\"\207" [major-mode append eglot--VersionedTextDocumentIdentifier :languageId string-match "\\(.*\\)-mode" symbol-name match-string 1 "unknown" :text buffer-substring-no-properties] 8 (#$ . 70554)]) #@37 Compute TextDocumentPositionParams. (defalias 'eglot--TextDocumentPositionParams #[0 "\300\301 \302\303 F\207" [:textDocument eglot--TextDocumentIdentifier :position eglot--pos-to-lsp-position] 4 (#$ . 70939)]) #@61 If non-nil, value of the last inserted character in buffer. (defvar eglot--last-inserted-char nil (#$ . 71156)) (make-variable-buffer-local 'eglot--last-inserted-char) #@34 Set `eglot--last-inserted-char'. (defalias 'eglot--post-self-insert-hook #[0 "\211\207" [last-input-event eglot--last-inserted-char] 2 (#$ . 71330)]) #@36 Reset `eglot--last-inserted-char'. (defalias 'eglot--pre-command-hook #[0 "\301\211\207" [eglot--last-inserted-char nil] 2 (#$ . 71488)]) (defalias 'eglot--CompletionParams #[0 "\301\302 \303\304!\205\305\306\307\310\"\311\312\313\314&\211\203\"\315\316\317F\202#\320\262D\"\207" [eglot--last-inserted-char append eglot--TextDocumentPositionParams :context characterp cl-find eglot--server-capable :completionProvider :triggerCharacters :key #[257 "\211\300H\207" [0] 3 "\n\n(fn STR)"] :test char-equal :triggerKind 2 :triggerCharacter (:triggerKind 1)] 10]) #@63 Recent buffer changes as collected by `eglot--before-change'. (defvar eglot--recent-changes nil (#$ . 72063)) (byte-code "\300\301!\210\302\303\304\305\306\307%\207" [make-variable-buffer-local eglot--recent-changes cl-generic-define-method jsonrpc-connection-ready-p nil ((_server eglot-lsp-server) _what) t #[771 " \205?\207" [eglot--recent-changes] 4 "Tell if SERVER is ready for WHAT in current buffer.\n\n(fn CL--CNM SERVER WHAT)"]] 6) #@35 Idle timer for didChange signals. (defvar eglot--change-idle-timer nil (#$ . 72514)) (make-variable-buffer-local 'eglot--change-idle-timer) #@69 Hook onto `before-change-functions' with BEG and END. (fn BEG END) (defalias 'eglot--before-change #[514 "<\205\301!\301!\302\303\"B\302\304\"BFB\211\207" [eglot--recent-changes eglot--pos-to-lsp-position copy-marker nil t] 9 (#$ . 72660)]) #@117 Hook onto `after-change-functions'. Records BEG, END and PRE-CHANGE-LENGTH locally. (fn BEG END PRE-CHANGE-LENGTH) (defalias 'eglot--after-change #[771 "T <\205\n @\211:\203\270\211@A\211:\203\261\211@A\211:\203\252\211@\211:\203\244\211@AA\211:\203\235\211@\211:\203\227\211@AA\211\204\220  U\203}U\203}U\203iU\204} Z\304 \"F\240\210\202\213 \304\"F\240\210\266\202\222\305\266\202\231\305\210\202\237\305\266\202\246\305\210\202\254\305\266\202\263\305\266\202\272\305\210\n\203\303\306\n!\210p\307 \310\311\312\313\314\315!\316\"\317$#\211\207" [eglot--versioned-identifier eglot--recent-changes eglot--change-idle-timer eglot-send-changes-idle-time buffer-substring-no-properties :emacs-messup cancel-timer run-with-idle-timer nil make-byte-code 0 "\300\303!\205r\211q\210 \205\304 \210\305\211)\207" vconcat vector [eglot--managed-mode eglot--change-idle-timer buffer-live-p eglot--signal-textDocument/didChange nil] 3] 29 (#$ . 72920)]) (advice-add 'jsonrpc-request :before #[899 "\301\302\"A@\205\211\205\303 \207" [eglot--managed-mode plist-member :deferred eglot--signal-textDocument/didChange] 7 "\n\n(fn PROC METHOD PARAMS &key DEFERRED &allow-other-keys)"] '((name . eglot--signal-textDocument/didChange))) #@158 Alist of (SECTION . VALUE) entries configuring the LSP server. SECTION should be a keyword or a string, value can be anything that can be converted to JSON. (defvar eglot-workspace-configuration nil (#$ . 74239)) (byte-code "\300\301!\210\302\301\303\304#\207" [make-variable-buffer-local eglot-workspace-configuration put safe-local-variable listp] 4) #@134 Send a `:workspace/didChangeConfiguration' signal to SERVER. When called interactively, use the currently active server (fn SERVER) (defalias 'eglot-signal-didChangeConfiguration #[257 "\301\302\303\304\211\211:\2039@\262\211A\262\242\262\305!\203#\202)\306\307\310\"!B\262B\262A\262\202\211\237\266\204D#\207" [eglot-workspace-configuration jsonrpc-notify :workspace/didChangeConfiguration :settings nil keywordp intern format ":%s"] 13 (#$ . 74599) (byte-code "\300 C\207" [eglot--current-server-or-lose] 1)]) (cl-generic-define-method 'eglot-handle-request nil '(server (_method (eql workspace/configuration)) &key items) nil #[642 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307\310\311\312\313\314\315\310 !\316\"\317\320%\"\"\207" [plist-member :items (:items :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:items)" apply vector mapcar make-byte-code 257 "\211\211\305\306\"A@\305\307\"A@\310\311\312 >\313 >\314 >%\210\315\316!r\211q\210\317\320\321\322\323!\324\"\325$\216\326!\211\211\327\230\262\204E\330!\203E\211\202J\331\332\300!!\333\303!\210\334\300!\335 \210\336\f\337\211\340%)\262*\262\266\203\207" vconcat [eglot-strict-mode default-directory major-mode eglot-workspace-configuration plist-member :scopeUri :section eglot--check-object ConfigurationItem enforce-required-keys disallow-non-standard-keys check-types generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 eglot--uri-to-path "" file-directory-p project-root eglot--project make-local-variable eglot--major-mode hack-dir-local-variables-non-file-buffer alist-get nil #[514 "\300!\203\301!\302\303O\202\230\207" [keywordp symbol-name 1 nil] 5 "\n\n(fn WSECTION SECTION)"]] 13 "\n\n(fn JSONRPC-LAMBDA-ELEM54)"] 13 "Handle server request workspace/configuration.\n\n(fn SERVER METHOD &key ITEMS)"]) #@40 Send textDocument/didChange to server. (defalias 'eglot--signal-textDocument/didChange #[0 "\205\245\301 \302\303!\211\247\203\211\202\304\305\"\211\306=\206\307=\310\311\312\313 \314\203;\315\316\212\214~\210\317ed\"*D!\202\221\320!\321\211\211\211\211\322:\203\217@\262\211A\262\242\262\211A\262\242\262\211A\262\242\262@\262\247\203\207\323\315\324\325\n\326 F\327 \316\n\257!\"\262A\262\202D\266\206F#\210\321\330\321\311\331E\"\266\332!\266\204\207" [eglot--recent-changes eglot--current-server-or-lose eglot--server-capable :textDocumentSync plist-get :change 1 :emacs-messup jsonrpc-notify :textDocument/didChange :textDocument eglot--VersionedTextDocumentIdentifier :contentChanges vector :text buffer-substring-no-properties reverse nil [] vconcat :range :start :end :rangeLength \(setf\ eglot--spinner\) t jsonrpc--call-deferred] 26 (#$ . 76601)]) #@38 Send textDocument/didOpen to server. (defalias 'eglot--signal-textDocument/didOpen #[0 "\302\303\304\305 \306\307\310 D#\207" [eglot--recent-changes eglot--versioned-identifier nil 0 jsonrpc-notify eglot--current-server-or-lose :textDocument/didOpen :textDocument eglot--TextDocumentItem] 5 (#$ . 77516)]) #@39 Send textDocument/didClose to server. (defalias 'eglot--signal-textDocument/didClose #[0 "\3001\301\302 \303\304\305 D#0\207\306\307\"\210\310\207" [(debug error) jsonrpc-notify eglot--current-server-or-lose :textDocument/didClose :textDocument eglot--TextDocumentIdentifier message "[eglot] error sending textDocument/didClose: %s" nil] 5 (#$ . 77830)]) #@39 Send textDocument/willSave to server. (defalias 'eglot--signal-textDocument/willSave #[0 "\300 \301\302\303\304 F\305\306#\210\307\310\311\"\205(\3121&\313\314\315\316\317%!0\202(\210\320\207" [eglot--current-server-or-lose :reason 1 :textDocument eglot--TextDocumentIdentifier jsonrpc-notify :textDocument/willSave eglot--server-capable :textDocumentSync :willSaveWaitUntil (error) eglot--apply-text-edits jsonrpc-request :textDocument/willSaveWaitUntil :timeout 0.5 nil] 9 (#$ . 78194)]) #@38 Send textDocument/didSave to server. (defalias 'eglot--signal-textDocument/didSave #[0 "\300 \210\301\302 \303\304\305ed\"\306\307 F#\207" [eglot--signal-textDocument/didChange jsonrpc-notify eglot--current-server-or-lose :textDocument/didSave :text buffer-substring-no-properties :textDocument eglot--TextDocumentIdentifier] 7 (#$ . 78697)]) #@117 An EGLOT Flymake backend. Calls REPORT-FN maybe if server publishes diagnostics in time. (fn REPORT-FN &rest MORE) (defalias 'eglot-flymake-backend #[385 " \205 A!\210\302\211\207" [eglot--current-flymake-report-fn eglot--unreported-diagnostics nil] 4 (#$ . 79047)]) #@21 EGLOT xref backend. (defalias 'eglot-xref-backend #[0 "\300\207" [eglot] 1 (#$ . 79327)]) #@46 Helper variable for `eglot--handling-xrefs'. (defvar eglot--temp-location-buffers (make-hash-table :test 'equal) (#$ . 79423)) #@46 Compare two `xref-item' objects for sorting. (defvar eglot-xref-lessp-function 'ignore (#$ . 79556)) #@86 Sort and handle xrefs collected with COLLECTOR in BODY. (fn (COLLECTOR) &rest BODY) (defalias 'eglot--collecting-xrefs '(macro . #[128 "\211\203 \211A\262\242\202\300\301\302GD\"\211G\303U\203 \211@\202'\300\301\302GD\"\304\305!\306\307C\310\311\312\313EECBB\314\315BBF\316BB\262\207" [signal wrong-number-of-arguments eglot--collecting-xrefs 1 cl-gensym "collected" unwind-protect let cl-flet (xref) push xref sort (eglot-xref-lessp-function) ((maphash (lambda (_uri buf) (kill-buffer buf)) eglot--temp-location-buffers) (clrhash eglot--temp-location-buffers))] 13 (#$ . 79663)])) (byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put eglot--collecting-xrefs lisp-indent-function 1 put edebug-form-spec (sexp &rest form)] 5) #@137 Like `xref-make-match' but with LSP's NAME, URI and RANGE. Try to visit the target file for a richer summary line. (fn NAME URI RANGE) (defalias 'eglot--xref-make-match #[771 "\301!\302!\206 \303\"\304\203rq\210\211!)\202W\305!\2038r\306\307\310!#q\210\311!\210\211!)\202W\312\313\"\312\314\"T\312\315\"\312\211\316\"\315\" ZF\266\204\211@A\211@A\211@A\211@A\n\317\320##\266\204\207" [eglot--temp-location-buffers eglot--uri-to-path find-buffer-visiting gethash #[257 "\212\214~\210\300!\211@A\211\211b\210\301 \211\302 {Z\302 ^Z\303\304\305%\210\306 T\307 ZF\266\204\266\202\266\203*\207" [eglot--range-region point-at-bol point-at-eol add-face-text-property highlight t current-line eglot-current-column] 16 "\n\n(fn RANGE)"] file-readable-p puthash generate-new-buffer " *temp*" insert-file-contents cl-getf :start :line :character :end xref-make-match xref-make-file-location] 25 (#$ . 80426)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\207" [cl-generic-define-method xref-backend-identifier-completion-table nil ((_backend (eql eglot))) #[257 "\300\301!\207" [eglot--error "cannot (yet) provide reliable completion table for LSP symbols"] 3 "\n\n(fn BACKEND)"] xref-backend-identifier-at-point ((_backend (eql eglot))) #[257 "\300\207" ["LSP identifier at point."] 2 "\n\n(fn BACKEND)"]] 6) #@60 `xref' objects for overriding `xref-backend-references''s. (defvar eglot--lsp-xref-refs nil (#$ . 81815)) #@101 Make `xref''s for METHOD, EXTRA-PARAMS, check CAPABILITY. (fn METHOD &key EXTRA-PARAMS CAPABILITY) (defalias 'eglot--lsp-xrefs-for-method #[385 "\301\302\"A@\301\303\"A@\211\2037\211@\304>\203 \211AA\262\202 \305>A@\203.\306\262\202 \307\310@\"\210\202 \210\311\206K\312\313\314\315\316 !\317\"A@\"!!\204T\320\321\"\210\322\323 \324\325 \"#\326\216\306C\327\330\331\332\333!\334\"\335\336%\337\327\330\340\332\333!\341\"\342\343%\344!\203\207\202\211C\"\266\345\242\"\262)\262\207" [eglot-xref-lessp-function plist-member :extra-params :capability (:extra-params :capability :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:extra-params :capability)" eglot--server-capable intern format ":%sProvider" split-string symbol-name "/" eglot--error "Sorry, this server doesn't do %s" jsonrpc-request eglot--current-server-or-lose append eglot--TextDocumentPositionParams #[0 "\301\302\"\210\303!\207" [eglot--temp-location-buffers maphash #[514 "\300!\207" [kill-buffer] 4 "\n\n(fn URI BUF)"] clrhash] 3] make-byte-code 257 "\300\300\242B\240\207" vconcat vector [] 4 "\n\n(fn XREF)" mapc "\211\211\302\303\"A@\302\304\"A@\305\306\307 >\310 >\311 >%\210\300\312\313\314 !#!\266\203\207" [eglot-strict-mode plist-member :uri :range eglot--check-object Location enforce-required-keys disallow-non-standard-keys check-types eglot--xref-make-match symbol-name symbol-at-point] 12 "\n\n(fn JSONRPC-LAMBDA-ELEM56)" vectorp sort] 14 (#$ . 81928)]) #@90 Helper for `eglot-find-declaration' & friends. (fn METHOD &key EXTRA-PARAMS CAPABILITY) (defalias 'eglot--lsp-xref-helper #[385 "\301\302\"A@\301\303\"A@\211\2037\211@\304>\203 \211AA\262\202 \305>A@\203.\306\262\202 \307\310@\"\210\202 \210\311\302\303%\211\203J\312\313!\202N\314\315\")\207" [eglot--lsp-xref-refs plist-member :extra-params :capability (:extra-params :capability :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:extra-params :capability)" eglot--lsp-xrefs-for-method xref-find-references "LSP identifier at point." eglot--message "%s returned no references"] 11 (#$ . 83445)]) #@52 Find declaration for SYM, the identifier at point. (defalias 'eglot-find-declaration #[0 "\300\301!\207" [eglot--lsp-xref-helper :textDocument/declaration] 2 (#$ . 84100) nil]) #@55 Find implementation for SYM, the identifier at point. (defalias 'eglot-find-implementation #[0 "\300\301!\207" [eglot--lsp-xref-helper :textDocument/implementation] 2 (#$ . 84283) nil]) #@56 Find type definition for SYM, the identifier at point. (defalias 'eglot-find-typeDefinition #[0 "\300\301!\207" [eglot--lsp-xref-helper :textDocument/typeDefinition] 2 (#$ . 84475) nil]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\300\310\302\311\302\312%\207" [cl-generic-define-method xref-backend-definitions nil ((_backend (eql eglot)) _identifier) #[514 "\300\301!\207" [eglot--lsp-xrefs-for-method :textDocument/definition] 4 "\n\n(fn BACKEND IDENTIFIER)"] xref-backend-references ((_backend (eql eglot)) _identifier) #[514 "\206 \301\302\303\304#\207" [eglot--lsp-xref-refs eglot--lsp-xrefs-for-method :textDocument/references :extra-params (:context (:includeDeclaration t))] 6 "\n\n(fn BACKEND IDENTIFIER)"] xref-backend-apropos ((_backend (eql eglot)) pattern) #[514 "\301\302!\2058\303\216\304C\305\306\307\310\311!\312\"\313\314%\315\305\306\316\310\311!\317\"\320\321%\322\323 \324\325D#\"\266\326\242\"\262)\207" [eglot-xref-lessp-function eglot--server-capable :workspaceSymbolProvider #[0 "\301\302\"\210\303!\207" [eglot--temp-location-buffers maphash #[514 "\300!\207" [kill-buffer] 4 "\n\n(fn URI BUF)"] clrhash] 3] nil make-byte-code 257 "\300\300\242B\240\207" vconcat vector [] 4 "\n\n(fn XREF)" mapc "\211\211\302\303\"A@\302\304\"A@\305\306\307 >\310 >\311 >%\210\211\211\302\312\"A@\302\313\"A@\305\314\307 >\310 >\311 >%\210\300\315#!\266\203\262\266\203\207" [eglot-strict-mode plist-member :name :location eglot--check-object SymbolInformation enforce-required-keys disallow-non-standard-keys check-types :uri :range Location eglot--xref-make-match] 16 "\n\n(fn JSONRPC-LAMBDA-ELEM58)" jsonrpc-request eglot--current-server-or-lose :workspace/symbol :query sort] 11 "\n\n(fn BACKEND PATTERN)"]] 6) #@36 Format contents of current buffer. (defalias 'eglot-format-buffer #[0 "\300\301\211\"\207" [eglot-format nil] 3 (#$ . 86261) nil]) #@178 Format region BEG END. If either BEG or END is nil, format entire buffer. Interactively, format active region, or entire buffer if region is not active. (fn &optional BEG END) (defalias 'eglot-format #[512 "\203\211\203\302\303\304\305\306!\307\306!FDE\202\310\211@A\211@A\211@A\311!\2046\312\313!\210\314\315\316 \317\320 \321\322\323 \203J\324\202K\325F\nBBBB\326%!\266\203\207" [tab-width indent-tabs-mode :textDocument/rangeFormatting :documentRangeFormattingProvider :range :start eglot--pos-to-lsp-position :end (:textDocument/formatting :documentFormattingProvider nil) eglot--server-capable eglot--error "Server can't format!" eglot--apply-text-edits jsonrpc-request eglot--current-server-or-lose :textDocument eglot--TextDocumentIdentifier :options :tabSize :insertSpaces :json-false t :deferred] 23 (#$ . 86399) (byte-code "\300 \205\n\301 \302 D\207" [region-active-p region-beginning region-end] 2)]) #@41 EGLOT's `completion-at-point' function. (defalias 'eglot-completion-at-point #[0 "\300\301!\211\205\240\302 \303\304\305BD\306C\306C\307C\310\311\312\313\314\n$\315\"\316$\317 \310\320\321\313\314\f\"\322\"\323\324%\325\326!\211@\206A`A\206G`\310\327\330\313\314 \"\331\"\323\332%\333\334\335\310\320\336\313\314\f!\337\"\340\341%\342\343\344\212\n@\203u\n@b\210<\205\211\345\346\347\350\351\"\352\"!\353 \")\354\310\355\356\313\314#\357\"\360\361%\257 \266\212\207" [eglot--server-capable :completionProvider eglot--current-server-or-lose #[257 "\300\301\302\303$\207" [cl-sort string-lessp :key #[257 "\300\301\302\303#\304\"\206\f\305\207" [plist-get get-text-property 0 eglot--lsp-item :sortText #1=""] 6 "\n\n(fn C)"]] 6 "\n\n(fn COMPLETIONS)"] metadata display-sort-function nil :none make-byte-code 0 "\303\242<\203 \303\242\207\301\304\300\305\306 \307\305\310\311&\240\210\302\312\313\301\242!\203%\301\242\202*\314\301\242\315\"\316\"\240\210\303\317\320\302\242\"\240\207" vconcat vector [jsonrpc-request :textDocument/completion eglot--CompletionParams :deferred :cancel-on-input t append vectorp plist-get :items nil mapcar #[257 "\300\301\"\207" [apply #[128 "\300\301\"A@\300\302\"A@\300\303\"A@\304\305\"\203?\306 \203?\307\310\311\206'\312\313Q\"\2039\314\315\316\211$\266\202\202n\266\202\202n\203P\211\315\230\262\204P\202n\307\310\311\206Y\312\313Q\"\203k\314\315\316\211$\266\202\202n\266\202G\317U\204~\320\317\321\322%\210\211\262\207" [plist-member :label :insertText :insertTextFormat eql 2 eglot--snippet-expansion-fn nil string-match "\\`\\(?:" "[ \n ]+" "\\)" replace-match #1# t 0 put-text-property 1 eglot--lsp-item] 11 "\n\n(fn &rest ITEM &key LABEL INSERTTEXT INSERTTEXTFORMAT &allow-other-keys)"]] 4 "\n\n(fn JSONRPC-LAMBDA-ELEM59)"]] 9 make-hash-table 257 "\302\301\"\206)\211\301\303\304\305\306\"\203$\307\310\"\203$\311\300\312\313\314%\202%#\266\202\207" [gethash puthash eglot--server-capable :completionProvider :resolveProvider plist-get :data jsonrpc-request :completionItem/resolve :cancel-on-input t] 11 "\n\n(fn LSP-COMP)" bounds-of-thing-at-point symbol 771 "\211\302=\203\300\207\211\303=\203\301 \235\207\211\242\304=\203\305\207\211\204)\301 \235\203)\306\207\211\306=\205B\307\310\311\312\313\314\"\315\"\316\317%\301 \"\207" [metadata lambda boundaries nil t cl-remove-if-not make-byte-code 257 "\303\304\305#\306\307\"\301\203\301!\205\310\300\206\n#\207" vconcat vector [completion-ignore-case get-text-property 0 eglot--lsp-item plist-get :filterText string-prefix-p] 7 "\n\n(fn PROXY)"] "\n\n(fn PROBE PRED ACTION)" :annotation-function #[257 "\302\303\304#\211\305\306\"A@\305\307\"A@\310\311\312>\313>\314>%\210;\205-\315\230?\205-\211\2066\316 \"A\211\205A\317\320\321\322#P\266\202\266\203\207" [eglot-strict-mode eglot--kind-names get-text-property 0 eglot--lsp-item plist-member :detail :kind eglot--check-object CompletionItem enforce-required-keys disallow-non-standard-keys check-types #1# assoc " " propertize face font-lock-function-name-face] 12 "\n\n(fn PROXY)"] :company-doc-buffer "\301\302\303#\304\300!\305\"\262\211\205\306!\211\205&r\307\310!q\210\311 \210\211c\210p)\207" [get-text-property 0 eglot--lsp-item plist-get :documentation eglot--format-markup get-buffer-create " *eglot doc*" erase-buffer] 5 "\n\n(fn PROXY)" :company-require-match never :company-prefix-length looking-back regexp-opt cl-coerce cl-getf :triggerCharacters list line-beginning-position :exit-function 514 "r\304 \203 \305\306 !\202pq\210\301\307\310\311#\206%\307\310\311\312\300 \313\314$#!\211\315\316\"A@\315\317\"A@\315\320\"A@\315\321\"A@\315\322\"A@\323\324\325 >\326 >\327 >%\210\330\331\"\205]\332 \203\277`\nGZ\302\203r\302A\302@Z\202s\310\\`|\210\211\315\333\"A@\315\334\"A@\323\335\325 >\326 >\327 >%\210\336!\211@A\211\211|\210\211b\210 \206\251\337!\266\nG\211\310V\262\203\323\340!\210\202\323\211\203\323`\nGZ`|\210\211\206\321!\210\210\341 \210\342 \266\206\262)\207" [eglot-strict-mode minibufferp window-buffer minibuffer-selected-window get-text-property 0 eglot--lsp-item cl-find :test string= plist-member :insertTextFormat :insertText :textEdit :additionalTextEdits :label eglot--check-object CompletionItem enforce-required-keys disallow-non-standard-keys check-types eql 2 eglot--snippet-expansion-fn :range :newText TextEdit eglot--range-region insert eglot--apply-text-edits eglot--signal-textDocument/didChange eldoc] 21 "\n\n(fn PROXY STATUS)"] 31 (#$ . 87347)]) #@33 (fn CONTENTS &optional RANGE) (defalias 'eglot--hover-info #[513 "\211\205\300!\211@A\211\211{\301P\266\202\266\203\302\303\304!\203\"\202$C\305#\2044\211G\211\306V\262\2057P\207" [eglot--range-region ": " mapconcat eglot--format-markup vectorp "\n" 0] 9 (#$ . 91978)]) #@37 (fn SIGS ACTIVE-SIG ACTIVE-PARAM) (defalias 'eglot--sig-info #[771 "\302\303\"\303\211\304\305:\203\237\262\211A\262\242\262\211\211\306\307\"A@\306\310\"A@\306\311\"A@\312\313\314>\315>\316>%\210\317\320!r\211q\210\321\304\322\323\324!\325\"\326$\216\212c\210)\303\211\327\330!\203l\326\224\262\326\225\262\331\332\224\332\225\333#\210\334 \"\203};\203\331\335\336\"\203\331\337\332\"\262\340\303\211\335\341\206\226\342\343Q\"\203\250\344\305\345\211$\266\202\202\253\266\202\335\346\206\263\342\347Q\"\203\305\344\305\345\211$\266\205\202\310\266\205\"\204\331db\210\350\351!\261\210\334 \"\203}\203}\352\353G#\203}H\211\306\307\"A@\306\310\"A@\312\354\314>\315>\316>%\210\203Wb\210;\2036\303\355\356\357!\360Q\345#\2052\304\224\304\225D)\202=\361\362\302\303\"\"\211@A\211@A\211\203U\203U\331\363#\210\266\211\203{db\210\364\365;\203i\202q\366\367\361\362\"\"\370\363#\350\351!\261\210\266\371 \266\202*\262\266\204\262P\262\203\224\211\364P\262A\262T\262\202\207" [eglot-strict-mode case-fold-search append nil 0 "" plist-member :label :documentation :parameters eglot--check-object SignatureInformation enforce-required-keys disallow-non-standard-keys check-types generate-new-buffer " *temp*" make-byte-code "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 looking-at "\\([^(]+\\)(\\([^)]+\\))" add-face-text-property 1 font-lock-function-name-face eql string-match "[[:space:]]*\\([^. \n]+[.]?\\)" match-string string-prefix-p "\\(?:" "[ \n ]+" "\\)\\'" replace-match t "\\`\\(?:" "\\)" ": " eglot--format-markup < -1 ParameterInformation re-search-forward "\\<" regexp-quote "\\>" mapcar 1+ eldoc-highlight-function-argument "\n" propertize apply buffer-substring face buffer-string] 32 (#$ . 92273)]) #@71 A member of `eldoc-documentation-functions', for signatures. (fn CB) (defalias 'eglot-signature-eldoc-function #[257 "\300\301!\205$p\302\303 \304\305 \306\307\310\311\312\313  \"\314\"\315\316%\317\304&\266\320\207" [eglot--server-capable :signatureHelpProvider jsonrpc-async-request eglot--current-server-or-lose :textDocument/signatureHelp eglot--TextDocumentPositionParams :success-fn make-byte-code 257 "\211\211\303\304\"A@\303\305\"A@\303\306\"A@\307\310\311\n>\312\n>\313\n>%\210\301\314!\204/\315 \205Br\211q\210\300\316!?\205@\317#!)\262\266\204\207" vconcat vector [eglot-strict-mode plist-member :signatures :activeSignature :activeParameter eglot--check-object SignatureHelp enforce-required-keys disallow-non-standard-keys check-types get-buffer-window ert-running-test seq-empty-p eglot--sig-info] 13 "\n\n(fn JSONRPC-LAMBDA-ELEM60)" :deferred t] 14 (#$ . 94141)]) #@66 A member of `eldoc-documentation-functions', for hover. (fn CB) (defalias 'eglot-hover-eldoc-function #[257 "\300\301!\205(p\302\303 \304\305 \306\307\310\311\312\313  \"\314\"\315\316%\317\304&\266\320!\210\321\207" [eglot--server-capable :hoverProvider jsonrpc-async-request eglot--current-server-or-lose :textDocument/hover eglot--TextDocumentPositionParams :success-fn make-byte-code 257 "\211\211\303\304\"A@\303\305\"A@\306\307\310\n>\311\n>\312\n>%\210\301\313!\204(\314 \205?r\211q\210\315!?\2057\316\"\300\317\320#\262)\262\266\203\207" vconcat vector [eglot-strict-mode plist-member :contents :range eglot--check-object Hover enforce-required-keys disallow-non-standard-keys check-types get-buffer-window ert-running-test seq-empty-p eglot--hover-info :buffer t] 12 "\n\n(fn JSONRPC-LAMBDA-ELEM62)" :deferred eglot--highlight-piggyback t] 14 (#$ . 95047)]) #@46 Overlays for textDocument/documentHighlight. (defvar eglot--highlights nil (#$ . 95940)) #@63 Request and handle `:textDocument/documentHighlight' (fn CB) (defalias 'eglot--highlight-piggyback #[257 "p\300\301!\205!\302\303 \304\305 \306\307\310\311\312\313\n!\314\"\315\316%\317\304&\210\320\207" [eglot--server-capable :documentHighlightProvider jsonrpc-async-request eglot--current-server-or-lose :textDocument/documentHighlight eglot--TextDocumentPositionParams :success-fn make-byte-code 257 "\302\303 \"\210\300\304!\204\305 \205r\211q\210\306\307\")\262\211\207" vconcat vector [eglot--highlights mapc delete-overlay get-buffer-window ert-running-test mapcar #[257 "\211\211\301\302\"A@\303\304\305>\306>\307>%\210\310!\211@A\211\311\"\312\313\314#\210\312\315\316#\210\211\262\266\202\266\203\266\202\207" [eglot-strict-mode plist-member :range eglot--check-object DocumentHighlight enforce-required-keys disallow-non-standard-keys check-types eglot--range-region make-overlay overlay-put face highlight evaporate t] 14 "\n\n(fn JSONRPC-LAMBDA-ELEM65)"]] 5 "\n\n(fn HIGHLIGHTS)" :deferred nil] 13 (#$ . 96035)]) #@40 EGLOT's `imenu-create-index-function'. (defalias 'eglot-imenu #[0 "\300C\300C\301\240\210\211\302\303\304\305\306!\307\"\310\311%\240\210\312\302\303\313\305\306!\314\"\310\315%\316\317\320\242\321\322 \323\324\325 D#\"\"\"\207" [nil #[514 "\301\302\303\304H\3051\306\307\310\311>\310%0\202\210\202.\203.\211\312\313\"A@\314\315\"\266\202\202W\3161?\306\317\310\311>\310%0\202C\210\202R\203R\211\312\320\"A@\262\202W\321\322\323#\262!@\"\207" [eglot-strict-mode imenu-default-goto-function nil eglot--range-region 0 (error) eglot--check-object SymbolInformation t disallow-non-standard-keys plist-member :location plist-get :range (error) DocumentSymbol :selectionRange eglot--error #1="%S didn't match any of %S" (((SymbolInformation) location) ((DocumentSymbol) selectionRange))] 12 "\n\n(fn NAME ONE-OBJ-ARRAY)"] make-byte-code 257 "\211\3021\303\304\305\306 >\305%0\202\210\202!\203!\211C\262\202f\30712\303\310\305\306 >\305%0\2026\210\202a\203a\211\311\312\"A@\311\313\"A@\314\315\316\317\320\321!\322\"\323\324%\325\300\242\"\"B\266\203\202f\326\327\330#\207" vconcat vector [eglot-strict-mode (error) eglot--check-object SymbolInformation t disallow-non-standard-keys (error) DocumentSymbol plist-member :name :children mapcar make-byte-code 257 "\301\302\303\302\"\211\203\304\305\300#\202\300\262#\207" vconcat vector [plist-put :containerName plist-get format "%s::%s"] 9 "\n\n(fn C)" mapcan eglot--error #1# (((SymbolInformation)) ((DocumentSymbol) name children))] 13 "\n\n(fn OBJ)" mapcar "\211@A\211\302 \303#\304\305\306\307\310\311\300!\312\"\313\314%\315\316\"\"B\266\202\207" [eglot--symbol-kind-names alist-get "Unknown" mapcan make-byte-code 257 "\211@A\211\301\302\303\304\305\306\300!\307\"\310\311%\"\203 BC\202!\211\262\266\202\207" vconcat vector [mapcar make-byte-code 257 "\301\302\"\303!\300\242E\207" vconcat vector [plist-get :name vector] 4 "\n\n(fn OBJ)"] 12 "\n\n(fn ARG0)" seq-group-by #[257 "\300\301\"\207" [plist-get :containerName] 4 "\n\n(fn E)"]] "\n\n(fn ARG0)" seq-group-by #[257 "\300\301\"\207" [plist-get :kind] 4 "\n\n(fn OBJ)"] mapcan jsonrpc-request eglot--current-server-or-lose :textDocument/documentSymbol :textDocument eglot--TextDocumentIdentifier] 13 (#$ . 97092)]) #@93 Apply EDITS for current buffer if at VERSION, or if it's nil. (fn EDITS &optional VERSION) (defalias 'eglot--apply-text-edits #[513 "\211\203\211\232\204\305\306p$\210\307 \310 \211\310C\311\312\313\314\315 \"\316\"\317$\216\320!\210\307 G\321\322\323p#\312#\312C\324\311\325\326\314\315\"\327\"\330\331%\332\333\334!\"\"\210\335!\210\336!\266\211\337\240,\207" [eglot--versioned-identifier most-positive-fixnum undo-strong-limit undo-limit undo-outer-limit jsonrpc-error "Edits on `%s' require version %d, you have %d" prepare-change-group nil make-byte-code 0 "\301\242\203 \302\300!\207\303\300!\207" vconcat vector [accept-change-group cancel-change-group] 2 activate-change-group make-progress-reporter format "[eglot] applying %s edits to `%s'..." mapc 257 "\211@A\211@A\211p\303\304!r\211q\210\305\306\307\310\311!\312\"\313$\216c\210prq\210\212\214}\210\314Z\315!\315 !\316\317#\210\320!\210\316\321\211 G\\$\210)\266*\300\301\211\242T\240\211\247\203j\211@Y\205n\322\"\266\202)\262*\262\262\266\203\207" [inhibit-modification-hooks generate-new-buffer " *temp*" make-byte-code 0 "\301\300!\205 \302\300!\207" vconcat vector [buffer-name kill-buffer] 2 t marker-position run-hook-with-args before-change-functions replace-buffer-contents after-change-functions progress-reporter-do-update] 20 "\n\n(fn ARG0)" mapcar #[257 "\211\211\301\302\"A@\301\303\"A@\304\305\306>\307>\310>%\210\211\311\312\"B\266\203\207" [eglot-strict-mode plist-member :range :newText eglot--check-object TextEdit enforce-required-keys disallow-non-standard-keys check-types eglot--range-region markers] 12 "\n\n(fn JSONRPC-LAMBDA-ELEM66)"] reverse undo-amalgamate-change-group progress-reporter-done t] 19 (#$ . 99397)]) #@92 Apply the workspace edit WEDIT. If CONFIRM, ask user first. (fn WEDIT &optional CONFIRM) (defalias 'eglot--apply-workspace-edit #[513 "\211\301\302\"A@\301\303\"A@\304\305\306>\307>\310>%\210\311\312\"\313\313\211\211:\203K\262\211A\262\242\262\211@\262\314!DB\262AA\262\202%\266\204d\315\311\316\"\313\317\320$?\266\203\203y\321\322\323\324\325\311\316\"\326#\"!\204y\327\330!\210@\211\262\203\250\211@A\211@A\211@Ar\331!q\210\332\"\210)\n\211A\262\f\266\n\202y\333\216\203\270\334\335\311\316\"\"\202\276\336 \210\337\340!)\266\202\266\203\207" [eglot-strict-mode plist-member :changes :documentChanges eglot--check-object WorkspaceEdit enforce-required-keys disallow-non-standard-keys check-types mapcar #[257 "\211\211\301\302\"A@\301\303\"A@\304\305\306>\307>\310>%\210\211\301\311\"A@\301\312\"A@\304\313\306>\307>\310>%\210\314!E\266\203\262\266\203\207" [eglot-strict-mode plist-member :textDocument :edits eglot--check-object TextDocumentEdit enforce-required-keys disallow-non-standard-keys check-types :uri :version VersionedTextDocumentIdentifier eglot--uri-to-path] 16 "\n\n(fn JSONRPC-LAMBDA-ELEM67)"] nil eglot--uri-to-path find-buffer-visiting car apply cl-every y-or-n-p format "[eglot] Server wants to edit:\n %s\n Proceed? " mapconcat identity "\n " eglot--error "User cancelled server edit" find-file-noselect eglot--apply-text-edits #[0 "\300\207" [nil] 1] eglot--warn "Caution: edits of files %s failed." eldoc eglot--message "Edit successful!"] 20 (#$ . 101183)]) #@53 Rename the current symbol to NEWNAME. (fn NEWNAME) (defalias 'eglot-rename #[257 "\301\302!\204\n\303\304!\210\305\306\307 \310\311\312 \313D\"#\"\207" [current-prefix-arg eglot--server-capable :renameProvider eglot--error "Server can't rename!" eglot--apply-workspace-edit jsonrpc-request eglot--current-server-or-lose :textDocument/rename append eglot--TextDocumentPositionParams :newName] 9 (#$ . 102753) (byte-code "\300\301\302\303 \"\304\211\211\211\305\303 !&C\207" [read-from-minibuffer format "Rename `%s' to: " symbol-at-point nil symbol-name] 8)]) #@229 Offer to execute code actions between BEG and END. Interactively, if a region is active, BEG and END are its bounds, else BEG is point and END is nil, which results in a request for code actions at point (fn BEG &optional END) (defalias 'eglot-code-actions #[513 "\302\303!\204\n\304\305!\210\306 \307\310\311\312 \313\314\315\n!\316\315 !F\317\320\321\322\323\"\324\211:\203K@\262\325\326\327!\"A\211\203C\211B\262\210A\262\202*\211\237\266\203\"D\257#\330\331\"\206^\304\332!\333\334\"\335\336BD<\203s\337\"\202\213\325\340\341\324\342\324\211\343\n\344\"\206\206\n@&\"A\211\3451\235\346\347\342\350 >\342%0\202\241\210\202\276\203\276\211\351\352\"A@\351\353\"A@\354\n\355!#\266\203\202!\3561\317\346\357\342\350 >\342%0\202\323\210\202\203\211\351\360\"A@\351\352\"A@\203\353\361!\210\211\205\211\211\351\352\"A@\351\353\"A@\346\347\362 >\350 >\363 >%\210\354\355!#\266\203\262\266\203\202!\304\364\365#\262\207" [last-nonmenu-event eglot-strict-mode eglot--server-capable :codeActionProvider eglot--error "Server can't execute code actions!" eglot--current-server-or-lose jsonrpc-request :textDocument/codeAction :textDocument eglot--TextDocumentIdentifier :range :start eglot--pos-to-lsp-position :end :context :diagnostics apply vector flymake-diagnostics nil assoc eglot-lsp-diag eglot--diag-data mapcar #[257 "\300\301\"\207" [apply #[128 "\300\301\"A@\211B\207" [plist-member :title] 4 "\n\n(fn &rest ALL &key TITLE &allow-other-keys)"]] 4 "\n\n(fn JSONRPC-LAMBDA-ELEM68)"] "No code actions here" cl-find-if #[257 "\300\301\"\207" [apply #[128 "\300\301\"A@\211\207" [plist-member :isPreferred] 4 "\n\n(fn &key ISPREFERRED &allow-other-keys)"]] 4 "\n\n(fn JSONRPC-LAMBDA-ELEM69)"] "Eglot code actions:" "dummy" x-popup-menu completing-read "[eglot] Pick an action: " t plist-get :title (error) eglot--check-object Command disallow-non-standard-keys plist-member :command :arguments eglot-execute-command intern (error) CodeAction :edit eglot--apply-workspace-edit enforce-required-keys check-types "%S didn't match any of %S" (((Command) command arguments) ((CodeAction) edit command))] 23 (#$ . 103325) (byte-code "\300 \203 \301 \302 D\207`\303B\207" [region-active-p region-beginning region-end (nil)] 2)]) #@75 (Very lame attempt to) convert WILDCARD to a Elisp regexp. (fn WILDCARD) (defalias 'eglot--wildcard-to-regexp #[257 "\300\301!\302\211\211\211\303:\2039@\262\211A\262\242\262\211\203$\202%\262\304#\262A\262\302\262\202\n\207" [(("{" . "\\\\(") ("}" . "\\\\)") ("," . "\\\\|")) wildcard-to-regexp nil t replace-regexp-in-string] 13 (#$ . 105629)]) (byte-code "\300\301\302\303\302\304%\210\300\305\302\306\302\307%\210\310\311\312\313!\"\210\310\314\315\313!\"\210\310\316\314\"\210\317\316\320\321#\210\322\313\323\314#\324\313\325\302\326$\207" [cl-generic-define-method eglot-register-capability nil (server (method (eql workspace/didChangeWatchedFiles)) id &key watchers) #[899 "\300\301\"A@\211\2031\211@\302>\203\211AA\262\202\303>A@\203(\304\262\202\305\306@\"\210\202\210\307#\210\304C\310\311\"\312\310\313\314\315\"\"!\304C\211\316\317\320\321\322 #\323\"\324\325%\240\210\316\326\327\321\322    $\330\"\331$\216\211\203\226\211@\332\333\242# \334 !\335\336\"B#\266A\266\202\202q\210\337\340\341G G#D\240)\262\266\203\207" [plist-member :watchers (:watchers :allow-other-keys) :allow-other-keys nil error "Keyword argument %s not one of (:watchers)" eglot-unregister-capability mapcar #[257 "\211\211\301\302\"A@\303\304\305>\306>\307>%\210\262\207" [eglot-strict-mode plist-member :globPattern eglot--check-object FileSystemWatcher enforce-required-keys disallow-non-standard-keys check-types] 11 "\n\n(fn JSONRPC-LAMBDA-ELEM70)"] delete-dups file-name-directory mapcan file-expand-wildcards make-byte-code 257 "\211@A\211@A\211@A\211@A\n\303>\203X\304\301\305\306$\203X\307\300\310\311\312\313\314 !\315\316\n\317\"\203<\320\202Q\316\n\321\"\203H\322\202Q\316\n\323\"\205Q\324F!D#\202n\325=\205n\302\242\326E!\210\302\242\327E!\266\204\207" vconcat vector [(created changed deleted) cl-find :test #[514 "\300\301\302!!\"\207" [string-match eglot--wildcard-to-regexp expand-file-name] 6 "\n\n(fn F GLOB)"] jsonrpc-notify :workspace/didChangeWatchedFiles :changes vector :uri eglot--path-to-uri :type eql created 1 changed 2 deleted 3 renamed 'deleted 'created] 24 "\n\n(fn EVENT)" 0 "\303\242?\205 \304\300\301\302#\207" [eglot-unregister-capability] 4 file-notify-add-watch (change) eglot--file-watches puthash gethash :message format "OK, watching %s directories in %s watchers"] 20 "Handle dynamic registration of workspace/didChangeWatchedFiles\n\n(fn SERVER METHOD ID &key WATCHERS)"] eglot-unregister-capability (server (_method (eql workspace/didChangeWatchedFiles)) id) #[771 "\300\301\302\303!\"\"\210\304\303!\"\210\305\306D\207" [mapc file-notify-rm-watch gethash eglot--file-watches remhash t "OK"] 9 "Handle dynamic unregistration of workspace/didChangeWatchedFiles\n\n(fn SERVER METHOD ID)"] defalias eglot-rls-p eieio-make-class-predicate eglot-rls eglot-rls--eieio-childp eieio-make-child-predicate eglot-rls-child-p make-obsolete "use (cl-typep ... \\='eglot-rls) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eglot-lsp-server) (:documentation "Rustlang's RLS.")] 6) #@66 Create a new object of class type `eglot-rls'. (fn &rest SLOTS) (defalias 'eglot-rls #[128 "\300\301\302#\207" [apply make-instance eglot-rls] 5 (#$ . 108782)]) (byte-code "\300\301\302\303#\300\207" [function-put eglot-rls compiler-macro eglot-rls--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'eglot-rls--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 109056)]) (byte-code "\300\301\302\303\304\305%\210\300\306\302\307\302\310%\210\311\312\313\314!\"\210\311\315\316\314!\"\210\311\317\315\"\210\320\317\321\322#\210\323\314\324\315#\325\314\326\302\327$\207" [cl-generic-define-method jsonrpc-connection-ready-p nil ((server eglot-rls) what) t #[771 " \205/\211\300=\206/\301!\211@A\211@A\211@A\211@A\n\302\232\205+\266\204\266\211\207" [:textDocument/completion eglot--spinner "Indexing"] 18 "Except for :completion, RLS isn't ready until Indexing done.\n\n(fn CL--CNM SERVER WHAT)"] eglot-handle-notification ((server eglot-rls) (_method (eql window/progress)) &key id done title message &allow-other-keys) #[642 "\300\301\"A@\300\302\"A@\300\303\"A@\300\304\"A@\305F\"\262\207" [plist-member :id :done :title :message \(setf\ eglot--spinner\)] 13 "Handle notification window/progress\n\n(fn SERVER METHOD &key ID DONE TITLE MESSAGE &allow-other-keys)"] defalias eglot-eclipse-jdt-p eieio-make-class-predicate eglot-eclipse-jdt eglot-eclipse-jdt--eieio-childp eieio-make-child-predicate eglot-eclipse-jdt-child-p make-obsolete "use (cl-typep ... \\='eglot-eclipse-jdt) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (eglot-lsp-server) (:documentation "Eclipse's Java Development Tools Language Server.")] 6) #@74 Create a new object of class type `eglot-eclipse-jdt'. (fn &rest SLOTS) (defalias 'eglot-eclipse-jdt #[128 "\300\301\302#\207" [apply make-instance eglot-eclipse-jdt] 5 (#$ . 110598)]) (byte-code "\300\301\302\303#\300\207" [function-put eglot-eclipse-jdt compiler-macro eglot-eclipse-jdt--anon-cmacro] 4) #@26 (fn WHOLE &rest SLOTS) (defalias 'eglot-eclipse-jdt--anon-cmacro #[385 "\211@;\204\207\300\301\302@@#@\303@DABB\"\207" [macroexp--warn-and-return format "Obsolete name arg %S to constructor %S" identity] 7 (#$ . 110912)]) (cl-generic-define-method 'eglot-initialization-options nil '((server eglot-eclipse-jdt)) nil #[257 "\300\301\302\303\304\305\306\307!!\211\304\310\311\312\313P!\312\314P!\312\315P!#\"B\262\"\316\317#\"\320\321!\206E\3221C\323\324\310\325\326\327!!!\"0\202E\210\330\211\203S\331\332\333DDD\202X\330\334\335!\210\262BB\207" [:workspaceFolders apply vector cl-delete-duplicates mapcar eglot--path-to-uri project-root eglot--project file-name-directory append file-expand-wildcards "*/pom.xml" "*/build.gradle" "*/.project" :test string= getenv "JAVA_HOME" (error) expand-file-name ".." file-chase-links executable-find "javac" nil :settings :java :home eglot--warn "JAVA_HOME env var not set"] 17 "Passes through required jdt initialization options\n\n(fn SERVER)"]) #@134 Return a contact for connecting to eclipse.jdt.ls server, as a cons cell. If INTERACTIVE, prompt user for details. (fn INTERACTIVE) (defalias 'eglot--eclipse-jdt-contact #[257 "\303\304\262\305\306!\206 \307\310\311\307\"\"\211\211\203\"\312\313\314\315!\"!\2024\2031\313\316\317\303\211\320$!\2024\321\322!\211\323P\324!\203A\211\202B\211\325\230\203M\326\202X\327\230\203W\330\202X\331P\332 \206a\333 B\313\334\335!!\n\336P\"\204}\310\n\337\340P\320\"\"\262\203\217\341!\203\217\324!\204\223\321\342!\210\n\203\256\204\256\343\344!\203\256\345\306\305\306!\307\nQ\"\210\324!\204\271\346\320\"\210\347\350\351!\352\353\354\355\f\356\n\357\n\257\nB\266\211\207" [system-type default-directory user-emacs-directory nil #[257 "\301\302!\303\304\305#)\266\203\205\306!\207" [inhibit-changing-match-data "org\\.eclipse\\.equinox\\.launcher_.*\\.jar$" file-name-nondirectory nil t string-match file-exists-p] 8 "\n\n(fn PATH)"] getenv "CLASSPATH" ":" cl-find-if split-string file-name-as-directory expand-file-name ".." file-name-directory read-directory-name "Path to eclipse.jdt.ls directory (could not find it in CLASSPATH): " t error "Could not find eclipse.jdt.ls jar in CLASSPATH" "org.eclipse.jdt.ls.product/target/repository/" file-directory-p "darwin" "config_mac" "windows-nt" "config_win" "config_linux" project-current transient md5 project-root "eglot-eclipse-jdt-cache" directory-files "plugins" file-exists-p "Could not find required eclipse.jdt.ls files (build required?)" y-or-n-p "Add path to the server program to CLASSPATH environment variable?" setenv make-directory eglot-eclipse-jdt executable-find "java" "-Declipse.application=org.eclipse.jdt.ls.core.id1" "-Dosgi.bundles.defaultStartLevel=4" "-Declipse.product=org.eclipse.jdt.ls.core.product" "-jar" "-configuration" "-data"] 22 (#$ . 111931)]) (byte-code "\300\301\302\303\302\304%\210\305\306!\207" [cl-generic-define-method eglot-execute-command nil ((_server eglot-eclipse-jdt) (_cmd (eql java\.apply\.workspaceEdit)) arguments) #[771 "\300\301\"\207" [mapc eglot--apply-workspace-edit] 6 "Eclipse JDT breaks spec and replies with edits as arguments.\n\n(fn SERVER CMD ARGUMENTS)"] provide eglot] 6)