feat(emacs): Clojure
This commit is contained in:
69
modules/home/users/msyds/emacs/lisp/syd/clojure.el
Normal file
69
modules/home/users/msyds/emacs/lisp/syd/clojure.el
Normal file
@@ -0,0 +1,69 @@
|
||||
;;; -*- lexical-binding: t; -*-
|
||||
|
||||
(require 'syd/base)
|
||||
(require 'syd/popups)
|
||||
|
||||
(use-package clojure-mode
|
||||
:mode (("\\.\\(clj\\|cljd\\|dtm\\|edn\\|lpy\\)\\'" . clojure-mode)
|
||||
("\\.cljc\\'" . clojurec-mode)
|
||||
("\\.cljs\\'" . clojurescript-mode)
|
||||
("\\(?:build\\|profile\\)\\.boot\\'" . clojure-mode))
|
||||
:interpreter (("bb" . clojure-mode)
|
||||
("nbb" . clojurescript-mode)))
|
||||
|
||||
(use-package cider
|
||||
:after clojure-mode
|
||||
:config
|
||||
;; Correctly indent some common macros.
|
||||
(put-clojure-indent 'match 1))
|
||||
|
||||
(use-package cider-mode
|
||||
:straight nil ; Part of `cider'.
|
||||
:hook (clojure-mode-local-vars . cider-mode)
|
||||
:custom ((cider-show-error-buffer nil)
|
||||
;; Download Java source archives for local Javadoc and jump-to-def
|
||||
;; functionality.
|
||||
(cider-download-java-sources t))
|
||||
:general
|
||||
;; DEPRECATED: Remove once a `map!' equivalent is implemented.
|
||||
(:keymaps 'cider-repl-mode-map
|
||||
:states '(normal insert)
|
||||
"C-k" #'cider-repl-backward-input
|
||||
"C-j" #'cider-repl-forward-input
|
||||
"C-s" #'consult-history)
|
||||
;; DEPRECATED: Remove once a `map!' equivalent is implemented.
|
||||
(:keymaps '(cider-repl-mode-map clojure-mode-map)
|
||||
:states '(normal visual motion emacs insert)
|
||||
:major-modes t
|
||||
:prefix syd-localleader-key
|
||||
:non-normal-prefix syd-alt-localleader-key
|
||||
"\"" #'cider-jack-in-cljs
|
||||
"'" #'cider-jack-in-clj
|
||||
"c" #'cider-connect-clj
|
||||
"C" #'cider-connect-cljs
|
||||
"r l" #'cider-load-buffer
|
||||
"r n" #'cider-repl-set-ns
|
||||
"r r" #'cider-ns-refresh
|
||||
"r R" #'cider-restart
|
||||
"r q" #'cider-quit
|
||||
"d d" #'cider-debug-defun-at-point
|
||||
"M-:" #'cider-read-and-eval
|
||||
"h d" #'cider-doc
|
||||
"h c" #'cider-cheatsheet
|
||||
"h j" #'cider-javadoc
|
||||
"h n" #'cider-browse-ns
|
||||
"T n" #'cider-test-run-ns-tests
|
||||
"T r" #'cider-test-rerun-failed-tests
|
||||
"T R" #'cider-test-rerun-test
|
||||
"x" #'cider-scratch)
|
||||
(:keymaps 'cider-repl-mode-map
|
||||
:states 'insert
|
||||
"S-<return>" #'cider-repl-newline-and-indent)
|
||||
:config
|
||||
(add-hook 'cider-mode-hook #'eldoc-mode)
|
||||
(with-eval-after-load 'consult
|
||||
(add-to-list
|
||||
'consult-mode-histories
|
||||
'(cider-repl-mode cider-repl-input-history nil cider-repl-bol-mark))))
|
||||
|
||||
(provide 'syd/clojure)
|
||||
@@ -29,6 +29,7 @@
|
||||
(setq popper-display-control nil
|
||||
popper-reference-buffers (list #'shackle-match))
|
||||
:config
|
||||
;; Close on escape.
|
||||
(syd-add-hook 'syd-escape-hook
|
||||
(defun syd-escape-close-popups-h ()
|
||||
"If the current buffer is a popup, close it. Otherwise, close all popups."
|
||||
|
||||
Reference in New Issue
Block a user