[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/evil-goggles fc62425d64 001/225: Initial version for evil-
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/evil-goggles fc62425d64 001/225: Initial version for evil-delete only |
Date: |
Wed, 12 Jan 2022 08:58:32 -0500 (EST) |
branch: elpa/evil-goggles
commit fc62425d6422853b34c0d2be90a2dd70758c944b
Author: Evgeni Kolev <evgenysw@gmail.com>
Commit: Evgeni Kolev <evgenysw@gmail.com>
Initial version for evil-delete only
---
evil-goggles.el | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 69 insertions(+)
diff --git a/evil-goggles.el b/evil-goggles.el
new file mode 100644
index 0000000000..73d45708b3
--- /dev/null
+++ b/evil-goggles.el
@@ -0,0 +1,69 @@
+;; goals:
+;; - delete with strikethrough preview
+;; - yank with 'region' previw
+;; - indent with 'underline' preview
+;; next goals:
+;; - one (advice) for all cases
+;; - make the above configurable
+;; next goals:
+;; - configurable integration with plugins: evil-surround, evil-lion
+;; - '.' repeat with goggles
+
+;; implementation:
+;; - advise evil-delete, after
+;; - if (and called interactively, not visual state, not insert state, goggles
off, more than one char in region)
+;; - set goggles on
+;; - show goggles
+;; - call orig-fun
+;; - set gogges off
+;; - else
+;; - call (interactively?) orig-fun
+
+(defvar evil-goggles--on nil)
+(defvar evil-goggles-show-for 0.200) ;; .100 or .200 seem best
+
+(defun evil-goggles--show (beg end)
+ (let ((ov (evil-goggles--make-overlay beg end 'face 'region)))
+ (sit-for evil-goggles-show-for)
+ (delete-overlay ov)))
+
+(defun evil-goggles--make-overlay (beg end &rest properties)
+ (let ((ov (make-overlay beg end)))
+ (overlay-put ov 'priority 9999)
+ (overlay-put ov 'window (selected-window))
+ (while properties
+ (overlay-put ov (pop properties) (pop properties)))
+ ov))
+
+(defun evil-goggles--show-p (beg end)
+ (and (not evil-goggles--on)
+ (numberp beg)
+ (numberp end)
+ (> (- end beg) 1)
+ (<= (point-min) beg end)
+ (>= (point-max) end beg)
+ (not (evil-visual-state-p))
+ (not (evil-insert-state-p))))
+
+(defun evil-goggles--evil-delete-advice (orig-fun &rest args)
+ (let ((beg (nth 0 args))
+ (end (nth 1 args)))
+ (if (evil-goggles--show-p beg end)
+ (let* ((evil-goggles--on t))
+ (evil-goggles--show beg end)
+ (apply orig-fun args))
+ (apply orig-fun args))))
+
+(define-minor-mode evil-goggles-mode
+ "evil-goggles global minor mode."
+ :lighter " (⌐■-■)"
+ :global t
+ (cond
+ (evil-goggles-mode
+ (advice-add 'evil-delete :around 'evil-goggles--evil-delete-advice))
+ (t
+ (advice-remove 'evil-delete 'evil-goggles--evil-delete-advice))))
+
+(provide 'evil-goggles)
+
+;; evil-goggles.el end here
- [nongnu] branch elpa/evil-goggles created (now 1b66053ea5), ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles fc62425d64 001/225: Initial version for evil-delete only,
ELPA Syncer <=
- [nongnu] elpa/evil-goggles e489bcc112 002/225: Add support for evil-indent, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 2133b9b671 003/225: Use different faces for delete and indent, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 2e2da80d0d 007/225: Add join, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 5ae539673d 008/225: Configurable faces, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 01b23de219 004/225: Remove all advices on mode disable, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 661e9b17ac 006/225: Enable/disable all registered advices by (evil-goggles-mode), ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 15261c2683 005/225: Add yank, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles e26b505a92 010/225: Don't break evil-inhibit-operator in evil-delete advice, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles 0c5ba02b40 014/225: Take into account `evil-inhibit-operator`, ELPA Syncer, 2022/01/12
- [nongnu] elpa/evil-goggles d947547e7e 025/225: No default faces per command, ELPA Syncer, 2022/01/12