unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@jurta.org>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: emacs-devel@gnu.org
Subject: Re: C-r and C-s in minibuffer should search completion
Date: Sun, 30 Mar 2008 21:32:19 +0300	[thread overview]
Message-ID: <87hceouksk.fsf@jurta.org> (raw)
In-Reply-To: <jwvej9skgkj.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Sun, 30 Mar 2008 00:01:26 -0400")

>> However, there is one problem now: `C-x b M-n M-n' puts in the minibuffer
>> the name of the current buffer because the current buffer is in the front
>> of the buffer list acquired from the completion table in read-buffer.
>
> This is a very minor problem.

This is a usability problem for users who will prefer using `C-x b M-n M-n'
to switch buffers by recency.  And the current buffer will be annoying
in this list.

>> But it makes no sense to switch to the current buffer, so the case 'B'
>
> Then switch-to-buffer should use a completion predicate that rules out
> the current-buffer.  And the history functions should pay attention to it.

The completion list still should contain the current buffer for other
commands that read a buffer name and whose semantics may require
the presence of the current buffer in the completion list.

Since removing the current buffer from the list of defaults is necessary
only for three commands `C-x b', `C-x 4 b' and `C-x 5 b', I propose just
to check for their names before removing the current buffer from the list:

Index: lisp/simple.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/simple.el,v
retrieving revision 1.913
diff -c -r1.913 simple.el
*** lisp/simple.el	29 Mar 2008 22:56:17 -0000	1.913
--- lisp/simple.el	30 Mar 2008 18:32:11 -0000
***************
*** 1304,1309 ****
--- 1305,1318 ----
  
  (defvar minibuffer-temporary-goal-position nil)
  
+ (defvar minibuffer-original-command nil
+   "Name of the command that invoked this minibuffer.")
+ 
+ (add-hook 'minibuffer-setup-hook 'minibuffer-initialize)
+ 
+ (defun minibuffer-initialize ()
+   (set (make-local-variable 'minibuffer-original-command) this-command))
+ 
  (defvar minibuffer-default-add-function 'minibuffer-default-add-completions
    "Function run by `goto-history-element' before consuming `minibuffer-default'.
  This is useful to dynamically add more elements to the list `minibuffer-default'
***************
*** 1332,1337 ****
--- 1341,1354 ----
  			      minibuffer-completion-table
  			      minibuffer-completion-predicate
  			      t)))
+ 
+     ;; Remove the current buffer from the list of buffer completions
+     (when (member minibuffer-original-command
+ 		  '(switch-to-buffer
+ 		    switch-to-buffer-other-window
+ 		    switch-to-buffer-other-frame))
+       (setq all (cdr all)))
+ 
      (if (listp def)
  	(append def all)
        (cons def (delete def all)))))

-- 
Juri Linkov
http://www.jurta.org/emacs/




  reply	other threads:[~2008-03-30 18:32 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-20 19:13 C-r and C-s in minibuffer should search completion Stefan Monnier
2008-03-20 19:35 ` Juri Linkov
2008-03-20 20:07   ` Lennart Borgman (gmail)
2008-03-20 20:38     ` Juri Linkov
2008-03-20 20:54       ` Drew Adams
2008-03-20 23:07         ` Juri Linkov
2008-03-20 22:13   ` Stefan Monnier
2008-03-20 22:27     ` Drew Adams
2008-03-20 23:03     ` Juri Linkov
2008-03-21  1:26       ` Stefan Monnier
2008-03-22  1:17         ` Juri Linkov
2008-03-22 17:04           ` Stefan Monnier
2008-03-23  2:17             ` Juri Linkov
2008-03-23  3:24               ` Stefan Monnier
2008-03-29  1:00   ` Xavier Maillard
2008-03-29 12:30     ` Juri Linkov
2008-03-29 16:23       ` Drew Adams
2008-03-30  0:38         ` Juri Linkov
2008-03-30  2:38           ` Drew Adams
2008-03-20 20:44 ` Drew Adams
2008-03-25 21:44 ` Juri Linkov
2008-03-26  2:31   ` Stefan Monnier
2008-03-26  7:01     ` Drew Adams
2008-03-26 14:41       ` Stefan Monnier
2008-03-26 17:07         ` Drew Adams
2008-03-26 10:56     ` Juri Linkov
2008-03-26 14:47       ` Stefan Monnier
2008-03-27  0:44         ` Juri Linkov
2008-03-27  2:43           ` Stefan Monnier
2008-03-27 23:43             ` Juri Linkov
2008-03-29  4:03               ` Stefan Monnier
2008-03-30  0:44                 ` Juri Linkov
2008-03-30  4:01                   ` Stefan Monnier
2008-03-30 18:32                     ` Juri Linkov [this message]
2008-03-30 22:41                       ` Stefan Monnier
2008-03-30 23:50                         ` Juri Linkov
2008-03-31  2:11                           ` Stefan Monnier
2008-04-03 22:59                             ` Juri Linkov
2008-04-04  1:18                               ` Stefan Monnier
2008-04-06 20:45                                 ` Juri Linkov
2008-04-07 15:32                                   ` Stefan Monnier
2008-04-15 22:28                                     ` Juri Linkov
2008-04-16  2:08                                       ` Stefan Monnier
2008-04-16 23:16                                         ` Juri Linkov
2008-04-17  1:41                                           ` Stefan Monnier
2008-04-17  9:18                                             ` Juri Linkov
2008-04-18  1:07                                               ` Stefan Monnier
2008-04-19 20:11                                                 ` Juri Linkov
2008-04-19 21:10                                                   ` Stefan Monnier
2008-04-19 22:46                                                     ` Juri Linkov
2008-04-20  2:44                                                       ` Stefan Monnier
2008-04-21 21:51                                                         ` Juri Linkov
2008-04-22  3:11                                                           ` Stefan Monnier
2008-04-22 20:59                                                             ` Juri Linkov
2008-04-23  2:28                                                               ` Stefan Monnier
2008-04-21  3:07                                                       ` Richard Stallman
2008-04-21 22:54                                                         ` Juri Linkov
2008-04-22  3:10                                                           ` Stefan Monnier
2008-03-30  0:44                 ` minibuffer-default-add-shell-commands (was: C-r and C-s in minibuffer should search completion) Juri Linkov
2008-03-30  4:08                   ` minibuffer-default-add-shell-commands Stefan Monnier
2008-03-30 18:28                     ` minibuffer-default-add-shell-commands Juri Linkov
2008-03-30 11:30                   ` minibuffer-default-add-shell-commands Reiner Steib
2008-03-30 18:31                     ` minibuffer-default-add-shell-commands Juri Linkov
2008-03-30 20:25                       ` minibuffer-default-add-shell-commands Reiner Steib

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87hceouksk.fsf@jurta.org \
    --to=juri@jurta.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).