spacemacs/layers/+lang/julia/README.org

3.7 KiB

julia layer

/TakeV/spacemacs/media/commit/c7c348a6769a8b36fbaf846a4d5542dd3c4af7f5/layers/+lang/julia/img/julia.png

Description

This layer adds support for 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

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">LanguageServer.jl and emacs lsp-mode">lsp-mode to provide richer, IDE-like capabilities. To use this layer with lsp, you must do the following:

  1. Add lsp to dotspacemacs-configuration-layers.
  2. Install LanguageServer.jl by invoking Pkg.add("LanguageServer") in the Julia REPL.
  3. 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">PackageCompiler.jl. This drastically reduces startup time if successful:

  julia> Pkg.add("PackageCompiler")
  julia> using PackageCompiler
  julia> compile_package("LanguageServer")

Options

While julia-mode is perfectly usable without configuration or other packages, you can choose to replace the default functionality of using 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:

  (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">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 bindings

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).