Skip to content

Commit

Permalink
Accept functions as entries in eglot-server-programs
Browse files Browse the repository at this point in the history
CONTACT in the (MAJOR-MODE . CONTACT) association in
eglot-server-programs can now be a function of no arguments producing
any value previously valid for contact.  The function is called at
time of `M-x eglot` or `eglot-ensure`.  This is useful for servers
requiring command-line invocations that depend on the specific
momentary environment.

* eglot.el (eglot-server-programs): CONTACT can be a fucntion of no
arguments.
(eglot--guess-contact, eglot--connect): Accept function
CONTACTs.

GitHub-reference: per joaotavora/eglot#63
  • Loading branch information
joaotavora committed Aug 7, 2018
1 parent ea04e60 commit 71a3fb8
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions lisp/progmodes/eglot.el
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,10 @@ of those modes. CONTACT can be:
converted to produce a plist with a suitable :PROCESS initarg
to CLASS-NAME. The class `eglot-lsp-server' descends
`jsonrpc-process-connection', which you should see for the
semantics of the mandatory :PROCESS argument.")
semantics of the mandatory :PROCESS argument.
* A function of no arguments producing any of the above values
for CONTACT.")

(defface eglot-mode-line
'((t (:inherit font-lock-constant-face :weight bold)))
Expand Down Expand Up @@ -310,6 +313,7 @@ be guessed."
(lambda (m1 m2)
(or (eq m1 m2)
(and (listp m1) (memq m2 m1)))))))
(guess (if (functionp guess) (funcall guess) guess))
(class (or (and (consp guess) (symbolp (car guess))
(prog1 (car guess) (setq guess (cdr guess))))
'eglot-lsp-server))
Expand Down Expand Up @@ -457,6 +461,7 @@ This docstring appeases checkdoc, that's all."
(nickname (file-name-base (directory-file-name default-directory)))
(readable-name (format "EGLOT (%s/%s)" nickname managed-major-mode))
autostart-inferior-process
(contact (if (functionp contact) (funcall contact) contact))
(initargs
(cond ((keywordp (car contact)) contact)
((integerp (cadr contact))
Expand Down Expand Up @@ -1658,7 +1663,7 @@ If SKIP-SIGNATURE, don't try to send textDocument/signatureHelp."
"Passes through required cquery initialization options"
(let* ((root (car (project-roots (eglot--project server))))
(cache (expand-file-name ".cquery_cached_index/" root)))
(list :cacheDirectory (file-name-as-directory cache)
(list :cacheDirectory (file-name-as-directory cache)Ini
:progressReportFrequencyMs -1)))


Expand Down

0 comments on commit 71a3fb8

Please sign in to comment.