Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 27 additions & 25 deletions meow-beacon.el
Original file line number Diff line number Diff line change
Expand Up @@ -96,31 +96,33 @@ Non-nil BACKWARD means backward direction."

(defun meow--beacon-apply-command (cmd)
"Apply CMD in BEACON state."
(when meow--beacon-overlays
(let ((bak (overlay-get (car meow--beacon-overlays)
'meow-beacon-backward)))
(meow--wrap-collapse-undo
(save-mark-and-excursion
(cl-loop for ov in (if bak (reverse meow--beacon-overlays) meow--beacon-overlays) do
(when (and (overlayp ov))
(let ((type (overlay-get ov 'meow-beacon-type))
(backward (overlay-get ov 'meow-beacon-backward)))
;; always switch to normal state before applying kmacro
(meow--switch-state 'normal)

(if (eq type 'cursor)
(progn
(meow--cancel-selection)
(goto-char (overlay-start ov)))
(thread-first
(if backward
(meow--make-selection
type (overlay-end ov) (overlay-start ov))
(meow--make-selection type (overlay-start ov) (overlay-end ov)))
(meow--select t)))

(call-interactively cmd))
(delete-overlay ov))))))))
(unwind-protect
(when meow--beacon-overlays
(let ((bak (overlay-get (car meow--beacon-overlays)
'meow-beacon-backward)))
(meow--wrap-collapse-undo
(save-mark-and-excursion
(cl-loop for ov in (if bak (reverse meow--beacon-overlays) meow--beacon-overlays) do
(when (and (overlayp ov))
(let ((type (overlay-get ov 'meow-beacon-type))
(backward (overlay-get ov 'meow-beacon-backward)))
;; always switch to normal state before applying kmacro
(meow--switch-state 'normal)

(if (eq type 'cursor)
(progn
(meow--cancel-selection)
(goto-char (overlay-start ov)))
(thread-first
(if backward
(meow--make-selection
type (overlay-end ov) (overlay-start ov))
(meow--make-selection type (overlay-start ov) (overlay-end ov)))
(meow--select t)))

(call-interactively cmd))
(delete-overlay ov)))))))
(setq-local meow--beacon-insert-enter-key nil)))

(defun meow--beacon-apply-kmacros-from-insert ()
"Apply kmacros in BEACON state, after exiting from insert.
Expand Down
Loading