From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Glenn Morris Newsgroups: gmane.emacs.bugs Subject: bug#33492: 27.0.50; desktop-locals-to-save won't consider buffer-undo-list as local Date: Wed, 28 Nov 2018 16:49:02 -0500 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1543441683 3165 195.159.176.226 (28 Nov 2018 21:48:03 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 28 Nov 2018 21:48:03 +0000 (UTC) User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) Cc: 33492@debbugs.gnu.org To: Terje Larsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Nov 28 22:47:59 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gS7gc-0000fz-Hl for geb-bug-gnu-emacs@m.gmane.org; Wed, 28 Nov 2018 22:47:58 +0100 Original-Received: from localhost ([::1]:50119 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gS7ij-0000g4-4e for geb-bug-gnu-emacs@m.gmane.org; Wed, 28 Nov 2018 16:50:09 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42032) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gS7id-0000fy-H0 for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2018 16:50:04 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gS7ic-0001zr-Rt for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2018 16:50:03 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:49607) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gS7ic-0001zj-P3 for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2018 16:50:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gS7ic-00019C-KA for bug-gnu-emacs@gnu.org; Wed, 28 Nov 2018 16:50:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Glenn Morris Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 28 Nov 2018 21:50:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33492 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: confirmed Original-Received: via spool by 33492-submit@debbugs.gnu.org id=B33492.15434417604353 (code B ref 33492); Wed, 28 Nov 2018 21:50:02 +0000 Original-Received: (at 33492) by debbugs.gnu.org; 28 Nov 2018 21:49:20 +0000 Original-Received: from localhost ([127.0.0.1]:53865 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gS7hv-000189-LF for submit@debbugs.gnu.org; Wed, 28 Nov 2018 16:49:19 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:60590) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gS7ht-00017x-Ox for 33492@debbugs.gnu.org; Wed, 28 Nov 2018 16:49:17 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gS7hm-0001cB-N0 for 33492@debbugs.gnu.org; Wed, 28 Nov 2018 16:49:12 -0500 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:54049) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gS7hg-0001Zd-En; Wed, 28 Nov 2018 16:49:05 -0500 Original-Received: from rgm by fencepost.gnu.org with local (Exim 4.82) (envelope-from ) id 1gS7he-0000rY-41; Wed, 28 Nov 2018 16:49:02 -0500 X-Spook: CDC AMW Magnitude Federal Emergency Management Agency X-Ran: _I?]#-S*fDm,{3xxH4/ZRtxBWp!p=usHnFj\NMjR.O.so'kC:mD+xL (Glenn Morris's message of "Tue, 27 Nov 2018 20:23:07 -0500") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:152868 Archived-At: Glenn Morris wrote: > This issue (buffer-local-variables does not include buffer-undo-list) > is present since Emacs 24.3, due to 36429c8, which moved undo_list to > the end of struct buffer. The following works, but I don't know if it is the best solution. --- i/src/buffer.c +++ w/src/buffer.c @@ -1266,6 +1266,20 @@ buffer_lisp_local_variables (struct buffer *buf, bool clone) return result; } +Lisp_Object +buffer_local_variables_1 (struct buffer *buf, int offset) +{ + int idx = PER_BUFFER_IDX (offset); + if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx)) + && SYMBOLP (PER_BUFFER_SYMBOL (offset))) + { + Lisp_Object sym = PER_BUFFER_SYMBOL (offset); + Lisp_Object val = per_buffer_value (buf, offset); + return EQ (val, Qunbound) ? sym : Fcons (sym, val); + } + return Qnil; +} + DEFUN ("buffer-local-variables", Fbuffer_local_variables, Sbuffer_local_variables, 0, 1, 0, doc: /* Return an alist of variables that are buffer-local in BUFFER. @@ -1277,6 +1291,7 @@ No argument or nil as argument means use current buffer as BUFFER. */) { struct buffer *buf = decode_buffer (buffer); Lisp_Object result = buffer_lisp_local_variables (buf, 0); + Lisp_Object tem; /* Add on all the variables stored in special slots. */ { @@ -1284,18 +1299,16 @@ No argument or nil as argument means use current buffer as BUFFER. */) FOR_EACH_PER_BUFFER_OBJECT_AT (offset) { - idx = PER_BUFFER_IDX (offset); - if ((idx == -1 || PER_BUFFER_VALUE_P (buf, idx)) - && SYMBOLP (PER_BUFFER_SYMBOL (offset))) - { - Lisp_Object sym = PER_BUFFER_SYMBOL (offset); - Lisp_Object val = per_buffer_value (buf, offset); - result = Fcons (EQ (val, Qunbound) ? sym : Fcons (sym, val), - result); - } + tem = buffer_local_variables_1 (buf, offset); + if (!NILP (tem)) + result = Fcons (tem, result); } } + tem = buffer_local_variables_1 (buf, PER_BUFFER_VAR_OFFSET (undo_list)); + if (!NILP (tem)) + result = Fcons (tem, result); + return result; }