09a9273e22
Remove warning indicating that LanguageServer.jl is not working in Julia version 1.0, because it was updated and that problem was fixed.
104 lines
5.8 KiB
Org Mode
104 lines
5.8 KiB
Org Mode
#+TITLE: julia layer
|
|
|
|
#+TAGS: general|layer|multi-paradigm|programming
|
|
|
|
[[file:img/julia.png]]
|
|
|
|
* Table of Contents :TOC_5_gh:noexport:
|
|
- [[#description][Description]]
|
|
- [[#features][Features:]]
|
|
- [[#install][Install]]
|
|
- [[#lsp][LSP]]
|
|
- [[#options][Options]]
|
|
- [[#key-bindings][Key bindings]]
|
|
|
|
* Description
|
|
This layer adds support for [[https://julialang.org][Julia]] to Spacemacs.
|
|
|
|
** Features:
|
|
- Syntax highlighting
|
|
- Repl support
|
|
- Linting
|
|
- Completion
|
|
- Jump-to-definition
|
|
- Documentation on hover
|
|
|
|
* 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.
|
|
|
|
** LSP
|
|
This layer can be used with [[https://github.com/JuliaEditorSupport/LanguageServer.jl][LanguageServer.jl]] and Emacs [[https://github.com/emacs-lsp/lsp-mode][lsp-mode]] to provide
|
|
richer, IDE-like capabilities. To use this layer with lsp, you must do the
|
|
following:
|
|
1. =LanguageServer.jl= should be configured automatically, if not, see the
|
|
documentation of =lsp-julia=.
|
|
2. define the layer variable =julia-backend= to =lsp= in your dotfile
|
|
|
|
To enable language server functionality with this layer, follow the instructions
|
|
for installation, and then install this layer with:
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq-default
|
|
dotspacemacs-configuration-layers
|
|
'(
|
|
(julia :variables julia-mode-enable-lsp t)))
|
|
#+END_SRC
|
|
|
|
=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.
|
|
|
|
* Options
|
|
While =julia-mode= is perfectly usable without configuration or other packages,
|
|
you can choose to replace the default functionality of using [[https://github.com/tpapp/julia-repl/][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:
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq-default
|
|
dotspacemacs-configuration-layers
|
|
'(
|
|
(julia :variables julia-mode-enable-ess t)))
|
|
#+END_SRC
|
|
|
|
* 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 |
|