diff --git a/gists.org b/gists.org index 5801d33..2829cd0 100644 --- a/gists.org +++ b/gists.org @@ -329,6 +329,39 @@ Found [[https://www.reddit.com/r/emacs/comments/e2u5n9/comment/f918t22/][a Reddi (eshell-mode . outline-minor-mode)) #+end_src +* Paredit inside minibuffer commands + +Used [[https://github.com/purcell/emacs.d/blob/master/lisp/init-paredit.el][Purcell's configation]] as a starting point. + +#+name: minibuffer-paredit +#+begin_src elisp :tangle gists/minibuffer-paredit.el + (use-package paredit + :hook + (minibuffer-setup . my/conditionally-enable-paredit-mode) + (minibuffer-exit . my/restore-paredit-key) + :config + (defvar my/paredit-minibuffer-commands '(eval-expression + pp-eval-expression + eval-expression-with-eldoc + ibuffer-do-eval + ibuffer-do-view-and-eval + org-ql-sparse-tree + org-ql-search) + "Interactive commands for which paredit should be enabled in the minibuffer.") + + (defun my/conditionally-enable-paredit-mode () + "Enable paredit during lisp-related minibuffer commands." + (when (memq this-command my/paredit-minibuffer-commands) + (enable-paredit-mode) + (unbind-key (kbd "RET") paredit-mode-map))) + + (defun my/restore-paredit-key () + "Restore the RET binding that was disabled by + my/conditionally-enable-paredit-mode." + (bind-key (kbd "RET") #'paredit-newline paredit-mode-map))) +#+end_src + + * Meta ** License diff --git a/gists/minibuffer-paredit.el b/gists/minibuffer-paredit.el new file mode 100644 index 0000000..7003050 --- /dev/null +++ b/gists/minibuffer-paredit.el @@ -0,0 +1,24 @@ +(use-package paredit + :hook + (minibuffer-setup . my/conditionally-enable-paredit-mode) + (minibuffer-exit . my/restore-paredit-key) + :config + (defvar my/paredit-minibuffer-commands '(eval-expression + pp-eval-expression + eval-expression-with-eldoc + ibuffer-do-eval + ibuffer-do-view-and-eval + org-ql-sparse-tree + org-ql-search) + "Interactive commands for which paredit should be enabled in the minibuffer.") + + (defun my/conditionally-enable-paredit-mode () + "Enable paredit during lisp-related minibuffer commands." + (when (memq this-command my/paredit-minibuffer-commands) + (enable-paredit-mode) + (unbind-key (kbd "RET") paredit-mode-map))) + + (defun my/restore-paredit-key () + "Restore the RET binding that was disabled by + my/conditionally-enable-paredit-mode." + (bind-key (kbd "RET") #'paredit-newline paredit-mode-map)))