From d4b1621d041b74eefa40035dcc2fd7f0fb7f6769 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Fri, 9 Jan 2026 09:16:16 -0700 Subject: [PATCH] feat(emacs): handle eval --- .../users/msyds/emacs/lisp/syd/emacs-lisp.el | 10 ++++++- .../home/users/msyds/emacs/lisp/syd/handle.el | 30 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/modules/home/users/msyds/emacs/lisp/syd/emacs-lisp.el b/modules/home/users/msyds/emacs/lisp/syd/emacs-lisp.el index 75a24cc..d14db5e 100755 --- a/modules/home/users/msyds/emacs/lisp/syd/emacs-lisp.el +++ b/modules/home/users/msyds/emacs/lisp/syd/emacs-lisp.el @@ -46,9 +46,17 @@ (and (get-buffer-window-list buffer) buffer))) +(defun syd-elisp-eval-region (beg end) + (eval-region beg end t)) + +(defun syd-elisp-load-buffer () + (eval-buffer)) + (syd-handle '(emacs-lisp-mode lisp-interaction-mode) :docs #'syd-elisp-handle-docs - :repl #'syd-elisp-open-repl) + :repl #'syd-elisp-open-repl + :eval-region #'syd-elisp-eval-region + :load-buffer #'syd-elisp-load-buffer) (syd-add-hook '(emacs-lisp-mode-hook lisp-interaction-mode-hook) #'syd-lisp-mode) diff --git a/modules/home/users/msyds/emacs/lisp/syd/handle.el b/modules/home/users/msyds/emacs/lisp/syd/handle.el index 8c7947e..f1d013b 100755 --- a/modules/home/users/msyds/emacs/lisp/syd/handle.el +++ b/modules/home/users/msyds/emacs/lisp/syd/handle.el @@ -102,6 +102,28 @@ (evil-append-line 1))) (error "Couldn't open a REPL for %S" major-mode))) + +;;; Eval handler + +(syd-define-handler-type eval-region (beg end) + "Eval region.") + +(evil-define-operator syd-eval-operator (beg end) + "Evaluate selection." + :move-point nil + (interactive "") + (syd-handle-eval-region beg end)) + + +;;; Load buffer handler + +(syd-define-handler-type load-buffer () + "Load buffer/file") + +(defun syd-handle-load-buffer* () + (interactive) + (syd-handle-load-buffer)) + ;;; Keybinds @@ -109,6 +131,14 @@ :states '(motion normal) "K" #'syd-handle-docs*) +(general-def + :states '(normal visual) + "gr" #'syd-eval-operator) + +(general-def + :states 'normal + "gR" #'syd-handle-load-buffer*) + (general-def :prefix-map 'syd-leader-open-map "r" #'syd-handle-repl*)