Julia support for the =lsp-mode= package using the LanguageServer.jl package.
For information on the features lsp-mode
provides see their git repository.
Julia version 1.3 or higher has to be in your path
This package is still under development.
`lsp-julia` includes a https://github.com/non-Jedi/lsp-julia/issues[working] Language Server using Git submodules by default. To initialize it, execute the following Git command in the directory of this repository:
git submodule update --init --recursive
Otherwise, if you’d rather install the Language Server yourself, open a Julia REPL and install LanguageServer.jl.
julia> Pkg.add("LanguageServer")
The included server is used by default. To use the manually installed one, you need to also add the following to your init.el:
(setq lsp-julia-package-dir nil)
(setq lsp-julia-flags `("-J/path/to/languageserver.so"))
;; (require 'lsp-julia) must come after this!
Additionally because JIT compilation of LanguageServer.jl can cause a long delay which may cause issues with lsp-mode, I recommend using PackageCompiler.jl to AOT compile LanguageServer.jl into your julia image. Something like:
julia> using Pkg julia> Pkg.add("PackageCompiler") julia> using PackageCompiler julia> create_sysimage(:LanguageServer, sysimage_path="/path/to/languageserver.so")
See the documentation on PackageCompiler.jl for further usage details.
It’s currently easiest to install this package with quelpa. I’ll see about getting this added to melpa soon enough.
(quelpa '(lsp-julia :fetcher github
:repo "non-Jedi/lsp-julia"
:files (:defaults "languageserver")))
(use-package lsp-julia
:config
(setq lsp-julia-default-environment "~/.julia/environments/v1.5"))
After installing the major mode of your choice for editing Julia files
(julia-mode, ess, etc.), add 'lsp-mode
to the hook for that major mode. For
example, to use lsp-julia
with ess, add the following to your .emacs
file:
(add-hook 'ess-julia-mode-hook #'lsp-mode)
Please don’t hesitate to open an issue in case of problems or create a PR.