Subject: Re: bug#3746: M-r in comint mode should use isearch
From: Juri Linkov <[email-masked]>
To: Stefan Monnier <[email-masked]>
Cc: [email-masked], Dan Nicolaescu <[email-masked]>
Date: Mon, 30 Nov 2009 18:12:45 +0200

>> What would be the "UI" (e.g. key-binding) for it?
>> Only the comint-history-isearch defcustom?
>
> One way to use this feature is to configure `comint-history-isearch' to
> a non-nil value.  But I think it should be nil by default because after
> trying to use it with non-nil values I found it counterintuitive since
> in comint mode on typing `C-r' I expect it to search in the comint output,
> not in the input history.
>
> There is no such problem in bash where C-r searches in the input history,
> since there is no way to search in the bash output.
>
> So we need another key to search in the history.  However, this is
> a controversial issue, so I will defer to others to decide what key
> to use for that.  (In the code I sent, there is a command
> `comint-history-isearch-backward' that could be bound to any key.)

To help to select a key binding, below is a table of current key bindings:

* Bash:

M-p    non-incremental-reverse-search-history
M-n    non-incremental-forward-search-history

M-r    revert-line

C-r    reverse-search-history
C-s    forward-search-history

C-p    previous-history
C-n    next-history

* Emacs comint mode:

M-p    comint-previous-input
M-n    comint-next-input

M-r    comint-previous-matching-input
M-s    comint-next-matching-input

C-r    isearch-backward
C-s    isearch-forward

C-p    previous-line
C-n    next-line

So I now agree with the subject of bug#3746 that says

  "M-r in comint mode should use isearch"

I marked bug#3746 as closed with M-r bound to the new command that uses
Isearch, added corresponding menu items, removed M-s (that was
symmetrical to M-r) to expose the global key binding M-s for comint
with removing one problem from the list of problems in FOR-RELEASE
that used to say:

  3. Shell mode binds `M-s' to `comint-next-matching-input'.
     This key binding can be changed later when we will implement
     incremental search through the shell history.

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