unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Juri Linkov <juri@linkov.net>
To: Antoine Levitt <antoine.levitt@gmail.com>
Cc: 25562@debbugs.gnu.org
Subject: bug#25562: 25.1; isearch-forward-word first matches a non-word
Date: Tue, 31 Jan 2017 01:24:07 +0200	[thread overview]
Message-ID: <877f5cf7xk.fsf@mail.linkov.net> (raw)
In-Reply-To: <87r33l7yqj.fsf@inria.fr> (Antoine Levitt's message of "Mon, 30 Jan 2017 09:12:20 +0100")

>>> I see, thanks for the explanation. That's still unsatisfactory to me. I
>>> think an ideal incremental word search would just start over from the
>>> current point each time a new character is typed (that's what most users
>>> would expect). Then any non-insertion command would make the user "commit"
>>> to the particular search and the incremental search proper would begin. Is
>>> that compatible with the current design of isearch?
>>
>> What you describe looks like isearch-barrier used for subsequent \| in regexps,
>> e.g. typing ‘C-M-s ^\<it\>’ and then ‘\|’ moves point back to the beginning
>> of the search.  But wouldn't this make the search too “jumpy”, especially
>> while typing long words?
>
> My use case of isearch-word is mainly short words, e.g. variable names
> such as f in f(x) in latex. I'd guess that's a pretty common pattern.
> Even for long words, I think an user would type a word quickly, and be
> confused that their first match is not really a match. That offsets the
> potential jumpiness (ie what happens when the user is typing the word)
> for me.

You can try yourself using the minimal patch below that demonstrates your idea.

But from what I see, it's not too good, using the recipe from your top post:

emacs -Q
M-<
M-s w
i

After typing the letter “i”, isearch fails, beeps, flashes the screen,
with a clear indication that something went wrong.  This is more confusing
for a user, because now a user has to stop and think about what is wrong.

Here is the patch to help seeing this in action:

diff --git a/lisp/isearch.el b/lisp/isearch.el
index 5c48c30..85b9365 100644
--- a/lisp/isearch.el
+++ b/lisp/isearch.el
@@ -1616,6 +1616,7 @@ (defun word-search-regexp (string &optional lax)
 
 Used in `word-search-forward', `word-search-backward',
 `word-search-forward-lax', `word-search-backward-lax'."
+  (setq lax nil)
   (cond
    ((equal string "") "")
    ((string-match-p "\\`\\W+\\'" string) "\\W+")
@@ -2465,6 +2466,11 @@ (defun isearch-process-search-char (char &optional count)
   ;; } and | are special in regexps when preceded by \.
   ;; Nothing special for + because it matches at least once.
   (cond
+   ((eq isearch-regexp-function t)
+    (goto-char isearch-barrier)
+    (setq isearch-other-end isearch-barrier
+          isearch-success t
+          isearch-error nil))
    ((memq char '(?* ??)) (isearch-fallback nil))
    ((eq   char ?\})      (isearch-fallback t t))
    ((eq   char ?|)       (isearch-fallback t nil t)))





  reply	other threads:[~2017-01-30 23:24 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-28 11:23 bug#25562: 25.1; isearch-forward-word first matches a non-word Antoine Levitt
2017-01-29  0:29 ` Juri Linkov
2017-01-29  6:52   ` Antoine Levitt
2017-01-30  0:30     ` Juri Linkov
2017-01-30  8:12       ` Antoine Levitt
2017-01-30 23:24         ` Juri Linkov [this message]
2017-01-31  3:28           ` Eli Zaretskii
     [not found]             ` <CABfD5m0NxLQ5rbfXcXvxXLDK6c_88Rzsu-bwRj8gJNdh3cinSw@mail.gmail.com>
     [not found]               ` <CABfD5m1wB_z3aLsW_vOj0Vx6+1H48bUeWs46ORW0fFBUsNB0ew@mail.gmail.com>
2017-01-31  7:57                 ` Antoine Levitt
2017-01-31 15:38                   ` Eli Zaretskii
2017-02-01  0:44                     ` Juri Linkov
2017-02-09 23:28                       ` Juri Linkov
2017-02-14 23:28                         ` Juri Linkov
2017-01-31 16:45     ` Michael Heerdegen
2017-01-31 16:51   ` Michael Heerdegen
2017-02-01  0:38     ` Juri Linkov
2017-02-01 17:51       ` Michael Heerdegen
2017-02-02  0:51         ` Juri Linkov
2017-02-02 21:07           ` Michael Heerdegen
2017-02-03 11:04           ` Michael Heerdegen
2017-02-03 13:06             ` Eli Zaretskii
2017-02-03 14:16               ` Michael Heerdegen
2017-02-05 23:48                 ` Juri Linkov
2017-02-07 20:02                   ` Michael Heerdegen
2017-02-09 22:35                     ` Juri Linkov

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=877f5cf7xk.fsf@mail.linkov.net \
    --to=juri@linkov.net \
    --cc=25562@debbugs.gnu.org \
    --cc=antoine.levitt@gmail.com \
    /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).