Table of Contents

julia layer

Table of ContentsClose

julia.png

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:

  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:

(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

Author: root

Created: 2024-04-03 Wed 19:39

Validate