julia layer
Table of ContentsClose
1. Description
This layer adds support for Julia to Spacemacs.
1.1. Features:
- Syntax highlighting
- Repl support
- Linting
- Completion
- Jump-to-definition
- Documentation on hover
2. Install
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.
2.1. LSP
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:
LanguageServer.jl
should be configured automatically, if not, see the documentation oflsp-julia
.- define the layer variable
julia-backend
tolsp
in your dotfile
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-backend 'lsp)))
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.
By default, the langage server looks for the julia enviornment in ~/.julia/enviornments/v1.0
.
However, unless julia 1.0 is being used, the enviornment path will be incorrect.
Code completions from imported packages will not work. To fix this, set lsp-julia-default-environment
to ~/.julia/enviornments/v<your julia version>
. For more information and configuration
options, see lsp-julia documentation.
3. Options
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)))
4. Key bindings
Key binding | Description |
---|---|
TAB |
Expands latex macro (e.g. \delta ). |
SPC m l |
Expands latex macro (e.g. \delta ). |
SPC m = = |
Indent line |
SPC m = d |
Deindent line |
SPC m = q |
Indent Sexp |
SPC m ' |
Brings up Julia Repl (starts new one or focuses existing). |
SPC m r |
Brings up Julia Repl (starts new one or focuses existing). |
SPC m h h |
Calls @doc macro on symbol under cursor. |
SPC m s a |
Activate the project of the current buffer (call with prefix to activate home project) |
SPC m s d |
cd into the buffer directory |
SPC m s i |
Brings up Julia Repl (starts new one or focuses existing). |
SPC m s b |
Sends buffer to REPL. |
SPC m s t |
Sends buffer to REPL via Revise.includet . |
SPC m s l |
Sends line to REPL. |
SPC m s s |
Sends line to REPL. |
SPC m s r |
Sends region or line to REPL. |
SPC m s m |
Call @macroexpand on an expression |
SPC m s e |
Call @edit on an expression |
SPC m s v |
Prompt and set a Julia REPL inferior buffer name for the current buffer |
SPC m e a |
Activate the project of the current buffer (call with prefix to activate home project) |
SPC m e d |
cd into the buffer directory |
SPC m e i |
Brings up Julia Repl (starts new one or focuses existing). |
SPC m e b |
Sends buffer to REPL. |
SPC m e t |
Sends buffer to REPL via Revise.includet . |
SPC m e l |
Sends line to REPL. |
SPC m e s |
Sends line to REPL. |
SPC m e r |
Sends region or line to REPL. |
SPC m e m |
Call @macroexpand on an expression |
SPC m e e |
Call @edit on an expression |
SPC m e v |
Prompt and set a Julia REPL inferior buffer name for the current buffer |