feat(emacs): More Clojure configuration
This commit is contained in:
@@ -33,6 +33,7 @@ project\"."
|
|||||||
(interactive)
|
(interactive)
|
||||||
(require 'syd-file)
|
(require 'syd-file)
|
||||||
;; TODO: Prompt for path project root is not found.
|
;; TODO: Prompt for path project root is not found.
|
||||||
|
;; TODO: Respect gitignore.
|
||||||
(syd-search-directory (syd-project-root)))
|
(syd-search-directory (syd-project-root)))
|
||||||
|
|
||||||
(defun syd-project-root-find-file (file-name)
|
(defun syd-project-root-find-file (file-name)
|
||||||
|
|||||||
@@ -1,7 +1,12 @@
|
|||||||
;;; syd-lang-clojure.el -*- lexical-binding: t; -*-
|
;;; syd-lang-clojure.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
(use-package clojure-mode
|
(use-package clojure-mode
|
||||||
:mode (rx "." (or "clj" "cljs" "edn" "cljc") eol)
|
: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))
|
||||||
:config
|
:config
|
||||||
(add-hook 'clojure-mode-hook #'syd-lisp-mode)
|
(add-hook 'clojure-mode-hook #'syd-lisp-mode)
|
||||||
(dolist (c '(?- ?_ ?? ?! ?+ ?* ?/ ?: ?> ?< ?= ?&))
|
(dolist (c '(?- ?_ ?? ?! ?+ ?* ?/ ?: ?> ?< ?= ?&))
|
||||||
@@ -28,6 +33,10 @@
|
|||||||
(message "Starting CIDER server for the first time...done")
|
(message "Starting CIDER server for the first time...done")
|
||||||
(pop-to-buffer (cider-current-repl type))))))
|
(pop-to-buffer (cider-current-repl type))))))
|
||||||
|
|
||||||
|
(defun syd-clojure-open-cljs-repl (&optional arg)
|
||||||
|
(interactive "P")
|
||||||
|
(syd-clojure-open-repl arg 'cljs))
|
||||||
|
|
||||||
(use-package cider-mode
|
(use-package cider-mode
|
||||||
:straight nil
|
:straight nil
|
||||||
;; :after clojure-mode
|
;; :after clojure-mode
|
||||||
@@ -40,19 +49,36 @@
|
|||||||
#'syd-clojure-open-cljs-repl :persist t)
|
#'syd-clojure-open-cljs-repl :persist t)
|
||||||
(set-eval-handler! '(clojure-mode clojurec-mode clojurescript-mode)
|
(set-eval-handler! '(clojure-mode clojurec-mode clojurescript-mode)
|
||||||
#'cider-eval-region))
|
#'cider-eval-region))
|
||||||
|
:custom ((cider-show-error-buffer nil))
|
||||||
:general
|
:general
|
||||||
(:keymaps 'cider-repl-mode-map
|
(:keymaps 'cider-repl-mode-map
|
||||||
:states '(normal insert)
|
:states '(normal insert)
|
||||||
"C-k" #'cider-repl-backward-input
|
"C-k" #'cider-repl-backward-input
|
||||||
"C-j" #'cider-repl-forward-input
|
"C-j" #'cider-repl-forward-input
|
||||||
"C-s" #'cider-repl-previous-matching-input)
|
"C-s" #'cider-repl-previous-matching-input)
|
||||||
|
(:keymaps '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
|
||||||
|
"h c" #'cider-cheatsheet)
|
||||||
:config
|
:config
|
||||||
(add-hook 'cider-mode-hook #'eldoc-mode)
|
(add-hook 'cider-mode-hook #'eldoc-mode)
|
||||||
(add-hook 'cider-repl-mode-hook #'syd-lisp-mode)
|
(add-hook 'cider-repl-mode-hook #'syd-lisp-mode)
|
||||||
(set-popup-rules!
|
(set-popup-rules!
|
||||||
`(("^\\*cider-error*" :ignore t)
|
`(("^\\*cider-error\\*" :ignore t)
|
||||||
("^\\*cider-repl" :quit nil :ttl nil)
|
("^\\*cider-repl" :quit nil :ttl nil)
|
||||||
("^\\*cider-repl-history" :vslot 2 :ttl nil)
|
("^\\*cider-repl-history" :vslot 2 :ttl nil)
|
||||||
|
(,(rx bol "*cider-nrepl-middleware") :slot 3 :quit t :ttl 0)
|
||||||
(,(rx bol "*cider-cheatsheet*")
|
(,(rx bol "*cider-cheatsheet*")
|
||||||
:width ,(lambda (win)
|
:width ,(lambda (win)
|
||||||
(with-selected-window win
|
(with-selected-window win
|
||||||
@@ -67,22 +93,9 @@
|
|||||||
(defun syd-clojure-set-handlers-h ()
|
(defun syd-clojure-set-handlers-h ()
|
||||||
(setq-local syd-lookup-documentation-handlers
|
(setq-local syd-lookup-documentation-handlers
|
||||||
(list #'cider-doc))))
|
(list #'cider-doc))))
|
||||||
(general-define-key
|
|
||||||
:keymaps 'cider-mode-map
|
;; Correctly indent some common macros.
|
||||||
:states '(normal visual motion emacs insert)
|
(put-clojure-indent 'match 1))
|
||||||
: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
|
|
||||||
"h c" #'cider-cheatsheet))
|
|
||||||
|
|
||||||
;; Give different pairs of delimiters different colours.
|
;; Give different pairs of delimiters different colours.
|
||||||
(use-package rainbow-delimiters
|
(use-package rainbow-delimiters
|
||||||
|
|||||||
Reference in New Issue
Block a user