merge: pull request #6578 from Emiller88/julia-snail
This commit is contained in:
commit
06c891e177
5 changed files with 75 additions and 6 deletions
|
@ -20,6 +20,9 @@ This module adds support for [[https://julialang.org/][the Julia language]] to D
|
||||||
- +tree-sitter ::
|
- +tree-sitter ::
|
||||||
Leverages tree-sitter for better syntax highlighting and structural text
|
Leverages tree-sitter for better syntax highlighting and structural text
|
||||||
editing. Requires [[doom-module::tools tree-sitter]].
|
editing. Requires [[doom-module::tools tree-sitter]].
|
||||||
|
- +snail :: Use Snail, a development environment and REPL interaction package
|
||||||
|
for Julia in the spirit of Common Lisp’s SLIME and Clojure’s CIDER. It enables
|
||||||
|
convenient and dynamic REPL-driven development.
|
||||||
|
|
||||||
** Packages
|
** Packages
|
||||||
- [[doom-package:julia-mode]]
|
- [[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]]
|
- if [[doom-module::tools lsp +eglot]]
|
||||||
- [[doom-package:eglot-jl]]
|
- [[doom-package:eglot-jl]]
|
||||||
- [[doom-package:eglot]]
|
- [[doom-package:eglot]]
|
||||||
|
- if [[doom-package:][+snail]]
|
||||||
|
- [[doom-package:][julia-snail]]
|
||||||
|
|
||||||
** Hacks
|
** Hacks
|
||||||
/No hacks documented for this module./
|
/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
|
[[doom-package:eglot]] features. It requires ~LanguageServer.jl~, the installation of which is
|
||||||
described above.
|
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
|
* TODO Configuration
|
||||||
#+begin_quote
|
#+begin_quote
|
||||||
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]]
|
||||||
|
|
|
@ -19,3 +19,10 @@
|
||||||
(with-current-buffer buffer
|
(with-current-buffer buffer
|
||||||
(inferior-julia-mode))
|
(inferior-julia-mode))
|
||||||
buffer)))
|
buffer)))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun +julia/open-snail-repl ()
|
||||||
|
"A wrapper for julia-snail"
|
||||||
|
(interactive)
|
||||||
|
(julia-snail)
|
||||||
|
(current-buffer))
|
||||||
|
|
|
@ -3,7 +3,8 @@
|
||||||
(use-package! julia-mode
|
(use-package! julia-mode
|
||||||
:interpreter "julia"
|
:interpreter "julia"
|
||||||
:config
|
:config
|
||||||
(set-repl-handler! 'julia-mode #'+julia/open-repl)
|
(unless (modulep! +snail)
|
||||||
|
(set-repl-handler! 'julia-mode #'+julia/open-repl))
|
||||||
|
|
||||||
(when (modulep! +lsp)
|
(when (modulep! +lsp)
|
||||||
(add-hook 'julia-mode-local-vars-hook #'lsp! 'append))
|
(add-hook 'julia-mode-local-vars-hook #'lsp! 'append))
|
||||||
|
@ -91,8 +92,46 @@
|
||||||
:after eglot
|
:after eglot
|
||||||
:preface
|
:preface
|
||||||
;; Prevent auto-install of LanguageServer.jl
|
;; 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
|
:init
|
||||||
;; Prevent timeout while installing LanguageServer.jl
|
;; Prevent timeout while installing LanguageServer.jl
|
||||||
(setq-hook! 'julia-mode-hook eglot-connect-timeout (max eglot-connect-timeout 60))
|
(setq-hook! 'julia-mode-hook eglot-connect-timeout (max eglot-connect-timeout 60))
|
||||||
:config (eglot-jl-init))
|
: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))))
|
||||||
|
|
|
@ -21,3 +21,5 @@
|
||||||
"-e" "using LanguageServer, SymbolServer")))))
|
"-e" "using LanguageServer, SymbolServer")))))
|
||||||
(unless (zerop (car (apply #'doom-call-process args)))
|
(unless (zerop (car (apply #'doom-call-process args)))
|
||||||
(warn! "Couldn't find LanguageServer.jl and/or SymbolServer.jl"))))
|
(warn! "Couldn't find LanguageServer.jl and/or SymbolServer.jl"))))
|
||||||
|
|
||||||
|
;; TODO Check for snail
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
;; -*- no-byte-compile: t; -*-
|
;; -*- no-byte-compile: t; -*-
|
||||||
;;; lang/julia/packages.el
|
;;; lang/julia/packages.el
|
||||||
|
|
||||||
(package! julia-mode :pin "7aafa8e77df64a47fa4729a0c1ea572b5bc8e30e")
|
(package! julia-mode :pin "7a8c868e0d3e51ba4a2c621ee22ca9599e0e4bbb")
|
||||||
(package! julia-repl :pin "57a15dfafed680ad7d81f779d414e8cb6717417c")
|
(package! julia-repl :pin "9503ef7110732e444e686e815c5b2ae8228d274d")
|
||||||
|
|
||||||
(when (modulep! +lsp)
|
(when (modulep! +lsp)
|
||||||
(if (modulep! :tools lsp +eglot)
|
(if (modulep! :tools lsp +eglot)
|
||||||
(package! eglot-jl :pin "2e04597223553a369dd5b6520b6365b41e6ea508")
|
(package! eglot-jl :pin "7dc604fe42a459a987853d065cd6d0f3c4cbc02a")
|
||||||
(package! lsp-julia :pin "d6688bb131ff4a5a0201f6d3826ef0b018265389")))
|
(package! lsp-julia :pin "c584f79c7fee6176bbb6120f4cb0f1001bcf8113")))
|
||||||
|
|
||||||
|
(when (modulep! +snail)
|
||||||
|
(package! julia-snail :pin "18b891b4569096d541e996cf7e24da01efdf2e03"))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue