emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 2f020e8 1/2: Add argument to reverse the meaning of


From: Nicolas Richard
Subject: [Emacs-diffs] master 2f020e8 1/2: Add argument to reverse the meaning of ido-restrict-to-matches
Date: Wed, 01 Jul 2015 22:59:29 +0000

branch: master
commit 2f020e82195d6870b45d24d0c46af6d92b31deca
Author: Nicolas Richard <address@hidden>
Commit: Nicolas Richard <address@hidden>

    Add argument to reverse the meaning of ido-restrict-to-matches
    
    * lisp/ido.el (ido-restrict-to-matches): Add an optional argument
    to reverse the meaning (Bug#15631).
    
    ; * etc/NEWS: Mention the change.
---
 etc/NEWS    |    3 +++
 lisp/ido.el |   17 +++++++++++++----
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 758d358..38a872d 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -398,6 +398,9 @@ If you need your objects to be named, do it by inheriting 
from `eieio-named'.
 *** New command `ido-bury-buffer-at-head' bound to C-S-b
 Bury the buffer at the head of `ido-matches', analogous to how C-k
 kills the buffer at head.
+*** A prefix argument to `ido-restrict-to-matches' will reverse its
+meaning, and the list is restricted to those elements that do not
+match the current input.
 
 ** Minibuffer
 
diff --git a/lisp/ido.el b/lisp/ido.el
index 5995fcd..1f12fbf 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -322,6 +322,7 @@
 ;;; Code:
 
 (defvar recentf-list)
+(require 'seq)
 
 ;;;; Options
 
@@ -3180,11 +3181,19 @@ for first matching file."
       (if (> i 0)
          (setq ido-cur-list (ido-chop ido-cur-list (nth i ido-matches)))))))
 
-(defun ido-restrict-to-matches ()
-  "Set current item list to the currently matched items."
-  (interactive)
+(defun ido-restrict-to-matches (&optional removep)
+  "Set current item list to the currently matched items.
+
+When argument REMOVEP is non-nil, the currently matched items are
+instead removed from the current item list."
+  (interactive "P")
   (when ido-matches
-    (setq ido-cur-list ido-matches
+    (setq ido-cur-list (if removep
+                           ;; An important feature is to preserve the
+                           ;; order of the elements.
+                           (seq-difference ido-cur-list ido-matches)
+                         ido-matches)
+          ido-matches ido-cur-list
          ido-text-init ""
          ido-rescan nil
          ido-exit 'keep)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]