branch: elpa/multiple-cursors
commit 1686630fd69279023bb2768f8174347ccaa91c8d
Author: bb2020 <[email protected]>
Commit: bb2020 <[email protected]>
try to implement blacklist
---
multiple-cursors-core.el | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
diff --git a/multiple-cursors-core.el b/multiple-cursors-core.el
index 09b1b01..dd733f2 100644
--- a/multiple-cursors-core.el
+++ b/multiple-cursors-core.el
@@ -310,6 +310,19 @@ cursor with updated info."
(mc/pop-state-from-overlay mc--stored-state-for-undo)
(setq mc--stored-state-for-undo nil)))
+(defcustom mc/black-list-prefer nil
+ "Disables whitelist mechanism and executes commands that are defined
+in mc/black-list only once. If you are a novice multiple-cursors or
+Emacs user, it is benefitical to stick to whitelists."
+ :type '(boolean)
+ :group 'multiple-cursors)
+
+(defcustom mc/black-list nil
+ "Commands to execute once while using multiple-cursors. Requires
+mc/black-list-prefer to be non-nil."
+ :type '(repeat function)
+ :group 'multiple-cursors)
+
(defun mc/prompt-for-inclusion-in-whitelist (original-command)
"Asks the user, then adds the command either to the once-list or the
all-list."
(let ((all-p (y-or-n-p (format "Do %S for all cursors?" original-command))))
@@ -396,13 +409,19 @@ the original cursor, to inform about the lack of support."
(message "%S is not supported with multiple cursors%s"
original-command
(get original-command 'mc--unsupported))
- (when (and original-command
- (not (memq original-command
mc--default-cmds-to-run-once))
- (not (memq original-command mc/cmds-to-run-once))
- (or (memq original-command
mc--default-cmds-to-run-for-all)
- (memq original-command mc/cmds-to-run-for-all)
- (mc/prompt-for-inclusion-in-whitelist
original-command)))
- (mc/execute-command-for-all-fake-cursors
original-command))))))))))
+ (if mc/black-list-prefer
+ (when (and original-command
+ (not (memq original-command
mc--default-cmds-to-run-once))
+ (or (memq original-command
mc--default-cmds-to-run-for-all)
+ (not (memq original-command
mc/black-list))))
+ (mc/execute-command-for-all-fake-cursors
original-command))
+ (when (and original-command
+ (not (memq original-command
mc--default-cmds-to-run-once))
+ (not (memq original-command mc/cmds-to-run-once))
+ (or (memq original-command
mc--default-cmds-to-run-for-all)
+ (memq original-command mc/cmds-to-run-for-all)
+ (mc/prompt-for-inclusion-in-whitelist
original-command)))
+ (mc/execute-command-for-all-fake-cursors
original-command)))))))))))
(defun mc/remove-fake-cursors ()
"Remove all fake cursors.