• 0 Posts
  • 2 Comments
Joined 1 year ago
cake
Cake day: October 26th, 2023

help-circle
  • Inserting stuff from normal mode ends up before the cursor, which is not what I want if I just typed text ending with a space character, I want it after. I’ve been using this for a bunch of insert functions:

    (defmacro my/insert-after-space (&rest fs)
      `(progn
         ,@(mapcar
            (lambda (f)
              ;; If in evil normal mode and cursor is on a whitespace
              ;; character, then go into append mode first before inserting
              ;; the link. This is to put the link after the space rather
              ;; than before.
              `(defadvice ,f (around append-if-in-evil-normal-mode activate compile)
                 (let ((is-in-evil-normal-mode (and (bound-and-true-p evil-mode)
                                                    (not (bound-and-true-p
                                                          evil-insert-state-minor-mode))
                                                    (looking-at "[[:blank:]]"))))
                   (if (not is-in-evil-normal-mode)
                       ad-do-it
                     (evil-append 0)
                     ad-do-it
                     (evil-normal-state)))))
            fs)))
    
    (my/insert-after-space org-roam-node-insert
                           emojify-insert-emoji
                           org-web-tools-insert-link-for-url)