Start making fireplace eval commands work in elisp
This commit is contained in:
parent
c3cc231351
commit
a3eb6846b3
3 changed files with 92 additions and 4 deletions
88
+bindings.el
88
+bindings.el
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
(load! "utils")
|
(load! "utils")
|
||||||
(require 'f)
|
(require 'f)
|
||||||
|
(require 'predd)
|
||||||
|
|
||||||
(defmacro find-file-in! (path &optional project-p)
|
(defmacro find-file-in! (path &optional project-p)
|
||||||
"Returns an interactive function for searching files."
|
"Returns an interactive function for searching files."
|
||||||
|
|
@ -101,6 +102,14 @@ private/hlissner/snippets."
|
||||||
(+hlissner-def-finder! doomd (expand-file-name ".doom.d" "~"))
|
(+hlissner-def-finder! doomd (expand-file-name ".doom.d" "~"))
|
||||||
(+hlissner-def-finder! notes +org-dir)
|
(+hlissner-def-finder! notes +org-dir)
|
||||||
|
|
||||||
|
(defun +grfn/paxedit-kill (&optional n)
|
||||||
|
(interactive "p")
|
||||||
|
(or (paxedit-comment-kill)
|
||||||
|
(when (paxedit-symbol-cursor-within?)
|
||||||
|
(paxedit-symbol-kill))
|
||||||
|
(paxedit-implicit-sexp-kill n)
|
||||||
|
(paxedit-sexp-kill n)
|
||||||
|
(message paxedit-message-kill)))
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
(map!
|
(map!
|
||||||
|
|
@ -421,7 +430,7 @@ private/hlissner/snippets."
|
||||||
:i "[" #'paxedit-open-bracket
|
:i "[" #'paxedit-open-bracket
|
||||||
:i "{" #'paxedit-open-curly
|
:i "{" #'paxedit-open-curly
|
||||||
:n [remap evil-yank-line] #'paxedit-copy
|
:n [remap evil-yank-line] #'paxedit-copy
|
||||||
:n [remap evil-delete-line] #'paxedit-kill
|
:n [remap evil-delete-line] #'+grfn/paxedit-kill
|
||||||
:n "g o" #'paxedit-sexp-raise
|
:n "g o" #'paxedit-sexp-raise
|
||||||
:n [remap evil-join-whitespace] #'paxedit-compress
|
:n [remap evil-join-whitespace] #'paxedit-compress
|
||||||
:n "g S" #'paxedit-format-1
|
:n "g S" #'paxedit-format-1
|
||||||
|
|
@ -998,9 +1007,56 @@ private/hlissner/snippets."
|
||||||
"I" 'grfn/insert-at-sexp-start
|
"I" 'grfn/insert-at-sexp-start
|
||||||
"a" 'grfn/insert-at-form-start))
|
"a" 'grfn/insert-at-form-start))
|
||||||
|
|
||||||
(evil-define-operator fireplace-eval (beg end)
|
(predd-defmulti eval-sexp (lambda (form) major-mode))
|
||||||
|
|
||||||
|
(predd-defmethod eval-sexp 'clojure-mode (form)
|
||||||
|
(cider-interactive-eval form))
|
||||||
|
|
||||||
|
(predd-defmethod eval-sexp 'emacs-lisp-mode (form)
|
||||||
|
(pp-eval-expression form))
|
||||||
|
|
||||||
|
(predd-defmulti eval-sexp-region (lambda (_beg _end) major-mode))
|
||||||
|
|
||||||
|
(predd-defmethod eval-sexp-region 'clojure-mode (beg end)
|
||||||
(cider-interactive-eval nil nil (list beg end)))
|
(cider-interactive-eval nil nil (list beg end)))
|
||||||
|
|
||||||
|
(predd-defmethod eval-sexp-region 'emacs-lisp-mode (beg end)
|
||||||
|
(pp-eval-expression (read (buffer-substring beg end))))
|
||||||
|
|
||||||
|
(predd-defmulti eval-sexp-region-context (lambda (_beg _end _context) major-mode))
|
||||||
|
|
||||||
|
(predd-defmethod eval-sexp-region-context 'clojure-mode (beg end context)
|
||||||
|
(cider--eval-in-context (buffer-substring beg end)))
|
||||||
|
|
||||||
|
(defun pp-eval-context-region (beg end context)
|
||||||
|
(interactive "r\nxContext: ")
|
||||||
|
(let* ((inner-expr (read (buffer-substring beg end)))
|
||||||
|
(full-expr (list 'let* context inner-expr)))
|
||||||
|
(pp-eval-expression full-expr)))
|
||||||
|
|
||||||
|
(predd-defmethod eval-sexp-region-context 'emacs-lisp-mode (beg end context)
|
||||||
|
(pp-eval-context-region beg end context))
|
||||||
|
|
||||||
|
(predd-defmulti preceding-sexp (lambda () major-mode))
|
||||||
|
|
||||||
|
(predd-defmethod preceding-sexp 'clojure-mode ()
|
||||||
|
(cider-last-sexp))
|
||||||
|
|
||||||
|
(predd-defmethod preceding-sexp 'emacs-lisp-mode ()
|
||||||
|
(elisp--preceding-sexp))
|
||||||
|
|
||||||
|
(defun eval-sexp-at-point ()
|
||||||
|
(interactive)
|
||||||
|
(let ((bounds (bounds-of-thing-at-point 'sexp)))
|
||||||
|
(eval-sexp-region (car bounds)
|
||||||
|
(cdr bounds))))
|
||||||
|
|
||||||
|
(defun eval-last-sexp ()
|
||||||
|
(interactive)
|
||||||
|
(eval-sexp (preceding-sexp)))
|
||||||
|
|
||||||
|
;;;
|
||||||
|
|
||||||
(defun cider-insert-current-sexp-in-repl (&optional arg)
|
(defun cider-insert-current-sexp-in-repl (&optional arg)
|
||||||
"Insert the expression at point in the REPL buffer.
|
"Insert the expression at point in the REPL buffer.
|
||||||
If invoked with a prefix ARG eval the expression after inserting it"
|
If invoked with a prefix ARG eval the expression after inserting it"
|
||||||
|
|
@ -1044,11 +1100,16 @@ If invoked with a prefix ARG eval the expression after inserting it"
|
||||||
(interactive)
|
(interactive)
|
||||||
(apply #'cider-eval-and-replace (cider-sexp-at-point 'bounds)))
|
(apply #'cider-eval-and-replace (cider-sexp-at-point 'bounds)))
|
||||||
|
|
||||||
|
;;;
|
||||||
|
|
||||||
|
(evil-define-operator fireplace-eval (beg end)
|
||||||
|
(eval-sexp-region beg end))
|
||||||
|
|
||||||
(evil-define-operator fireplace-replace (beg end)
|
(evil-define-operator fireplace-replace (beg end)
|
||||||
(cider-eval-and-replace beg end))
|
(cider-eval-and-replace beg end))
|
||||||
|
|
||||||
(evil-define-operator fireplace-eval-context (beg end)
|
(evil-define-operator fireplace-eval-context (beg end)
|
||||||
(cider--eval-in-context (buffer-substring beg end)))
|
(eval-sexp-region-context beg end))
|
||||||
|
|
||||||
;;; fireplace-esque eval binding
|
;;; fireplace-esque eval binding
|
||||||
(nmap :keymaps 'cider-mode-map
|
(nmap :keymaps 'cider-mode-map
|
||||||
|
|
@ -1069,6 +1130,23 @@ If invoked with a prefix ARG eval the expression after inserting it"
|
||||||
"c" 'cider-eval-last-sexp-and-replace)
|
"c" 'cider-eval-last-sexp-and-replace)
|
||||||
"y" 'cider-copy-last-result))
|
"y" 'cider-copy-last-result))
|
||||||
|
|
||||||
|
;;;
|
||||||
|
|
||||||
|
(nmap :keymaps 'emacs-lisp-mode-map
|
||||||
|
"c" (general-key-dispatch 'evil-change
|
||||||
|
"p" (general-key-dispatch 'fireplace-eval
|
||||||
|
"p" 'eval-sexp-at-point
|
||||||
|
"c" 'eval-last-sexp
|
||||||
|
"d" 'cider-eval-defun-at-point
|
||||||
|
"r" 'cider-test-run-test)
|
||||||
|
"x" (general-key-dispatch 'fireplace-eval-context
|
||||||
|
"x" 'cider-eval-sexp-at-point-in-context
|
||||||
|
"c" 'cider-eval-last-sexp-in-context)
|
||||||
|
"!" (general-key-dispatch 'fireplace-replace
|
||||||
|
"!" 'cider-eval-current-sexp-and-replace
|
||||||
|
"c" 'cider-eval-last-sexp-and-replace)
|
||||||
|
"y" 'cider-copy-last-result))
|
||||||
|
|
||||||
|
|
||||||
;; >) ; slurp forward
|
;; >) ; slurp forward
|
||||||
;; <) ; barf forward
|
;; <) ; barf forward
|
||||||
|
|
@ -1207,6 +1285,10 @@ If invoked with a prefix ARG eval the expression after inserting it"
|
||||||
"/" 'evil-search-forward
|
"/" 'evil-search-forward
|
||||||
"?" 'evil-search-backward))
|
"?" 'evil-search-backward))
|
||||||
|
|
||||||
|
(:after slack
|
||||||
|
(:map slack-message-buffer-mode-map
|
||||||
|
:i "<up>" #'slack-message-edit))
|
||||||
|
|
||||||
(:after org
|
(:after org
|
||||||
:n "C-c C-x C-o" #'org-clock-out
|
:n "C-c C-x C-o" #'org-clock-out
|
||||||
(:map org-mode-map
|
(:map org-mode-map
|
||||||
|
|
|
||||||
|
|
@ -211,12 +211,14 @@
|
||||||
|
|
||||||
(require 'dash)
|
(require 'dash)
|
||||||
|
|
||||||
|
(def-package! predd)
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; Global config
|
;; Global config
|
||||||
;;
|
;;
|
||||||
|
|
||||||
(setq +doom-modeline-buffer-file-name-style 'relative-to-project)
|
(setq doom-modeline-buffer-file-name-style 'relative-to-project)
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; Modules
|
;; Modules
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,10 @@
|
||||||
(package! dash-functional)
|
(package! dash-functional)
|
||||||
(package! s)
|
(package! s)
|
||||||
(package! request)
|
(package! request)
|
||||||
|
(package! predd
|
||||||
|
:recipe (predd
|
||||||
|
:fetcher github
|
||||||
|
:repo "skeeto/predd"))
|
||||||
|
|
||||||
;; Haskell
|
;; Haskell
|
||||||
(package! lsp-mode)
|
(package! lsp-mode)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue