[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-goggles 057378b54f 203/225: Add paste hint
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-goggles 057378b54f 203/225: Add paste hint |
Date: |
Wed, 12 Jan 2022 08:59:08 -0500 (EST) |
branch: elpa/evil-goggles
commit 057378b54f5ccd20dbfdfd6fea519881a7bf42f6
Author: Evgeni Kolev <evgenysw@gmail.com>
Commit: Evgeni Kolev <evgenysw@gmail.com>
Add paste hint
---
evil-goggles.el | 43 ++++++++++++++++++++++++++++++++++++++++---
1 file changed, 40 insertions(+), 3 deletions(-)
diff --git a/evil-goggles.el b/evil-goggles.el
index b405fcdfcd..444ad4c806 100644
--- a/evil-goggles.el
+++ b/evil-goggles.el
@@ -455,6 +455,40 @@ OFF-BY-DEFAULT if non-nil will set the switch to `nil'"
(when was-defining-kbd-macro
(evil-goggles--show-async-hint beg end))))
+;;; paste
+
+(evil-goggles--define-switch-and-face
+ evil-goggles-enable-paste "If non-nil, enable paste support"
+ evil-goggles-paste-face "Face for paste action")
+
+(defun evil-goggles--paste-advice (count &optional register yank-handler)
+ (when (and (called-interactively-p 'interactive)
+ (evil-normal-state-p))
+ (let* ((beg (save-excursion (evil-goto-mark ?\[) (if (eolp) (1+ (point))
(point))))
+ (end (save-excursion (evil-goto-mark ?\]) (if (eolp) (1+ (point))
(point))))
+ (is-vertical-block-pasted (evil-goggles--paste-vert-block-p
register yank-handler)))
+ (if is-vertical-block-pasted
+ ;; XXX the async hint can't show vertical block hints - use a
blocking hint if a vert block is pasted
+ ;; XXX without the `(1+ end)', the vertical block hint is off by one
+ (evil-goggles--show-blocking-hint beg (1+ end)
is-vertical-block-pasted)
+ (evil-goggles--show-async-hint beg end)))))
+
+
+(defun evil-goggles--paste-vert-block-p (register yank-handler)
+ "Return t if the paste is a vertical block.
+
+Argument REGISTER is the evil register.
+Argument YANK-HANDLER is the yank hanler."
+ (let* ((text (if register
+ (evil-get-register register)
+ (current-kill 0)))
+ (yh (or yank-handler
+ (when (stringp text)
+ (car-safe (get-text-property
+ 0 'yank-handler text))))))
+ (eq yh 'evil-yank-block-handler)))
+
+
;;; assosiation list with faces
(defvar evil-goggles--commands
@@ -474,7 +508,9 @@ OFF-BY-DEFAULT if non-nil will set the switch to `nil'"
(evilnc-comment-operator :face evil-goggles-nerd-commenter-face
:switch evil-goggles-enable-nerd-commenter :advice
evil-goggles--generic-async-advice)
(evil-replace-with-register :face evil-goggles-replace-with-register-face
:switch evil-goggles-enable-replace-with-register :advice
evil-goggles--generic-async-advice-1)
(evil-set-marker :face evil-goggles-set-marker-face
:switch evil-goggles-enable-set-marker :advice
evil-goggles--set-marker-advice)
- (evil-record-macro :face evil-goggles-record-macro-face
:switch evil-goggles-enable-record-macro :advice
evil-goggles--record-macro-advice)))
+ (evil-record-macro :face evil-goggles-record-macro-face
:switch evil-goggles-enable-record-macro :advice
evil-goggles--record-macro-advice)
+ (evil-paste-before :face evil-goggles-paste-face
:switch evil-goggles-enable-paste :advice
evil-goggles--paste-advice :after t)
+ (evil-paste-after :face evil-goggles-paste-face
:switch evil-goggles-enable-paste :advice
evil-goggles--paste-advice :after t)))
;;; minor mode defined below ;;;
@@ -497,9 +533,10 @@ OFF-BY-DEFAULT if non-nil will set the switch to `nil'"
(dolist (command-cfg evil-goggles--commands)
(let ((cmd (car command-cfg))
(advice (plist-get (cdr command-cfg) :advice))
- (switch (plist-get (cdr command-cfg) :switch)))
+ (switch (plist-get (cdr command-cfg) :switch))
+ (after (plist-get (cdr command-cfg) :after)))
(when (symbol-value switch)
- (advice-add cmd :before advice)))))
+ (advice-add cmd (if after :after :before) advice)))))
;; remove advice
(remove-hook 'pre-command-hook 'evil-goggles--vanish)
(dolist (command-cfg evil-goggles--commands)
- [nongnu] elpa/evil-goggles 142e0a9f2b 105/225: Remove unused option, (continued)
- [nongnu] elpa/evil-goggles 142e0a9f2b 105/225: Remove unused option, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles ee7fafb858 107/225: Remove debugs, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 5404dcfaf8 106/225: Don't quote inherited faces so face-background works, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 13fd7e348c 110/225: Disable pulsing by default, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 49c1318098 113/225: Update README, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 6bf281c788 117/225: Simplify macro, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 9f4a9dec5a 122/225: Fix comment, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 04b93b8564 157/225: Use alternative pulse duration calculation, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 79a25e4da1 163/225: make compile: use dolist instead of mapc, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 79a2f620bf 190/225: Implement yank, delete, indent & change with a :before advice, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 057378b54f 203/225: Add paste hint,
ELPA Syncer <=
- [nongnu] elpa/evil-goggles 0a96a8fb43 212/225: Show paste hint after `C-n' and `C-p', ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles ea5ab4012a 217/225: Fix parentheses nesting, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 61d3c1e3d9 222/225: Switch to makel.mk, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 08a22058fd 223/225: Remove evil-tests.el workaround, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 82c14bc058 136/225: Don't block when surrounding, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 7f417d8eff 140/225: Improve docs, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles f482c9762d 143/225: Remove unnecessary function, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 87949d4c7e 147/225: Update README, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 4645be7ac2 150/225: Fix block hint using only the bg of the face, ignoring the fg, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 691bd2ef28 148/225: Make comments compatible with outline, ELPA Syncer, 2022/01/12