mirror of
https://github.com/doomemacs/doomemacs
synced 2025-09-14 15:46:56 -05:00
fix(clojure): keybinds in ts-modes
Ensures keybinds and cross-module config for the base clojure major modes also apply to the treesit ts-modes. Yes, we could take advantage of general.el's keymap deferral, but I eventually want to drop general. Fix: #8501 Close: #8502 Co-authored-by: goshatch <goshatch@users.noreply.github.com>
This commit is contained in:
@@ -14,6 +14,37 @@
|
|||||||
;;
|
;;
|
||||||
;;; Packages
|
;;; Packages
|
||||||
|
|
||||||
|
(defun +clojure-common-config (modes)
|
||||||
|
(set-formatter! 'cljfmt '("cljfmt" "fix" "-") :modes modes)
|
||||||
|
|
||||||
|
(when (modulep! +lsp)
|
||||||
|
(dolist (m modes)
|
||||||
|
(let ((hook (intern (format "%s-local-vars-hook" m))))
|
||||||
|
(add-hook hook #'+clojure-disable-lsp-indentation-h 'append)
|
||||||
|
(add-hook hook #'lsp! 'append))))
|
||||||
|
|
||||||
|
(let ((keymaps
|
||||||
|
(cl-loop for m in modes
|
||||||
|
collect (intern (format "%s-map" m)))))
|
||||||
|
|
||||||
|
;;; REVIEW: Uses `use-package!' so `package!'s `:disable' property is
|
||||||
|
;;; respected. Will be refactored later.
|
||||||
|
(use-package! neil
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(map! :map ,keymaps
|
||||||
|
:localleader
|
||||||
|
"f" #'neil-find-clojure-package))
|
||||||
|
|
||||||
|
(use-package! jet
|
||||||
|
:defer t
|
||||||
|
:init
|
||||||
|
(map! :map ,keymaps
|
||||||
|
:localleader
|
||||||
|
"j" #'jet))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defun +clojure-disable-lsp-indentation-h ()
|
(defun +clojure-disable-lsp-indentation-h ()
|
||||||
(setq-local lsp-enable-indentation nil))
|
(setq-local lsp-enable-indentation nil))
|
||||||
|
|
||||||
@@ -21,15 +52,7 @@
|
|||||||
(use-package! clojure-mode
|
(use-package! clojure-mode
|
||||||
:defer t
|
:defer t
|
||||||
:config
|
:config
|
||||||
(set-formatter! 'cljfmt '("cljfmt" "fix" "-") :modes '(clojure-mode clojurec-mode clojurescript-mode))
|
(+clojure-common-config '(clojure-mode clojurec-mode clojurescript-mode)))
|
||||||
|
|
||||||
(when (modulep! +lsp)
|
|
||||||
(add-hook! '(clojure-mode-local-vars-hook
|
|
||||||
clojurec-mode-local-vars-hook
|
|
||||||
clojurescript-mode-local-vars-hook)
|
|
||||||
:append
|
|
||||||
#'+clojure-disable-lsp-indentation-h
|
|
||||||
#'lsp!)))
|
|
||||||
|
|
||||||
|
|
||||||
(use-package! clojure-ts-mode
|
(use-package! clojure-ts-mode
|
||||||
@@ -44,14 +67,9 @@
|
|||||||
(set-tree-sitter! 'clojurescript-mode 'clojure-ts-clojurescript-mode 'javascript)
|
(set-tree-sitter! 'clojurescript-mode 'clojure-ts-clojurescript-mode 'javascript)
|
||||||
(set-tree-sitter! 'jank-mode 'clojure-ts-jank-mode 'cpp)
|
(set-tree-sitter! 'jank-mode 'clojure-ts-jank-mode 'cpp)
|
||||||
(set-tree-sitter! 'joker-mode 'clojure-ts-joker-mode 'clojure)
|
(set-tree-sitter! 'joker-mode 'clojure-ts-joker-mode 'clojure)
|
||||||
|
|
||||||
:config
|
:config
|
||||||
(when (modulep! +lsp)
|
(+clojure-common-config '(clojure-ts-mode clojure-ts-clojurec-mode clojure-ts-clojurescript-mode))
|
||||||
(add-hook! '(clojure-ts-mode-local-vars-hook
|
|
||||||
clojure-ts-clojurec-mode-local-vars-hook
|
|
||||||
clojure-ts-clojurescript-mode-local-vars-hook)
|
|
||||||
:append
|
|
||||||
#'+clojure-disable-lsp-indentation-h
|
|
||||||
#'lsp!))
|
|
||||||
|
|
||||||
;; HACK: Rely on `major-mode-remap-defaults' instead (upstream also doesn't
|
;; HACK: Rely on `major-mode-remap-defaults' instead (upstream also doesn't
|
||||||
;; check if the grammars are ready before adding these entries, which will
|
;; check if the grammars are ready before adding these entries, which will
|
||||||
@@ -224,7 +242,7 @@
|
|||||||
(setq cider-repl-display-help-banner nil)
|
(setq cider-repl-display-help-banner nil)
|
||||||
|
|
||||||
(map! (:localleader
|
(map! (:localleader
|
||||||
(:map (clojure-mode-map clojurescript-mode-map clojurec-mode-map)
|
(:map cider-mode-map
|
||||||
"'" #'cider-jack-in-clj
|
"'" #'cider-jack-in-clj
|
||||||
"\"" #'cider-jack-in-cljs
|
"\"" #'cider-jack-in-cljs
|
||||||
"c" #'cider-connect-clj
|
"c" #'cider-connect-clj
|
||||||
@@ -313,7 +331,7 @@
|
|||||||
:config
|
:config
|
||||||
(set-lookup-handlers! 'clj-refactor-mode
|
(set-lookup-handlers! 'clj-refactor-mode
|
||||||
:references #'cljr-find-usages)
|
:references #'cljr-find-usages)
|
||||||
(map! :map clojure-mode-map
|
(map! :map cider-mode-map
|
||||||
:localleader
|
:localleader
|
||||||
:desc "refactor" "R" #'hydra-cljr-help-menu/body))
|
:desc "refactor" "R" #'hydra-cljr-help-menu/body))
|
||||||
|
|
||||||
@@ -326,18 +344,7 @@
|
|||||||
|
|
||||||
|
|
||||||
(use-package! neil
|
(use-package! neil
|
||||||
:commands (neil-find-clojure-package)
|
:defer t
|
||||||
:config
|
:config
|
||||||
(setq neil-prompt-for-version-p nil
|
(setq neil-prompt-for-version-p nil
|
||||||
neil-inject-dep-to-project-p t)
|
neil-inject-dep-to-project-p t))
|
||||||
(map! :map (clojure-mode-map clojurescript-mode-map clojurec-mode-map)
|
|
||||||
:localleader
|
|
||||||
"f" #'neil-find-clojure-package))
|
|
||||||
|
|
||||||
|
|
||||||
(use-package! jet
|
|
||||||
:commands (jet)
|
|
||||||
:config
|
|
||||||
(map! :map (clojure-mode-map clojurescript-mode-map clojurec-mode-map)
|
|
||||||
:localleader
|
|
||||||
"j" #'jet))
|
|
||||||
|
Reference in New Issue
Block a user