(scope-define-function-analyzer defalias (sym _def &optional _docstring)
(when-let ((quoted (scope--unqoute sym))) (scope-report-s quoted 'defun)))
+(scope-define-function-analyzer thing-at-point (thing &optional _)
+ (when-let ((quoted (scope--unqoute thing))) (scope-report-s quoted 'thing)))
+
+(dolist (sym '( forward-thing
+ beginning-of-thing
+ end-of-thing
+ bounds-of-thing-at-point))
+ (put sym 'scope-analyzer #'scope--analyze-thing-at-point))
+
+(scope-define-function-analyzer bounds-of-thing-at-mouse (_event thing)
+ (when-let ((quoted (scope--unqoute thing))) (scope-report-s quoted 'thing)))
+
+(scope-define-function-analyzer thing-at-mouse (_event thing &optional _)
+ (when-let ((quoted (scope--unqoute thing))) (scope-report-s quoted 'thing)))
+
(scope-define-function-analyzer custom-declare-variable (sym _default _doc &rest args)
(when-let ((quoted (scope--unqoute sym))) (scope-report-s quoted 'defvar))
(while-let ((kw (car-safe args))
(declaration "Declaration")
(rx-construct "`rx' construct")
(theme "Theme")
+ (thing "Thing (text object)")
(slot "Slot")
(widget-type "Widget type")
(type "Type")
(declaration 'font-lock-variable-use-face)
(rx-construct 'elisp-rx)
(theme 'elisp-theme)
+ (thing 'font-lock-type-face)
(slot 'font-lock-builtin-face)
(widget-type 'font-lock-type-face)
(type 'font-lock-type-face)
((group) (lambda (sym) (get sym 'group-documentation)))
((face) #'facep)
((theme) #'custom-theme-p)
+ ((thing) (lambda (sym)
+ (or
+ (assq sym (bound-and-true-p thing-at-point-provider-alist))
+ (assq sym (bound-and-true-p bounds-of-thing-at-point-provider-alist))
+ (get sym 'thing-at-point)
+ (get sym 'bounds-of-thing-at-point)
+ (get sym 'beginning-op)
+ (get sym 'end-op))))
((nil) (lambda (sym)
(let ((sym (intern-soft (symbol-name sym))))
(or (boundp sym)