]> git.eshelyaron.com Git - emacs.git/commitdiff
Cease emitting negative file offsets for user variables
authorMattias Engdegård <mattiase@acm.org>
Sun, 7 Aug 2022 08:52:16 +0000 (10:52 +0200)
committerMattias Engdegård <mattiase@acm.org>
Sun, 7 Aug 2022 08:52:16 +0000 (10:52 +0200)
'User variables' were made obsolete in Emacs 24 along with
user-variable-p; the sign of the position in (#$ . POS) hasn't
mattered since.

* lisp/emacs-lisp/bytecomp.el (byte-compile-output-docform):
Don't emit negative position when doc string starts with `*`.
* src/lread.c (get_lazy_string): Explain.

lisp/emacs-lisp/bytecomp.el
src/lread.c

index b1f4f01b3ae6eb05db72821ed68d89d79892710f..d8a5dd20f6c2918fa6baa52b027a976aae65f762 100644 (file)
@@ -2451,18 +2451,9 @@ list that represents a doc string reference.
       (let (position
             (print-symbols-bare t))     ; Possibly redundant binding.
         ;; Insert the doc string, and make it a comment with #@LENGTH.
-        (and (>= (nth 1 info) 0)
-             dynamic-docstrings
-             (progn
-               (setq position
-                     (byte-compile-output-as-comment
-                      (nth (nth 1 info) form) nil))
-               ;; If the doc string starts with * (a user variable),
-               ;; negate POSITION.
-               (if (and (stringp (nth (nth 1 info) form))
-                        (> (length (nth (nth 1 info) form)) 0)
-                        (eq (aref (nth (nth 1 info) form) 0) ?*))
-                   (setq position (- position)))))
+        (when (and (>= (nth 1 info) 0) dynamic-docstrings)
+             (setq position (byte-compile-output-as-comment
+                             (nth (nth 1 info) form) nil)))
 
         (let ((print-continuous-numbering t)
               print-number-table
index d16df32ca3e4fed47c398be6238c37e5ffa04b5d..ccccd79cd7c09d884a792e3369ad07f983fd70b7 100644 (file)
@@ -3486,7 +3486,9 @@ get_lazy_string (Lisp_Object val)
      unibyte string.  If it is actually a doc string, caller must make
      it multibyte.  */
 
-  /* Position is negative for user variables.  */
+  /* We used to emit negative positions for 'user variables' (whose doc
+     strings started with an asterisk); take the absolute value for
+     compatibility.  */
   EMACS_INT pos = eabs (XFIXNUM (XCDR (val)));
   struct saved_string *ss = &saved_strings[0];
   struct saved_string *ssend = ss + ARRAYELTS (saved_strings);