This layer adds support for Julia to Spacemacs.
- Syntax highlighting
- Repl support
- Linting
- Completion
- Jump-to-definition
- Documentation on hover
To use this configuration layer, add it to your ~/.spacemacs
. You will need to
add julia
to the existing dotspacemacs-configuration-layers
list in this
file.
Warning: enabling the LSP functionality within this package can cause emacs to hang for significant lengths of time when opening a Julia file. See tip below on using PackageCompiler.jl to mitigate this issue.
This layer can be used with =LanguageServer.jl= and emacs =lsp-mode= to provide richer, IDE-like capabilities. To use this layer with lsp, you must do the following:
- Add
lsp
todotspacemacs-configuration-layers
. - Install
LanguageServer.jl
by invokingPkg.add("LanguageServer")
in the Julia REPL. - Enable layer integration with lsp as described in section below.
LanguageServer.jl
tends to have a very long startup time. In the worst case,
lsp-mode
might give up on the language server before its started, but
regardless usage of lsp-mode
with Julia can cause long delays when first
opening files. To mitigate this issue, you can try compiling LanguageServer.jl
ahead of time using =PackageCompiler.jl=. This drastically reduces startup time
if successful:
julia> Pkg.add("PackageCompiler")
julia> using PackageCompiler
julia> compile_package("LanguageServer")
While julia-mode
is perfectly usable without configuration or other packages,
you can choose to replace the default functionality of using =julia-repl= as the
layer’s interactive REPL with the ess REPL and other functionality that comes
with it. To do so, install this layer with:
(setq-default
dotspacemacs-configuration-layers
'(
(julia :variables julia-mode-enable-ess t)))
This layer also includes experimental support for lsp-mode
. To enable language
server functionality with this layer, follow the instructions for installation,
and then install this layer with:
(setq-default
dotspacemacs-configuration-layers
'(
(julia :variables julia-mode-enable-lsp t)))
Warning: =LanguageServer.jl= has not yet been released for Julia 1.0. If you are
using this layer with Julia 1.0, julia-mode-enable-lsp
should be set to nil
.
Key binding | Description |
---|---|
SPC m h h | Calls @doc macro on symbol under cursor. |
SPC m e m | Expands macro under cursor. |
SPC m w | Calls workspace() in Repl to give clean namespace. |
SPC e l | Expands latex macro (e.g. \delta ). |
SPC m s b | Sends buffer to REPL. |
SPC m s l | Sends line to REPL. |
SPC m s r | Sends region to REPL. |
SPC m r | Brings up Julia Repl (starts new one or focuses existing). |