[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#67455: (Record source position, etc., in doc strings, and use this i
From: |
Stefan Monnier |
Subject: |
bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.) |
Date: |
Sat, 09 Mar 2024 16:36:57 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
> I've just pushed a large commit to feature/positioned-lambdas, a work
> in progress commit for bug#67455, putting source position information at
> the start of doc strings. master was merged into it just before the
> commit.
I barely started to look at the code, but regarding the following hunk:
diff --git a/lisp/emacs-lisp/backquote.el b/lisp/emacs-lisp/backquote.el
index 6917128d70a..0d4681bc979 100644
--- a/lisp/emacs-lisp/backquote.el
+++ b/lisp/emacs-lisp/backquote.el
@@ -172,6 +172,30 @@ backquote-process
(backquote-delay-process s (1- level))))
((eq (car s) backquote-backquote-symbol)
(backquote-delay-process s (1+ level)))
+ ;; Process a (lambda ...) form specially, since otherwise the
+ ;; lambda symbol would get separated from its introductory (,
+ ;; preventing this processing from being done elsewhere in macro
+ ;; expansion.
+ ((and (eq (car s) 'lambda)
+ (symbol-with-pos-p (car s))
+ (listp (car-safe (cdr s))))
+ (let ((kdr (backquote-process (cdr s) level))
+ (lambda-pos (symbol-with-pos-pos (car s)))
+ )
+ (if (null byte-compile-in-progress)
+ (setcar s 'lambda)) ; Strip the position.
+ (cond
+ ((= (car kdr) 0)
+ (cons (car kdr)
+ (list 'quote
+ (byte-run-posify-lambda-form
+ (cons (car s) (car (cdr (cdr kdr)))) ; Two cdr's to
strip 'quote.
+ lambda-pos))))
+ (t
+ (cons 1
+ (list 'byte-run-posify-lambda-form
+ (list 'cons (list 'quote (car s)) (cdr kdr))
+ lambda-pos))))))
(t
(let ((rest s)
item firstlist list lists expression)
- Testing `byte-compile-in-progress` can't be right. Do you to test
whether the result of this backquote will be byte-compiled or do you
really mean to test whether this backquote happens to be executed
during compilation (which could be because the compiler ends up
loading code while executing `eval-when-compile` or `require`)?
- My gut tells me that changing backquote can't be right.
(lambda (f) ..) *can* appear within a backquote without it being an
actual lambda expression.
What alternatives have you considered?
Stefan
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Alan Mackenzie, 2024/03/04
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.),
Stefan Monnier <=
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Alan Mackenzie, 2024/03/10
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Stefan Monnier, 2024/03/10
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Alan Mackenzie, 2024/03/10
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Stefan Monnier, 2024/03/10
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Alan Mackenzie, 2024/03/24
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Stefan Monnier, 2024/03/25
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Alan Mackenzie, 2024/03/25
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Stefan Monnier, 2024/03/25
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Alan Mackenzie, 2024/03/26
- bug#67455: (Record source position, etc., in doc strings, and use this in *Help* and backtraces.), Stefan Monnier, 2024/03/26