X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/39eb0cb563f5287270f3946804456dc766386638..cabaa992fa7f7f1bcde79be8c202d54a41a52c9f:/lisp/thingatpt.el diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el index b67a32a24f..ac4a3d342d 100644 --- a/lisp/thingatpt.el +++ b/lisp/thingatpt.el @@ -1,9 +1,9 @@ ;;; thingatpt.el --- get the `thing' at point -;; Copyright (C) 1991-1998, 2000-2013 Free Software Foundation, Inc. +;; Copyright (C) 1991-1998, 2000-2015 Free Software Foundation, Inc. ;; Author: Mike Williams -;; Maintainer: FSF +;; Maintainer: emacs-devel@gnu.org ;; Keywords: extensions, matching, mouse ;; Created: Thu Mar 28 13:48:23 1991 @@ -177,35 +177,45 @@ The bounds of THING are determined by `bounds-of-thing-at-point'." ;; Sexps -(defun in-string-p () - "Return non-nil if point is in a string. -\[This is an internal function.]" +(defun thing-at-point--in-string-p () + "Return non-nil if point is in a string." + (declare (obsolete "use (nth 3 (syntax-ppss)) instead." "25.1")) (let ((orig (point))) (save-excursion (beginning-of-defun) (nth 3 (parse-partial-sexp (point) orig))))) -(defun end-of-sexp () - "Move point to the end of the current sexp. -\[This is an internal function.]" +(define-obsolete-function-alias 'in-string-p + 'thing-at-point--in-string-p "25.1" + "This is an internal thingatpt function and should not be used.") + +(defun thing-at-point--end-of-sexp () + "Move point to the end of the current sexp." (let ((char-syntax (syntax-after (point)))) (if (or (eq char-syntax ?\)) - (and (eq char-syntax ?\") (in-string-p))) + (and (eq char-syntax ?\") (nth 3 (syntax-ppss)))) (forward-char 1) (forward-sexp 1)))) -(put 'sexp 'end-op 'end-of-sexp) +(define-obsolete-function-alias 'end-of-sexp + 'thing-at-point--end-of-sexp "25.1" + "This is an internal thingatpt function and should not be used.") + +(put 'sexp 'end-op 'thing-at-point--end-of-sexp) -(defun beginning-of-sexp () - "Move point to the beginning of the current sexp. -\[This is an internal function.]" +(defun thing-at-point--beginning-of-sexp () + "Move point to the beginning of the current sexp." (let ((char-syntax (char-syntax (char-before)))) (if (or (eq char-syntax ?\() - (and (eq char-syntax ?\") (in-string-p))) + (and (eq char-syntax ?\") (nth 3 (syntax-ppss)))) (forward-char -1) (forward-sexp -1)))) -(put 'sexp 'beginning-op 'beginning-of-sexp) +(define-obsolete-function-alias 'beginning-of-sexp + 'thing-at-point--beginning-of-sexp "25.1" + "This is an internal thingatpt function and should not be used.") + +(put 'sexp 'beginning-op 'thing-at-point--beginning-of-sexp) ;; Lists @@ -476,19 +486,22 @@ looks like an email address, \"ftp://\" if it starts with ;; matches that straddle the start position so we search forwards once ;; and then back repeatedly and then back up a char at a time. -(defun thing-at-point-looking-at (regexp) +(defun thing-at-point-looking-at (regexp &optional distance) "Return non-nil if point is in or just after a match for REGEXP. Set the match data from the earliest such match ending at or after point." (save-excursion - (let ((old-point (point)) match) + (let ((old-point (point)) + (forward-bound (and distance (+ (point) distance))) + (backward-bound (and distance (- (point) distance))) + match) (and (looking-at regexp) (>= (match-end 0) old-point) (setq match (point))) ;; Search back repeatedly from end of next match. ;; This may fail if next match ends before this match does. - (re-search-forward regexp nil 'limit) - (while (and (re-search-backward regexp nil t) + (re-search-forward regexp forward-bound 'limit) + (while (and (re-search-backward regexp backward-bound t) (or (> (match-beginning 0) old-point) (and (looking-at regexp) ; Extend match-end past search start (>= (match-end 0) old-point) @@ -518,7 +531,8 @@ with angle brackets.") (put 'email 'bounds-of-thing-at-point (lambda () - (let ((thing (thing-at-point-looking-at thing-at-point-email-regexp))) + (let ((thing (thing-at-point-looking-at + thing-at-point-email-regexp 500))) (if thing (let ((beginning (match-beginning 0)) (end (match-end 0))) @@ -546,7 +560,7 @@ with angle brackets.") "Return the sentence at point. See `thing-at-point'." (thing-at-point 'sentence)) -(defun read-from-whole-string (str) +(defun thing-at-point--read-from-whole-string (str) "Read a Lisp expression from STR. Signal an error if the entire string was not used." (let* ((read-data (read-from-string str)) @@ -560,9 +574,14 @@ Signal an error if the entire string was not used." (error "Can't read whole string") (car read-data)))) +(define-obsolete-function-alias 'read-from-whole-string + 'thing-at-point--read-from-whole-string "25.1" + "This is an internal thingatpt function and should not be used.") + (defun form-at-point (&optional thing pred) (let ((sexp (ignore-errors - (read-from-whole-string (thing-at-point (or thing 'sexp)))))) + (thing-at-point--read-from-whole-string + (thing-at-point (or thing 'sexp)))))) (if (or (not pred) (funcall pred sexp)) sexp))) ;;;###autoload