|
|
|
@@ -32,18 +32,30 @@
|
|
|
|
|
clojurec-mode
|
|
|
|
|
clojurescript-mode
|
|
|
|
|
clojurex-mode))
|
|
|
|
|
(add-to-list 'lsp-language-id-configuration (cons m "clojure")))))
|
|
|
|
|
(add-to-list 'lsp-language-id-configuration (cons m "clojure"))))))
|
|
|
|
|
|
|
|
|
|
(when (modulep! +tree-sitter)
|
|
|
|
|
(add-hook! '(clojure-mode-local-vars-hook
|
|
|
|
|
clojurec-mode-local-vars-hook
|
|
|
|
|
clojurescript-mode-local-vars-hook)
|
|
|
|
|
:append
|
|
|
|
|
#'tree-sitter!)
|
|
|
|
|
;; TODO: PR this upstream
|
|
|
|
|
(after! tree-sitter-langs
|
|
|
|
|
(add-to-list 'tree-sitter-major-mode-language-alist '(clojurec-mode . clojure))
|
|
|
|
|
(add-to-list 'tree-sitter-major-mode-language-alist '(clojurescript-mode . clojure)))))
|
|
|
|
|
|
|
|
|
|
(use-package! clojure-ts-mode
|
|
|
|
|
:when (modulep! +tree-sitter)
|
|
|
|
|
:defer t
|
|
|
|
|
:init
|
|
|
|
|
(setq clojure-ts-auto-remap nil) ; we do it ourselves
|
|
|
|
|
(set-tree-sitter! 'clojure-mode 'clojure-ts-mode
|
|
|
|
|
'((clojure :url "https://github.com/sogaiu/tree-sitter-clojure")))
|
|
|
|
|
(set-tree-sitter! 'clojurec-mode 'clojure-ts-clojurec-mode 'clojure)
|
|
|
|
|
(set-tree-sitter! 'clojuredart-mode 'clojure-ts-clojuredart-mode 'clojure)
|
|
|
|
|
(set-tree-sitter! 'clojurescript-mode 'clojure-ts-clojurescript-mode 'javascript)
|
|
|
|
|
(set-tree-sitter! 'jank-mode 'clojure-ts-jank-mode 'cpp)
|
|
|
|
|
(set-tree-sitter! 'joker-mode 'clojure-ts-joker-mode 'clojure)
|
|
|
|
|
:config
|
|
|
|
|
;; HACK: Rely on `major-mode-remap-defaults' instead (upstream also doesn't
|
|
|
|
|
;; check if the grammars are ready before adding these entries, which will
|
|
|
|
|
;; bork clojure buffers.
|
|
|
|
|
(cl-callf2 rassq-delete-all 'clojure-ts-clojurescript-mode auto-mode-alist)
|
|
|
|
|
(cl-callf2 rassq-delete-all 'clojure-ts-clojurec-mode auto-mode-alist)
|
|
|
|
|
(cl-callf2 rassq-delete-all 'clojure-ts-clojuredart-mode auto-mode-alist)
|
|
|
|
|
(cl-callf2 rassq-delete-all 'clojure-ts-jank-mode auto-mode-alist)
|
|
|
|
|
(cl-callf2 rassq-delete-all 'clojure-ts-joker-mode auto-mode-alist))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; `cider-mode' is used instead of the typical `cider' package due to the main
|
|
|
|
@@ -52,11 +64,18 @@
|
|
|
|
|
(use-package! cider-mode
|
|
|
|
|
;; NOTE if `org-directory' doesn't exist, `cider-jack' in won't work
|
|
|
|
|
:hook (clojure-mode-local-vars . cider-mode)
|
|
|
|
|
:hook (clojure-ts-mode-local-vars . cider-mode)
|
|
|
|
|
:init
|
|
|
|
|
(after! clojure-mode
|
|
|
|
|
(set-repl-handler! '(clojure-mode clojurec-mode) #'+clojure/open-repl :persist t)
|
|
|
|
|
(set-repl-handler! 'clojurescript-mode #'+clojure/open-cljs-repl :persist t)
|
|
|
|
|
(set-eval-handler! '(clojure-mode clojurescript-mode clojurec-mode) #'cider-eval-region))
|
|
|
|
|
(set-repl-handler! '(clojure-mode clojure-ts-mode
|
|
|
|
|
clojurec-mode clojure-ts-clojurec-mode)
|
|
|
|
|
#'+clojure/open-repl :persist t)
|
|
|
|
|
(set-repl-handler! '(clojurescript-mode clojure-ts-clojurescript-mode)
|
|
|
|
|
#'+clojure/open-cljs-repl :persist t)
|
|
|
|
|
(set-eval-handler! '(clojure-mode clojure-ts-mode
|
|
|
|
|
clojurescript-mode clojure-ts-clojurescript-mode
|
|
|
|
|
clojurec-mode clojure-ts-clojurec-mode)
|
|
|
|
|
#'cider-eval-region))
|
|
|
|
|
|
|
|
|
|
;; HACK Fix radian-software/radian#446: CIDER tries to calculate the frame's
|
|
|
|
|
;; background too early; sometimes before the initial frame has been
|
|
|
|
@@ -285,6 +304,7 @@
|
|
|
|
|
:when (or (modulep! -lsp)
|
|
|
|
|
+clojure-load-clj-refactor-with-lsp)
|
|
|
|
|
:hook (clojure-mode . clj-refactor-mode)
|
|
|
|
|
:hook (clojure-ts-mode . clj-refactor-mode)
|
|
|
|
|
:config
|
|
|
|
|
(set-lookup-handlers! 'clj-refactor-mode
|
|
|
|
|
:references #'cljr-find-usages)
|
|
|
|
|