* lang/julia: include lsp-julia w/o language server Use nonrecursive clone to get lsp-julia without bundled LanguageServer.jl (plus dependencies) and include instructions in the README on how to install the language server (bundled or otherwise). * lang/julia: add checks for julia +lsp in doctor Add two checks, both only for when the +lsp feature is enabled: - Check if (:tools lsp) is selected - Check if LanguageServer.jl is installed * lang/julia: indicate SymbolServer.jl as dependency It is itself a dependency of LanguageServer.jl, but it's necessary to add it separately in order to do `using SymbolServer`. * tools/lsp: add julia language server to list * lang/julia: add eglot support using eglot-jl Forcing eglot-jl to not install its own LanguageServer.jl is a bit of a hack though. * lang/julia: make timeout increase buffer-local Suggestion by @benneti to use `setq-local` instead of `setq` to prevent a timeout increase in non-Julia eglot buffers. * Fix issues Co-authored-by: Henrik Lissner <henrik@lissner.net>
19 lines
830 B
EmacsLisp
19 lines
830 B
EmacsLisp
;;; lang/julia/doctor.el -*- lexical-binding: t; -*-
|
|
|
|
(assert! (or (not (featurep! +lsp))
|
|
(featurep! :tools lsp))
|
|
"This module requires (:tools lsp)")
|
|
|
|
(when (featurep! +lsp)
|
|
(let ((args
|
|
(cond ((require 'eglot-jl nil t)
|
|
`(,eglot-jl-julia-command
|
|
,(concat "--project=" eglot-jl-language-server-project)
|
|
,@eglot-jl-julia-flags
|
|
"-e" "empty!(LOAD_PATH); push!(LOAD_PATH, \"@\"); using LanguageServer, SymbolServer"))
|
|
((require 'lsp-julia nil t)
|
|
`(,lsp-julia-command
|
|
,@lsp-julia-flags
|
|
"-e" "using LanguageServer, SymbolServer")))))
|
|
(unless (zerop (car (apply #'doom-call-process args)))
|
|
(warn! "Couldn't find LanguageServer.jl and/or SymbolServer.jl"))))
|