unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#15631: 24.3; ido : invert effect of ido-restrict-to-matches with prefix arg
@ 2013-10-16 14:54 Nicolas Richard
  2015-06-30 15:28 ` Nicolas Richard
  0 siblings, 1 reply; 4+ messages in thread
From: Nicolas Richard @ 2013-10-16 14:54 UTC (permalink / raw)
  To: 15631

Hello

The function `ido-restrict-to-matches' is used within ido to restrict
focus on currently matched items. It was asked on #emacs to have a
function with the opposite effect : restrict focus on unmatched items.

I found it was useful for me and came up with this solution (adding an
optional argument to the existing function) :

diff --git a/lisp/ido.el b/lisp/ido.el
index cda4021..31aa303 100644
*** a/lisp/ido.el
--- b/lisp/ido.el
***************
*** 3133,3143 ****
        (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)
    (when ido-matches
!     (setq ido-cur-list ido-matches
  	  ido-text-init ""
  	  ido-rescan nil
  	  ido-exit 'keep)
--- 3133,3155 ----
        (if (> i 0)
  	  (setq ido-cur-list (ido-chop ido-cur-list (nth i ido-matches)))))))
  
! (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 (cond
!                         (removep
!                          (delq nil
!                                (mapcar
!                                 (lambda (elt)
!                                   (when (not (member elt ido-matches))
!                                     elt))
!                                 ido-cur-list)))
!                         (t ido-matches))
!           ido-matches ido-cur-list
  	  ido-text-init ""
  	  ido-rescan nil
  	  ido-exit 'keep)

-- 
Nicolas.





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#15631: 24.3; ido : invert effect of ido-restrict-to-matches with prefix arg
  2013-10-16 14:54 bug#15631: 24.3; ido : invert effect of ido-restrict-to-matches with prefix arg Nicolas Richard
@ 2015-06-30 15:28 ` Nicolas Richard
  2015-06-30 16:17   ` Eli Zaretskii
  0 siblings, 1 reply; 4+ messages in thread
From: Nicolas Richard @ 2015-06-30 15:28 UTC (permalink / raw)
  To: 15631

[-- Attachment #1: Type: text/plain, Size: 551 bytes --]

Nicolas Richard <theonewiththeevillook@yahoo.fr> writes:
> The function `ido-restrict-to-matches' is used within ido to restrict
> focus on currently matched items. It was asked on #emacs to have a
> function with the opposite effect : restrict focus on unmatched items.
>
> I found it was useful for me and came up with this solution (adding an
> optional argument to the existing function) :

I modified the patch a tiny bit and now use the new library seq.el and
add a NEWS entry. If nobody complains I'll install this patch in the
next few days.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Add-argument-to-reverse-the-meaning-of-ido-restrict-.patch --]
[-- Type: text/x-diff, Size: 2130 bytes --]

From c8469c5892c7d01045f81a99a7535b3ed76abd2d Mon Sep 17 00:00:00 2001
From: Nicolas Richard <youngfrog@members.fsf.org>
Date: Tue, 30 Jun 2015 09:18:27 +0200
Subject: [PATCH] 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.

; * 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 1f8cbbc..8ee8364 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 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)
-- 
2.4.5


[-- Attachment #3: Type: text/plain, Size: 11 bytes --]


-- 
Nico.

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* bug#15631: 24.3; ido : invert effect of ido-restrict-to-matches with prefix arg
  2015-06-30 15:28 ` Nicolas Richard
@ 2015-06-30 16:17   ` Eli Zaretskii
  2015-07-01 23:01     ` Nicolas Richard
  0 siblings, 1 reply; 4+ messages in thread
From: Eli Zaretskii @ 2015-06-30 16:17 UTC (permalink / raw)
  To: Nicolas Richard; +Cc: 15631

> From: Nicolas Richard <youngfrog@members.fsf.org>
> Date: Tue, 30 Jun 2015 17:28:38 +0200
> 
> +*** A prefix argument to `ido-restrict-to-matches' will reverse its
> +meaning, and the list is restricted those elements that do not match
> +the current input.                ^^^

A "to" is missing where indicated.

Thanks.





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#15631: 24.3; ido : invert effect of ido-restrict-to-matches with prefix arg
  2015-06-30 16:17   ` Eli Zaretskii
@ 2015-07-01 23:01     ` Nicolas Richard
  0 siblings, 0 replies; 4+ messages in thread
From: Nicolas Richard @ 2015-07-01 23:01 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 15631-done

Eli Zaretskii <eliz@gnu.org> writes:
> A "to" is missing where indicated.

Thanks, I fixed it and pushed. Closing.

Nico.





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-07-01 23:01 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-10-16 14:54 bug#15631: 24.3; ido : invert effect of ido-restrict-to-matches with prefix arg Nicolas Richard
2015-06-30 15:28 ` Nicolas Richard
2015-06-30 16:17   ` Eli Zaretskii
2015-07-01 23:01     ` Nicolas Richard

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).