#+TITLE:   lang/julia
#+DATE:    April 8, 2020
#+SINCE:   {replace with next tagged release version}
#+STARTUP: inlineimages nofold

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
  - [[#language-server][Language Server]]
- [[#features][Features]]
  - [[#language-server-1][Language Server]]
- [[#configuration][Configuration]]

* Description
Adds Julia support to Doom Emacs

+ Syntax highlighting and latex symbols from ~julia-mode~
+ REPL integration from ~julia-repl~
+ Code completion and syntax checking, requires ~:tools lsp~ and ~+lsp~

** Module Flags
+ =+lsp= Language Server Protocol support
** Plugins
+ [[https://github.com/tpapp/julia-repl][julia-mode]]
+ [[https://github.com/JuliaEditorSupport/julia-emacs/][julia-repl]]
+ =+lsp= and =:tools lsp=
  + [[https://github.com/non-jedi/lsp-julia][lsp-julia]]*
  + [[https://github.com/emacs-lsp/lsp-mode][lsp]]

* Prerequisites
This module has no direct prerequisites.

** Language Server

~+lsp~ requires the a manual installation of ~lsp-julia~ as it comes with a
packaged version of ~LanguageServer.jl~ and its dependencies.

#+BEGIN_SRC elisp
;; ~/.doom.d/packages.el
(package! lsp-julia :recipe (:host github :repo "non-jedi/lsp-julia"))
#+END_SRC

* Features
  # An in-depth list of features, how to use them, and their dependencies.
** Language Server
   ~+lsp~ adds code completion, syntax checking, formatting and other ~lsp-mode~
   features. This requires a manual installation of ~lsp-julia~ as it bundles
   ~LanguageServer.jl~ and its dependencies.
  
* Configuration
~lsp-julia~ requires a variable be set for the Julia environment. This is set to
v1.0 by default as it is the current LTS.

#+BEGIN_SRC elisp
;; ~/.doom.d/config.el
(setq lsp-julia-default-environment "~/.julia/environments/v1.0")
#+END_SRC

If you would like to use your own installation of ~LanguageServer.jl~, put the
following in your personal ~config.el~.

#+BEGIN_SRC elisp
;; ~/.doom.d/config.el
(setq lsp-julia-package-dir nil)
#+END_SRC
