]> git.eshelyaron.com Git - emacs.git/commitdiff
Add prefix arg to isearch-forward-symbol-at-point (bug#29321)
authorJuri Linkov <juri@linkov.net>
Wed, 21 Nov 2018 21:33:22 +0000 (23:33 +0200)
committerJuri Linkov <juri@linkov.net>
Wed, 21 Nov 2018 21:33:22 +0000 (23:33 +0200)
* lisp/isearch.el (isearch-forward-symbol-at-point): Add optional arg.

etc/NEWS
lisp/isearch.el

index 13d660812d6cfd3669b65394db85ed8ea586a330..dc08e1caf250d7d1262425ef49a481b2f1a8872f 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -644,6 +644,8 @@ can now be searched via 'C-s'.
 and 'C-r' ('isearch-repeat-backward').  With a prefix argument, these
 commands repeat the search for the specified occurrence of the search string.
 A negative argument repeats the search in the opposite direction.
+This makes possible also to use a prefix argument for 'M-s .'
+('isearch-forward-symbol-at-point') to find the next Nth symbol.
 
 *** 'isearch-lazy-count' shows the current match number and total number
 of matches in the Isearch prompt.  Customizable variables
index 6d94ef66931e3c64e458280b3933215f9c17b901..b05805ccd6d8a8d0df526a22f585ee1de5005628 100644 (file)
@@ -887,21 +887,26 @@ as a regexp.  See the command `isearch-forward-regexp' for more information."
   (interactive "P\np")
   (isearch-mode nil (null not-regexp) nil (not no-recursive-edit)))
 
-(defun isearch-forward-symbol-at-point ()
+(defun isearch-forward-symbol-at-point (&optional arg)
   "Do incremental search forward for a symbol found near point.
 Like ordinary incremental search except that the symbol found at point
 is added to the search string initially as a regexp surrounded
 by symbol boundary constructs \\_< and \\_>.
-See the command `isearch-forward-symbol' for more information."
-  (interactive)
+See the command `isearch-forward-symbol' for more information.
+With a prefix argument, search for ARGth symbol forward if ARG is
+positive, or search for ARGth symbol backward if ARG is negative."
+  (interactive "P")
   (isearch-forward-symbol nil 1)
-  (let ((bounds (find-tag-default-bounds)))
+  (let ((bounds (find-tag-default-bounds))
+        (count (and arg (prefix-numeric-value arg))))
     (cond
      (bounds
       (when (< (car bounds) (point))
        (goto-char (car bounds)))
       (isearch-yank-string
-       (buffer-substring-no-properties (car bounds) (cdr bounds))))
+       (buffer-substring-no-properties (car bounds) (cdr bounds)))
+      (when count
+        (isearch-repeat-forward count)))
      (t
       (setq isearch-error "No symbol at point")
       (isearch-push-state)