From: Mattias EngdegÄrd Date: Sun, 7 Aug 2022 08:52:16 +0000 (+0200) Subject: Cease emitting negative file offsets for user variables X-Git-Tag: emacs-29.0.90~1447^2~349 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=08a74ab05a2dcca261fe6adaa839a936b5c123c0;p=emacs.git Cease emitting negative file offsets for user variables '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. --- diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index b1f4f01b3ae..d8a5dd20f6c 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -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 diff --git a/src/lread.c b/src/lread.c index d16df32ca3e..ccccd79cd7c 100644 --- a/src/lread.c +++ b/src/lread.c @@ -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);