changeset 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents 0424deda6873
children 6b08a7bfb89e
files lisp/isearch.el
diffstat 1 files changed, 6 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/isearch.el	Tue Nov 11 17:20:06 2008 +0000
+++ b/lisp/isearch.el	Tue Nov 11 19:43:09 2008 +0000
@@ -2178,7 +2178,12 @@
       (funcall isearch-search-fun-function)
     (cond
      (isearch-word
-      (if isearch-forward 'word-search-forward-lax 'word-search-backward-lax))
+      ;; Use lax versions to not fail at the end of the word while the user
+      ;; adds and removes characters in the search string
+      (if (not (eq (length isearch-string)
+		   (length (isearch-string-state (car isearch-cmds)))))
+	  (if isearch-forward 'word-search-forward-lax 'word-search-backward-lax)
+	(if isearch-forward 'word-search-forward 'word-search-backward)))
      (isearch-regexp
       (if isearch-forward 're-search-forward 're-search-backward))
      (t