merge: pull request #6578 from Emiller88/julia-snail

This commit is contained in:
Henrik Lissner 2023-07-24 23:25:34 +02:00 committed by GitHub
commit 06c891e177
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 75 additions and 6 deletions

View file

@ -20,6 +20,9 @@ This module adds support for [[https://julialang.org/][the Julia language]] to D
- +tree-sitter ::
Leverages tree-sitter for better syntax highlighting and structural text
editing. Requires [[doom-module::tools tree-sitter]].
- +snail :: Use Snail, a development environment and REPL interaction package
for Julia in the spirit of Common Lisps SLIME and Clojures CIDER. It enables
convenient and dynamic REPL-driven development.
** Packages
- [[doom-package:julia-mode]]
@ -31,6 +34,8 @@ This module adds support for [[https://julialang.org/][the Julia language]] to D
- if [[doom-module::tools lsp +eglot]]
- [[doom-package:eglot-jl]]
- [[doom-package:eglot]]
- if [[doom-package:][+snail]]
- [[doom-package:][julia-snail]]
** Hacks
/No hacks documented for this module./
@ -104,6 +109,19 @@ But to let [[doom-package:eglot-jl]] use the environment bundled with it, set it
[[doom-package:eglot]] features. It requires ~LanguageServer.jl~, the installation of which is
described above.
** Snail
| Keybind | Command |
|-----------------------------+-----------------------------------|
| [[kbd:][<localleader> ']] | ~julia-snail~ |
| [[kbd:][<localleader> a]] | ~julia-snail-package-activate~ |
| [[kbd:][<localleader> r]] | ~julia-snail-update-module-cache~ |
| [[kbd:][<localleader> d]] | ~julia-snail-doc-lookup~ |
| [[kbd:][<localleader> e b]] | ~julia-snail-send-buffer-file~ |
| [[kbd:][<localleader> e l]] | ~julia-snail-send-line~ |
| [[kbd:][<localleader> e r]] | ~julia-snail-send-region~ |
| [[kbd:][<localleader> e e]] | ~julia-snail-send-dwim~ |
* TODO Configuration
#+begin_quote
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]

View file

@ -19,3 +19,10 @@
(with-current-buffer buffer
(inferior-julia-mode))
buffer)))
;;;###autoload
(defun +julia/open-snail-repl ()
"A wrapper for julia-snail"
(interactive)
(julia-snail)
(current-buffer))

View file

@ -3,7 +3,8 @@
(use-package! julia-mode
:interpreter "julia"
:config
(set-repl-handler! 'julia-mode #'+julia/open-repl)
(unless (modulep! +snail)
(set-repl-handler! 'julia-mode #'+julia/open-repl))
(when (modulep! +lsp)
(add-hook 'julia-mode-local-vars-hook #'lsp! 'append))
@ -91,8 +92,46 @@
:after eglot
:preface
;; Prevent auto-install of LanguageServer.jl
(setq eglot-jl-language-server-project "~/.julia/environments/v1.6")
(setq eglot-jl-language-server-project
(or (car (last (doom-glob "~/.julia/environments/v*")))
"~/.julia/environments/v1.6"))
:init
;; Prevent timeout while installing LanguageServer.jl
(setq-hook! 'julia-mode-hook eglot-connect-timeout (max eglot-connect-timeout 60))
:config (eglot-jl-init))
(use-package! julia-snail
:when (modulep! +snail)
:when (modulep! :term vterm)
:hook (julia-mode . julia-snail-mode)
:config
(setq julia-snail-popup-display-eval-results :command)
(setq julia-snail-multimedia-enable t)
(setq julia-snail-popup-display-face '(:background base3 :box `(:line-width -1 :color base5)))
(set-popup-rule! "^\\*julia.*\\*$" :ttl nil :select nil :quit nil)
(after! julia-mode
(set-repl-handler! 'julia-mode #'+julia/open-snail-repl
:persist t
;; FIXME These aren't working as expected
:send-region #'julia-snail-send-region
:send-buffer #'julia-snail-send-buffer-file))
(map! (:localleader
(:map (julia-snail-mode-map)
"'" #'julia-snail
"a" #'julia-snail-package-activate
"r" #'julia-snail-update-module-cache
"d" #'julia-snail-doc-lookup
(:prefix ("e" . "eval")
"b" #'julia-snail-send-buffer-file
"l" #'julia-snail-send-line
"r" #'julia-snail-send-region
"e" #'julia-snail-send-dwim))
(:map (julia-snail-repl-mode-map)
"a" #'julia-snail-package-activate
"d" #'julia-snail-doc-lookup
"m" #'julia-snail-repl-go-back
"r" #'julia-snail-update-module-cache))))

View file

@ -21,3 +21,5 @@
"-e" "using LanguageServer, SymbolServer")))))
(unless (zerop (car (apply #'doom-call-process args)))
(warn! "Couldn't find LanguageServer.jl and/or SymbolServer.jl"))))
;; TODO Check for snail

View file

@ -1,10 +1,13 @@
;; -*- no-byte-compile: t; -*-
;;; lang/julia/packages.el
(package! julia-mode :pin "7aafa8e77df64a47fa4729a0c1ea572b5bc8e30e")
(package! julia-repl :pin "57a15dfafed680ad7d81f779d414e8cb6717417c")
(package! julia-mode :pin "7a8c868e0d3e51ba4a2c621ee22ca9599e0e4bbb")
(package! julia-repl :pin "9503ef7110732e444e686e815c5b2ae8228d274d")
(when (modulep! +lsp)
(if (modulep! :tools lsp +eglot)
(package! eglot-jl :pin "2e04597223553a369dd5b6520b6365b41e6ea508")
(package! lsp-julia :pin "d6688bb131ff4a5a0201f6d3826ef0b018265389")))
(package! eglot-jl :pin "7dc604fe42a459a987853d065cd6d0f3c4cbc02a")
(package! lsp-julia :pin "c584f79c7fee6176bbb6120f4cb0f1001bcf8113")))
(when (modulep! +snail)
(package! julia-snail :pin "18b891b4569096d541e996cf7e24da01efdf2e03"))