summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Nguyen <james@jojojames.com>2017-11-28 21:55:37 -0800
committerJames Nguyen <james@jojojames.com>2017-11-28 21:55:37 -0800
commit85268777250288630433f0d0b18e2fbee29bd1ae (patch)
tree9cb01bb20e16011f3d9a8406734114def0bc594c
parentfda63a8547a2668c409f127897af2d84e33962ac (diff)
Geiser: Support eval when evil-move-beyond-eol is nil
-rw-r--r--evil-geiser.el16
1 files changed, 15 insertions, 1 deletions
diff --git a/evil-geiser.el b/evil-geiser.el
index 67a6bea..3250907 100644
--- a/evil-geiser.el
+++ b/evil-geiser.el
@@ -25,15 +25,29 @@
;;; Commentary:
;;; Bindings for `geiser'.
+
+;;; Code:
(require 'evil)
(require 'geiser nil t)
(defvar geiser-debug-mode-map)
(defvar geiser-doc-mode-map)
-;;; Code:
+(defun evil-geiser-last-sexp (command &rest args)
+ "In normal-state or motion-state, last sexp ends at point."
+ (if (and (not evil-move-beyond-eol)
+ (or (evil-normal-state-p) (evil-motion-state-p)))
+ (save-excursion
+ (unless (or (eobp) (eolp)) (forward-char))
+ (apply command args))
+ (apply command args)))
+
(defun evil-geiser-setup ()
"Set up bindings for `geiser'."
+ (unless evil-move-beyond-eol
+ (advice-add 'geiser-eval-last-sexp :around 'evil-geiser-last-sexp)
+ (advice-add 'geiser-eval-last-sexp-and-print :around 'evil-geiser-last-sexp))
+
(evil-set-initial-state 'geiser-debug-mode 'normal)
(evil-set-initial-state 'geiser-doc-mode 'normal)