.
This commit is contained in:
parent
b40402889e
commit
afb348f363
1 changed files with 101 additions and 76 deletions
177
emacs/init.el
177
emacs/init.el
|
@ -481,6 +481,17 @@ Point must be at the beginning of balanced expression (sexp)."
|
|||
(transpose-sexps 1)
|
||||
(forward-sexp -1))
|
||||
|
||||
(defvar last-sexp nil)
|
||||
|
||||
(defun cc/clone-sexp ()
|
||||
"Clone the sexp right after the cursor."
|
||||
(interactive)
|
||||
(call-interactively #'mark-sexp)
|
||||
(call-interactively #'kill-ring-save)
|
||||
(call-interactively #'evil-paste-before)
|
||||
(call-interactively #'forward-char)
|
||||
(call-interactively #'paredit-newline))
|
||||
|
||||
(defun looking-at-opening-paren ()
|
||||
(looking-at (rx (or "(" "{" "["))))
|
||||
|
||||
|
@ -488,61 +499,77 @@ Point must be at the beginning of balanced expression (sexp)."
|
|||
(looking-back (rx (or ")" "}" "]"))))
|
||||
|
||||
;;;;; Basic
|
||||
(use-package smartparens
|
||||
:delight (smartparens-mode " ")
|
||||
(use-package paredit
|
||||
:hook
|
||||
(smartparens-mode . show-smartparens-mode)
|
||||
(smartparens-mode . smartparens-strict-mode)
|
||||
clojure-ts-mode
|
||||
clojure-mode
|
||||
emacs-lisp-mode
|
||||
scheme-mode
|
||||
:custom
|
||||
(sp-undo-pairs-separately t)
|
||||
:config
|
||||
(add-to-list 'sp-clojure-modes 'clojure-ts-mode)
|
||||
(add-to-list 'sp-clojure-modes 'clojurec-ts-mode)
|
||||
(add-to-list 'sp-clojure-modes 'clojurescript-ts-mode)
|
||||
(add-to-list 'sp-lisp-modes 'clojure-ts-mode)
|
||||
(add-to-list 'sp-lisp-modes 'clojurec-ts-mode)
|
||||
(add-to-list 'sp-lisp-modes 'clojurescript-ts-mode)
|
||||
;; TODO: Remove the following three lines once merge request got accepted
|
||||
(load-file (concat init-dir "lib/smartparens-clojure.el"))
|
||||
(load-file (concat init-dir "lib/smartparens-emacs-lisp.el"))
|
||||
(load-file (concat init-dir "lib/smartparens-scheme.el"))
|
||||
(require 'smartparens-clojure)
|
||||
(require 'smartparens-emacs-lisp)
|
||||
(require 'smartparens-scheme)
|
||||
(evil-define-key 'insert smartparens-mode-map
|
||||
(evil-define-key 'insert paredit-mode-map
|
||||
(kbd "r") (conditional-keybind #'looking-at-opening-paren
|
||||
#'sp-raise-sexp)
|
||||
(kbd "w") (conditional-keybind #'looking-at-opening-paren
|
||||
#'paredit-raise-sexp)
|
||||
(kbd "w") (conditional-keybind #'looking-at-opening-paren
|
||||
#'cc/move-sexp-backward)
|
||||
(kbd "s") (conditional-keybind #'looking-at-opening-paren
|
||||
#'cc/move-sexp-forward)
|
||||
(kbd "c") (conditional-keybind #'looking-at-opening-paren
|
||||
#'sp-clone-sexp)
|
||||
(kbd "m") (conditional-keybind #'looking-at-opening-paren
|
||||
#'sp-mark-sexp)
|
||||
(kbd "DEL") (conditional-keybind #'being-past-closing-paren
|
||||
#'sp-backward-delete-sexp
|
||||
#'evil-delete-backward-char-and-join)
|
||||
(kbd ">") (conditional-keybind #'being-past-closing-paren
|
||||
(lambda (prefix)
|
||||
(interactive "P")
|
||||
(call-interactively #'backward-char)
|
||||
(call-interactively #'sp-forward-slurp-sexp)
|
||||
(call-interactively #'sp-forward-sexp)
|
||||
(call-interactively #'forward-char)))
|
||||
(kbd "<") (conditional-keybind #'being-past-closing-paren
|
||||
(lambda (prefix)
|
||||
(interactive "P")
|
||||
(call-interactively #'backward-char)
|
||||
(call-interactively #'sp-forward-barf-sexp)
|
||||
(call-interactively #'forward-char)))))
|
||||
(kbd "c") (conditional-keybind #'looking-at-opening-paren
|
||||
#'cc/clone-sexp)))
|
||||
|
||||
(use-package evil-cleverparens
|
||||
:after smartparens
|
||||
:hook smartparens)
|
||||
;; (use-package smartparens
|
||||
;; :delight (smartparens-mode " ")
|
||||
;; :hook
|
||||
;; (smartparens-mode . show-smartparens-mode)
|
||||
;; (smartparens-mode . smartparens-strict-mode)
|
||||
;; clojure-ts-mode
|
||||
;; emacs-lisp-mode
|
||||
;; scheme-mode
|
||||
;; :custom
|
||||
;; (sp-undo-pairs-separately t)
|
||||
;; :config
|
||||
;; (add-to-list 'sp-clojure-modes 'clojure-ts-mode)
|
||||
;; (add-to-list 'sp-clojure-modes 'clojurec-ts-mode)
|
||||
;; (add-to-list 'sp-clojure-modes 'clojurescript-ts-mode)
|
||||
;; (add-to-list 'sp-lisp-modes 'clojure-ts-mode)
|
||||
;; (add-to-list 'sp-lisp-modes 'clojurec-ts-mode)
|
||||
;; (add-to-list 'sp-lisp-modes 'clojurescript-ts-mode)
|
||||
;; ;; TODO: Remove the following three lines once merge request got accepted
|
||||
;; (load-file (concat init-dir "lib/smartparens-clojure.el"))
|
||||
;; (load-file (concat init-dir "lib/smartparens-emacs-lisp.el"))
|
||||
;; (load-file (concat init-dir "lib/smartparens-scheme.el"))
|
||||
;; (require 'smartparens-clojure)
|
||||
;; (require 'smartparens-emacs-lisp)
|
||||
;; (require 'smartparens-scheme)
|
||||
;; (evil-define-key 'insert smartparens-mode-map
|
||||
;; (kbd "r") (conditional-keybind #'looking-at-opening-paren
|
||||
;; #'sp-raise-sexp)
|
||||
;; (kbd "w") (conditional-keybind #'looking-at-opening-paren
|
||||
;; #'cc/move-sexp-backward)
|
||||
;; (kbd "s") (conditional-keybind #'looking-at-opening-paren
|
||||
;; #'cc/move-sexp-forward)
|
||||
;; (kbd "c") (conditional-keybind #'looking-at-opening-paren
|
||||
;; #'sp-clone-sexp)
|
||||
;; (kbd "m") (conditional-keybind #'looking-at-opening-paren
|
||||
;; #'sp-mark-sexp)
|
||||
;; (kbd "DEL") (conditional-keybind #'being-past-closing-paren
|
||||
;; #'sp-backward-delete-sexp
|
||||
;; #'evil-delete-backward-char-and-join)
|
||||
;; (kbd ">") (conditional-keybind #'being-past-closing-paren
|
||||
;; (lambda (prefix)
|
||||
;; (interactive "P")
|
||||
;; (call-interactively #'backward-char)
|
||||
;; (call-interactively #'sp-forward-slurp-sexp)
|
||||
;; (call-interactively #'sp-forward-sexp)
|
||||
;; (call-interactively #'forward-char)))
|
||||
;; (kbd "<") (conditional-keybind #'being-past-closing-paren
|
||||
;; (lambda (prefix)
|
||||
;; (interactive "P")
|
||||
;; (call-interactively #'backward-char)
|
||||
;; (call-interactively #'sp-forward-barf-sexp)
|
||||
;; (call-interactively #'forward-char)))))
|
||||
|
||||
;; (use-package evil-cleverparens
|
||||
;; :after smartparens
|
||||
;; :hook smartparens)
|
||||
|
||||
;;;;; Visual Aid
|
||||
;; (use-package rainbow-delimiters
|
||||
|
@ -585,7 +612,7 @@ Point must be at the beginning of balanced expression (sexp)."
|
|||
(setq-default eglot-workspace-configuration
|
||||
'((clojure-lsp (maxCompletions . 300))))
|
||||
(add-to-list 'eglot-server-programs
|
||||
'((clojure-ts-mode clojurec-ts-mode clojurescript-ts-mode)
|
||||
'((clojure-mode clojurec-mode clojurescript-mode)
|
||||
"clojure-lsp"
|
||||
:initializationOptions
|
||||
(:preferences
|
||||
|
@ -621,38 +648,36 @@ Point must be at the beginning of balanced expression (sexp)."
|
|||
:ensure t)
|
||||
|
||||
;;;;; Clojure
|
||||
(use-package clojure-ts-mode
|
||||
:delight ""
|
||||
:after tree-sitter
|
||||
:config
|
||||
(require 'sesman)
|
||||
(sesman-install-menu clojure-mode-map)
|
||||
:hook
|
||||
((clojure-ts-mode . eglot-ensure)
|
||||
(clojure-ts-mode . (lambda ()
|
||||
(setq-local sesman-system 'CIDER)))
|
||||
(clojure-ts-mode . (lambda ()
|
||||
(sesman-install-menu clojure-mode-map)))
|
||||
(clojurec-ts-mode . (lambda ()
|
||||
(sesman-install-menu clojurec-mode-map)))
|
||||
(clojurescript-ts-mode . (lambda ()
|
||||
(sesman-install-menu clojurescript-mode-map))))
|
||||
:mode
|
||||
("\\.clj\\'" . #'clojure-ts-mode)
|
||||
("\\.cljc\\'" . #'clojurec-ts-mode)
|
||||
("\\.cljs\\'" . #'clojurescript-ts-mode)
|
||||
:init
|
||||
(add-to-list 'tree-sitter-major-mode-language-alist
|
||||
'(clojure-ts-mode . clojure))
|
||||
(add-to-list 'tree-sitter-major-mode-language-alist
|
||||
'(clojurec-ts-mode . clojure))
|
||||
(add-to-list 'tree-sitter-major-mode-language-alist
|
||||
'(clojurescript-ts-mode . clojure)))
|
||||
;; (use-package clojure-ts-mode
|
||||
;; :delight ""
|
||||
;; :after tree-sitter
|
||||
;; :config
|
||||
;; (require 'sesman)
|
||||
;; (sesman-install-menu clojure-mode-map)
|
||||
;; :hook
|
||||
;; ((clojure-ts-mode . eglot-ensure)
|
||||
;; (clojure-ts-mode . (lambda ()
|
||||
;; (setq-local sesman-system 'CIDER)))
|
||||
;; (clojure-ts-mode . (lambda ()
|
||||
;; (sesman-install-menu clojure-mode-map)))
|
||||
;; (clojurec-ts-mode . (lambda ()
|
||||
;; (sesman-install-menu clojurec-mode-map)))
|
||||
;; (clojurescript-ts-mode . (lambda ()
|
||||
;; (sesman-install-menu clojurescript-mode-map))))
|
||||
;; :mode
|
||||
;; ("\\.clj\\'" . #'clojure-ts-mode)
|
||||
;; ("\\.cljc\\'" . #'clojurec-ts-mode)
|
||||
;; ("\\.cljs\\'" . #'clojurescript-ts-mode)
|
||||
;; :init
|
||||
;; (add-to-list 'tree-sitter-major-mode-language-alist
|
||||
;; '(clojure-ts-mode . clojure))
|
||||
;; (add-to-list 'tree-sitter-major-mode-language-alist
|
||||
;; '(clojurec-ts-mode . clojure))
|
||||
;; (add-to-list 'tree-sitter-major-mode-language-alist
|
||||
;; '(clojurescript-ts-mode . clojure)))
|
||||
|
||||
(use-package cider
|
||||
:delight (cider-mode '(:eval (concat " [" (cider--modeline-info) "]")))
|
||||
:hook
|
||||
(clojure-ts-mode . cider-mode)
|
||||
:config
|
||||
(evil-define-key 'insert 'cider-mode-map
|
||||
"C-x C-e" #'cider-eval-last-sexp)
|
||||
|
|
Loading…
Reference in a new issue