Function: embark-target-expression-at-point
embark-target-expression-at-point is a byte-compiled function defined
in embark.el.
Signature
(embark-target-expression-at-point)
Documentation
Target expression at point.
Source Code
;; Defined in ~/.emacs.d/elpa/embark-20260610.302/embark.el
;; NOTE: There is also (thing-at-point 'list), however it does
;; not work on strings and requires the point to be inside the
;; parentheses. This version here is slightly more general.
(defun embark-target-expression-at-point ()
"Target expression at point."
(cl-flet ((syntax-p (class &optional (delta 0))
(and (<= (point-min) (+ (point) delta) (point-max))
(eq (pcase class
('open 4) ('close 5) ('prefix 6) ('string 7))
(syntax-class (syntax-after (+ (point) delta)))))))
(when-let*
((start
(pcase-let ((`(_ ,open _ ,string _ _ _ _ ,start _ _) (syntax-ppss)))
(ignore-errors ; set start=nil if delimiters are unbalanced
(cond
(string start)
((or (syntax-p 'open) (syntax-p 'prefix))
(save-excursion (backward-prefix-chars) (point)))
((syntax-p 'close -1)
(save-excursion
(backward-sexp) (backward-prefix-chars) (point)))
((syntax-p 'string) (point))
((syntax-p 'string -1) (scan-sexps (point) -1))
(t open)))))
(end (ignore-errors (scan-sexps start 1))))
(unless (eq start (car (bounds-of-thing-at-point 'defun)))
`(expression ,(buffer-substring start end) ,start . ,end)))))