From: Juri Linkov Date: Thu, 13 Jun 2013 21:11:42 +0000 (+0300) Subject: * lisp/isearch.el (isearch-del-char): Don't exceed the length of `isearch-string' X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~2016^2~121 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=cb89acab6cdfa418d1d14ad3200712e1dd406673;p=emacs.git * lisp/isearch.el (isearch-del-char): Don't exceed the length of `isearch-string' by the prefix arg. Fixes: debbugs:14563 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 974fad3e306..f21f6e4b068 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-06-13 Juri Linkov + + * isearch.el (isearch-del-char): Don't exceed the length of + `isearch-string' by the prefix arg. (Bug#14563) + 2013-06-13 Juri Linkov * isearch.el (isearch-yank-word, isearch-yank-line) diff --git a/lisp/isearch.el b/lisp/isearch.el index 4754f86d5d7..ddb5ba9331c 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -1815,11 +1815,17 @@ If search string is empty, just beep." (interactive "p") (if (= 0 (length isearch-string)) (ding) - (setq isearch-string (substring isearch-string 0 (- (or arg 1))) + (setq isearch-string (substring isearch-string 0 + (- (min (or arg 1) + (length isearch-string)))) isearch-message (mapconcat 'isearch-text-char-description isearch-string ""))) ;; Use the isearch-other-end as new starting point to be able ;; to find the remaining part of the search string again. + ;; This is like what `isearch-search-and-update' does, + ;; but currently it doesn't support deletion of characters + ;; for the case where unsuccessful search may become successful + ;; by deletion of characters. (if isearch-other-end (goto-char isearch-other-end)) (isearch-search) (isearch-push-state)