* 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
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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.