From 6074fc3aa827ebc8130c28f1014263bfeaba0d27 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Mon, 18 Jul 2022 14:42:55 -0500 Subject: [PATCH 01/16] feat(julia): add julia-snail --- modules/lang/julia/config.el | 22 ++++++++++++++++++++++ modules/lang/julia/doctor.el | 2 ++ modules/lang/julia/packages.el | 3 +++ 3 files changed, 27 insertions(+) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index cb9273922..012a89b27 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -96,3 +96,25 @@ ;; 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 (featurep! +snail) + :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 "grey10" :box (:line-width 1 :color "black") + ((class color) (background dark)))) + (set-popup-rule! "^\\*julia.*\\*$" :ttl nil :select nil :quit nil) + (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))))) diff --git a/modules/lang/julia/doctor.el b/modules/lang/julia/doctor.el index 536ff58a2..547f9f7c2 100644 --- a/modules/lang/julia/doctor.el +++ b/modules/lang/julia/doctor.el @@ -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 diff --git a/modules/lang/julia/packages.el b/modules/lang/julia/packages.el index 8ddcf59ab..47a9f72c6 100644 --- a/modules/lang/julia/packages.el +++ b/modules/lang/julia/packages.el @@ -8,3 +8,6 @@ (if (modulep! :tools lsp +eglot) (package! eglot-jl :pin "2e04597223553a369dd5b6520b6365b41e6ea508") (package! lsp-julia :pin "d6688bb131ff4a5a0201f6d3826ef0b018265389"))) + +(when (featurep! +snail) + (package! julia-snail :pin "326da9a7d0463ed2727f66dcbd4cb58b517ffe25")) From 5ab4527b181cc65f4a7dc513972d48601b2ddffc Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Mon, 18 Jul 2022 15:38:17 -0500 Subject: [PATCH 02/16] fix(julia): update eglot environment discovery --- modules/lang/julia/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 012a89b27..3a7c345c1 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -91,7 +91,9 @@ :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)) From 6b9ce02433c78530661c99b2f9fa594bd8139344 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Mon, 18 Jul 2022 15:47:07 -0500 Subject: [PATCH 03/16] fix(julia): add check for vterm for snail --- modules/lang/julia/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 3a7c345c1..bac63595a 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -102,6 +102,7 @@ (use-package! julia-snail :when (featurep! +snail) + :when (featurep! :term vterm) :hook (julia-mode . julia-snail-mode) :config (setq julia-snail-popup-display-eval-results :command) From f2c75dea9a2f16937889cda0088094778cf0b0fb Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Mon, 18 Jul 2022 15:58:29 -0500 Subject: [PATCH 04/16] feat(julia): add snail repl mode keybindings --- modules/lang/julia/config.el | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index bac63595a..9b62d3f92 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -120,4 +120,6 @@ "b" #'julia-snail-send-buffer-file "l" #'julia-snail-send-line "r" #'julia-snail-send-region - "e" #'julia-snail-send-dwim))))) + "e" #'julia-snail-send-dwim)) + (:map (julia-snail-repl-mode-map) + "m" #'julia-snail-repl-go-back)))) From ed4d12df0575648cc398333d926d0b5355961955 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Sun, 24 Jul 2022 18:38:29 -0500 Subject: [PATCH 05/16] feat(julia): use julia-snail as repl when +snail --- modules/lang/julia/autoload.el | 7 +++++++ modules/lang/julia/config.el | 10 +++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/lang/julia/autoload.el b/modules/lang/julia/autoload.el index d25f60b58..021a6d918 100644 --- a/modules/lang/julia/autoload.el +++ b/modules/lang/julia/autoload.el @@ -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)) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 9b62d3f92..564fa3630 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -3,7 +3,8 @@ (use-package! julia-mode :interpreter "julia" :config - (set-repl-handler! 'julia-mode #'+julia/open-repl) + (unless (featurep! +snail) + (set-repl-handler! 'julia-mode #'+julia/open-repl)) (when (modulep! +lsp) (add-hook 'julia-mode-local-vars-hook #'lsp! 'append)) @@ -110,6 +111,13 @@ (setq julia-snail-popup-display-face '(:background "grey10" :box (:line-width 1 :color "black") ((class color) (background dark)))) (set-popup-rule! "^\\*julia.*\\*$" :ttl nil :select nil :quit nil) + + (after! julia-mode + (set-repl-handler! 'julia-mode #'+julia/open-snail-repl + :persist t + :send-region #'julia-snail-send-region + :send-buffer #'julia-snail-send-buffer-file)) + (map! (:localleader (:map (julia-snail-mode-map) "'" #'julia-snail From d10bb6dc420206ffa5662857566be36046defa5b Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Sun, 24 Jul 2022 20:53:47 -0500 Subject: [PATCH 06/16] feat(julia): add snail keybindings to snail repl mode --- modules/lang/julia/config.el | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 564fa3630..ec2cdf284 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -130,4 +130,7 @@ "r" #'julia-snail-send-region "e" #'julia-snail-send-dwim)) (:map (julia-snail-repl-mode-map) - "m" #'julia-snail-repl-go-back)))) + "a" #'julia-snail-package-activate + "d" #'julia-snail-doc-lookup + "m" #'julia-snail-repl-go-back + "r" #'julia-snail-update-module-cache)))) From 71c210050fefd808078f47ffdb5d5810c23da13a Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Sun, 24 Jul 2022 21:04:56 -0500 Subject: [PATCH 07/16] nit(julia): add note about send-region/buffer not working quite right --- modules/lang/julia/config.el | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index ec2cdf284..986e39a48 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -115,6 +115,7 @@ (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)) From de434f5c2989d7916af5c33458264d23ef9af0e6 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Sun, 7 Aug 2022 21:01:07 -0500 Subject: [PATCH 08/16] fix(julia): use cider result face for snail popup --- modules/lang/julia/config.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 986e39a48..6a26ad9ee 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -108,8 +108,8 @@ :config (setq julia-snail-popup-display-eval-results :command) (setq julia-snail-multimedia-enable t) - (setq julia-snail-popup-display-face '(:background "grey10" :box (:line-width 1 :color "black") - ((class color) (background dark)))) + (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 From 727cb231cc2b59bf496073cd940866a5f6750109 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Wed, 17 Aug 2022 20:55:44 -0500 Subject: [PATCH 09/16] docs(julia): add notes about +snail flag --- modules/lang/julia/README.org | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/modules/lang/julia/README.org b/modules/lang/julia/README.org index 5f3883a54..3e4f0c960 100644 --- a/modules/lang/julia/README.org +++ b/modules/lang/julia/README.org @@ -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 Lisp’s SLIME and Clojure’s 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./ From 9a3e950a646cdf92628275fc47b67f4242abf887 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Wed, 17 Aug 2022 21:00:49 -0500 Subject: [PATCH 10/16] docs(julia): add keybindings --- modules/lang/julia/README.org | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/lang/julia/README.org b/modules/lang/julia/README.org index 3e4f0c960..bb685d1a2 100644 --- a/modules/lang/julia/README.org +++ b/modules/lang/julia/README.org @@ -109,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:][ ']] | ~julia-snail~ | +| [[kbd:][ a]] | ~julia-snail-package-activate~ | +| [[kbd:][ r]] | ~julia-snail-update-module-cache~ | +| [[kbd:][ d]] | ~julia-snail-doc-lookup~ | +| [[kbd:][ e b]] | ~julia-snail-send-buffer-file~ | +| [[kbd:][ e l]] | ~julia-snail-send-line~ | +| [[kbd:][ e r]] | ~julia-snail-send-region~ | +| [[kbd:][ e e]] | ~julia-snail-send-dwim~ | + * TODO Configuration #+begin_quote 🔨 /This module's configuration documentation is incomplete./ [[doom-contrib-module:][Complete it?]] From 1b3bc7b7fbabb95e0e2b68a63d4a2a19b5f62c2f Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Thu, 15 Sep 2022 14:28:12 -0500 Subject: [PATCH 11/16] fix(julia): featurep! => modulep! --- modules/lang/julia/config.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 6a26ad9ee..abf47c5a7 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -3,7 +3,7 @@ (use-package! julia-mode :interpreter "julia" :config - (unless (featurep! +snail) + (unless (modulep! +snail) (set-repl-handler! 'julia-mode #'+julia/open-repl)) (when (modulep! +lsp) @@ -102,8 +102,8 @@ (use-package! julia-snail - :when (featurep! +snail) - :when (featurep! :term vterm) + :when (modulep! +snail) + :when (modulep! :term vterm) :hook (julia-mode . julia-snail-mode) :config (setq julia-snail-popup-display-eval-results :command) From 85f812111a21492522d1ecfb93c6c4c08b3e1399 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Sat, 10 Dec 2022 15:52:05 -0600 Subject: [PATCH 12/16] bump: :lang julia JuliaEditorSupport/julia-emacs@47f43f7d8390 -> JuliaEditorSupport/julia-emacs@adf4029be778 gcv/julia-snail@326da9a7d046 -> gcv/julia-snail@0e6fa5180447 non-Jedi/eglot-jl@2e35cf9768d9 -> non-Jedi/eglot-jl@07edf37eab53 --- modules/lang/julia/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/julia/packages.el b/modules/lang/julia/packages.el index 47a9f72c6..dd8747adb 100644 --- a/modules/lang/julia/packages.el +++ b/modules/lang/julia/packages.el @@ -10,4 +10,4 @@ (package! lsp-julia :pin "d6688bb131ff4a5a0201f6d3826ef0b018265389"))) (when (featurep! +snail) - (package! julia-snail :pin "326da9a7d0463ed2727f66dcbd4cb58b517ffe25")) + (package! julia-snail :pin "0e6fa5180447024c794cb8186c782c5cf28ae68e")) From 76c1330aa3bb771e83833f02d0970517a7bb8e0c Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Sun, 11 Dec 2022 12:07:46 -0600 Subject: [PATCH 13/16] nit(julia): Format keybindings --- modules/lang/julia/config.el | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index abf47c5a7..6f3f33358 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -121,17 +121,17 @@ (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)) + "'" #'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)))) + "a" #'julia-snail-package-activate + "d" #'julia-snail-doc-lookup + "m" #'julia-snail-repl-go-back + "r" #'julia-snail-update-module-cache)))) From 8daa99ff4776ab0aca921c5f38656d57f527ac45 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Fri, 2 Jun 2023 17:31:15 -0500 Subject: [PATCH 14/16] bump: :lang julia JuliaEditorSupport/julia-emacs@7aafa8e77df6 -> JuliaEditorSupport/julia-emacs@b35e668d6bcf gcv/julia-snail@0e6fa5180447 -> gcv/julia-snail@c33663abf081 gdkrmr/lsp-julia@d6688bb131ff -> gdkrmr/lsp-julia@c584f79c7fee non-Jedi/eglot-jl@2e0459722355 -> non-Jedi/eglot-jl@7dc604fe42a4 tpapp/julia-repl@57a15dfafed6 -> tpapp/julia-repl@9503ef711073 --- modules/lang/julia/packages.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/lang/julia/packages.el b/modules/lang/julia/packages.el index dd8747adb..2febbb4c9 100644 --- a/modules/lang/julia/packages.el +++ b/modules/lang/julia/packages.el @@ -1,13 +1,13 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/julia/packages.el -(package! julia-mode :pin "7aafa8e77df64a47fa4729a0c1ea572b5bc8e30e") -(package! julia-repl :pin "57a15dfafed680ad7d81f779d414e8cb6717417c") +(package! julia-mode :pin "b35e668d6bcf0fb7de4a9ee1a72ae13aa4fb6562") +(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 (featurep! +snail) - (package! julia-snail :pin "0e6fa5180447024c794cb8186c782c5cf28ae68e")) + (package! julia-snail :pin "c33663abf081a06e0fdbf5818255f082070d2160")) From 5b32260127e82675d056db8600c306f85b8831c0 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Fri, 21 Jul 2023 13:48:21 -0500 Subject: [PATCH 15/16] bump: :lang julia JuliaEditorSupport/julia-emacs@b35e668d6bcf -> JuliaEditorSupport/julia-emacs@7a8c868e0d3e gcv/julia-snail@c33663abf081 -> gcv/julia-snail@18b891b45690 --- modules/lang/julia/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/julia/packages.el b/modules/lang/julia/packages.el index 2febbb4c9..61f8a6871 100644 --- a/modules/lang/julia/packages.el +++ b/modules/lang/julia/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/julia/packages.el -(package! julia-mode :pin "b35e668d6bcf0fb7de4a9ee1a72ae13aa4fb6562") +(package! julia-mode :pin "7a8c868e0d3e51ba4a2c621ee22ca9599e0e4bbb") (package! julia-repl :pin "9503ef7110732e444e686e815c5b2ae8228d274d") (when (modulep! +lsp) @@ -10,4 +10,4 @@ (package! lsp-julia :pin "c584f79c7fee6176bbb6120f4cb0f1001bcf8113"))) (when (featurep! +snail) - (package! julia-snail :pin "c33663abf081a06e0fdbf5818255f082070d2160")) + (package! julia-snail :pin "18b891b4569096d541e996cf7e24da01efdf2e03")) From 785ade7ba3a3d460a5cf409022638fa1005851a2 Mon Sep 17 00:00:00 2001 From: Edmund Miller Date: Fri, 21 Jul 2023 13:49:42 -0500 Subject: [PATCH 16/16] fix: featurep! => modulep! --- modules/lang/julia/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/julia/packages.el b/modules/lang/julia/packages.el index 61f8a6871..50f36c8fe 100644 --- a/modules/lang/julia/packages.el +++ b/modules/lang/julia/packages.el @@ -9,5 +9,5 @@ (package! eglot-jl :pin "7dc604fe42a459a987853d065cd6d0f3c4cbc02a") (package! lsp-julia :pin "c584f79c7fee6176bbb6120f4cb0f1001bcf8113"))) -(when (featurep! +snail) +(when (modulep! +snail) (package! julia-snail :pin "18b891b4569096d541e996cf7e24da01efdf2e03"))