From unknown Sun Jun 22 17:15:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31090: 26.0.91; Edebug incorrectly instruments unquotes in nested backquotes Resent-From: Gemini Lasswell Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 07 Apr 2018 23:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 31090 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31090@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.152314474721598 (code B ref -1); Sat, 07 Apr 2018 23:46:01 +0000 Received: (at submit) by debbugs.gnu.org; 7 Apr 2018 23:45:47 +0000 Received: from localhost ([127.0.0.1]:41628 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f4xWk-0005cI-Tz for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:47 -0400 Received: from eggs.gnu.org ([208.118.235.92]:56858) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f4xWj-0005c5-8V for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f4xWc-0002gg-Gl for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:39 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:33026) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f4xWc-0002gO-Cn for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47799) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f4xWa-0004FX-Iy for bug-gnu-emacs@gnu.org; Sat, 07 Apr 2018 19:45:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f4xWX-0002f3-EC for bug-gnu-emacs@gnu.org; Sat, 07 Apr 2018 19:45:36 -0400 Received: from aibo.runbox.com ([91.220.196.211]:44556) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f4xWW-0002e7-VX for bug-gnu-emacs@gnu.org; Sat, 07 Apr 2018 19:45:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Date:Message-ID:Subject:To:From; bh=G5Sp0qvWXh42yCTGcECZgua/sxLCkeTOe+C52vM15AM=; b=Xyl4TMg9no7EoZvFleuiFBAzj Odu3x0fTBdGZX7wtZbbwcpwFlDWc9uFNJwsWe7iSbfG/h5ewxGUdrZpHDF74VwqwtaAJVECluh78X vxV0GwJN3nyY8nC/8Oq9W7smnqbsVkKtNhD7ihCTESs8M/DwDORL+naiMKUpOohouuYIkegBeptRI 0lYfrxuETU2can84CAW0R8em0UHlNfNQLgUWBDzCOmabIQCeJRMwDvPgPsRwv2skpkXBY6XR6A2hQ 1+ZOrD7OPvbuKdEQphkok5APUIRR8WsbgQEw+D7NcubdoHqDSGfoZ35hOk6wuXvkAkvdx0h3X3Xuh ylALBCNSw==; Received: from [10.9.9.210] (helo=mailfront10.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1f4xWU-0003Oc-4r for bug-gnu-emacs@gnu.org; Sun, 08 Apr 2018 01:45:30 +0200 Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront10.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1f4xWJ-0007J6-Ok for bug-gnu-emacs@gnu.org; Sun, 08 Apr 2018 01:45:20 +0200 From: Gemini Lasswell Message-ID: <87fu4662fm.fsf@runbox.com> Date: Sat, 07 Apr 2018 16:44:59 -0700 MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.1 (-----) Edebug incorrectly instruments unquotes inside of nested backquotes, causing errors if the incorrectly instrumented forms are part of a macro expansion that then gets executed in another context. To reproduce, enter this code into *scratch*: (defun my-wrap-form (form description) `(unless ,form (message "failed %s" ,description))) (defmacro my-should (form) (declare (debug t)) (let ((fn (gensym "fn-")) (args (gensym "args-")) (value (gensym "value-"))) `(let ((,fn (function ,(car form))) (,args (list ,@(cdr form))) ,value) ,(my-wrap-form `(setq ,value (apply ,fn ,args)) `(nconc (list :form `(,,fn ,@,args)) (list :value ,value)))))) (defun my-test () (my-should (= 1 2))) Then: Navigate to the definition of my-wrap-form and evaluate it with C-M-x Navigate to the definition of my-should and evaluate it with C-u C-M-x Navigate to the definition of my-test and evaluate it with C-M-x g M-: (my-test) RET Result: The debugger appears with an error (wrong-type-argument consp nil) in edebug-before. The sample code above is a much simplified version of the implementation of ert.el's 'should' macro, which Edebug does not instrument correctly. While this nested backquote construction is a valid use of backquote, and Edebug should be fixed to handle it correctly, I think that this is a case where backquote makes readability worse instead of better and the code in ert.el would be more readable if `(,,fn ,@,args) was replaced by a non-backquoted way of doing the same thing, such as (cons ,fn ,args). In GNU Emacs 26.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2018-04-03 built on localhost Windowing system distributor 'The X.Org Foundation', version 11.0.11905000 Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. my-wrap-form Quit Edebug: my-should Mark set Go... my-test Entering debugger... Back to top level Configured using: 'configure --prefix=/nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0 --with-modules --with-x-toolkit=gtk3 --with-xft' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS Important settings: value of $EMACSLOADPATH: /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy-refactor hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy-refactor /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy-pkg hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy-pkg /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy-autoloads hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy-autoloads /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/soap-client-3.1.3/soap-inspect hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/net/soap-inspect /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/soap-client-3.1.3/soap-client hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/net/soap-client /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/seq-2.20/seq hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/emacs-lisp/seq /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/let-alist-1.0.5/let-alist hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/emacs-lisp/let-alist Features: (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs format-spec rfc822 mml mml-sec password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-mode cl-print debug edebug easymenu misearch multi-isearch map seq seq-25 byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib elec-pair time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 101864 7133) (symbols 48 21035 1) (miscs 40 52 165) (strings 32 30023 1659) (string-bytes 1 816911) (vectors 16 15702) (vector-slots 8 511581 6094) (floats 8 51 164) (intervals 56 270 0) (buffers 992 13)) From unknown Sun Jun 22 17:15:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31090: 26.0.91; Edebug incorrectly instruments unquotes in nested backquotes References: <87fu4662fm.fsf@runbox.com> Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 09 Apr 2018 19:16:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31090 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gemini Lasswell Cc: Alan Mackenzie , 31090@debbugs.gnu.org Received: via spool by 31090-submit@debbugs.gnu.org id=B31090.152330134525335 (code B ref 31090); Mon, 09 Apr 2018 19:16:02 +0000 Received: (at 31090) by debbugs.gnu.org; 9 Apr 2018 19:15:45 +0000 Received: from localhost ([127.0.0.1]:44261 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f5cGX-0006aZ-2s for submit@debbugs.gnu.org; Mon, 09 Apr 2018 15:15:45 -0400 Received: from colin.muc.de ([193.149.48.1]:54600 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1f5cGU-0006aP-NJ for 31090@debbugs.gnu.org; Mon, 09 Apr 2018 15:15:43 -0400 Received: (qmail 86929 invoked by uid 3782); 9 Apr 2018 19:15:41 -0000 Date: 9 Apr 2018 19:15:41 -0000 Message-ID: <20180409191541.86928.qmail@mail.muc.de> From: Alan Mackenzie Organization: muc.de e.V. In-Reply-To: X-Newsgroups: gnu.emacs.bug User-Agent: tin/2.4.1-20161224 ("Daill") (UNIX) (FreeBSD/11.1-RELEASE-p8 (amd64)) X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, Gemini. In article you wrote: > Edebug incorrectly instruments unquotes inside of nested backquotes, > causing errors if the incorrectly instrumented forms are part of a > macro expansion that then gets executed in another context. > To reproduce, enter this code into *scratch*: > (defun my-wrap-form (form description) > `(unless ,form > (message "failed %s" ,description))) > (defmacro my-should (form) > (declare (debug t)) > (let ((fn (gensym "fn-")) > (args (gensym "args-")) > (value (gensym "value-"))) > `(let ((,fn (function ,(car form))) > (,args (list ,@(cdr form))) > ,value) > ,(my-wrap-form > `(setq ,value (apply ,fn ,args)) > `(nconc (list :form `(,,fn ,@,args)) > (list :value ,value)))))) > (defun my-test () > (my-should (= 1 2))) > Then: > Navigate to the definition of my-wrap-form and evaluate it with C-M-x > Navigate to the definition of my-should and evaluate it with C-u C-M-x > Navigate to the definition of my-test and evaluate it with C-M-x > g > M-: (my-test) RET > Result: The debugger appears with an error (wrong-type-argument consp nil) > in edebug-before. I think we've been here before, in bug #16184. The problem is that the instrumented form hasn't called edebug-enter, for whatever reason, hence hasn't pushed a cons onto edebug-offset-indices, which is thus still nil. The (setcar edebug-offset-indices ...) at the start of edebug-slow-before (to which edebug-before is aliased) thus fails. At the time, I committed a solution which involved initialising that variable to '(0) instead of nil. You persuaded me to revert that change, saying [Date: Fri, 30 Dec 2016 15:27:37 -0800, Subject: Re: bug#16184: 24.3.50; edebug and eval-when-compiler don't work together]: > I haven't able to reproduce the bug with cc-eval-when-compile, just > eval-and-compile. But the thing that is supposed to make Edebug wrap a > form in edebug-enter is the use of def-form or def-body in the Edebug > spec. It works for eval-when-compile which has the Edebug spec (&rest > def-form). The body of eval-and-compile doesn't get wrapped because > its Edebug spec is t, so the bug happens there. > cc-eval-when-compile has the same Edebug spec as eval-when-compile, so > its body should get wrapped by edebug-enter. If that's not happening > in your Emacs, it's a bug in Edebug which is different from the > eval-and-compile Edebug spec bug. This, if true, implies that using an instrumented macro is liable to produce this error if that macro doesn't have an appropriate edebug spec. This seems to be an unreasonable prerequisite - I think the typical work flow would be writing a macro first, testing it with the help of Edebug, and then, possibly writing an edebug spec. Perhaps we should think again about my solution from December 2016, namely initialising edebug-offset-indices to a cons '(0). I've just tried this, and got the error edebug-freq-count is unbound. So perhaps we should give initial values to all these declared dynamic variables which are bound by edebug-enter, for the case when edebug-enter doesn't get called. [ .... ] -- Alan Mackenzie (Nuremberg, Germany). From unknown Sun Jun 22 17:15:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31090: 26.0.91; Edebug incorrectly instruments unquotes in nested backquotes Resent-From: Gemini Lasswell Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 11 Apr 2018 14:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31090 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Mackenzie Cc: 31090@debbugs.gnu.org Received: via spool by 31090-submit@debbugs.gnu.org id=B31090.152345618621562 (code B ref 31090); Wed, 11 Apr 2018 14:17:02 +0000 Received: (at 31090) by debbugs.gnu.org; 11 Apr 2018 14:16:26 +0000 Received: from localhost ([127.0.0.1]:46336 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6GXy-0005bh-4W for submit@debbugs.gnu.org; Wed, 11 Apr 2018 10:16:26 -0400 Received: from aibo.runbox.com ([91.220.196.211]:46484) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f6GXw-0005bX-Hu for 31090@debbugs.gnu.org; Wed, 11 Apr 2018 10:16:25 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Message-ID:Date:In-reply-to: References:Subject:Cc:To:From; bh=vy0+w1RqjX1NYJkuudzS6Zi7YL8gWk5o9wLM5svJndU=; b=ROuJC5IhJ5rnI/d+qlxdppSbV9 CykQu7CkARsRpI6Nnl0IJ90R2NcnnX7qsLlqz2GdrI6eKV/vXzBM5gbbxEvCF4MdkK+t1svTGz/sY L38OQsjs0Im7BzHPXiTnQM6BkUansnWJpg99pLEvGveravqSn//zHCQ1H/ww135STme5gdECxRFol ICzMTxksOWrDUiit/OjwHs6qkWZDi5oa1HwN3atn8PILIVCtQFRqMipPSoG6aVwKxffFmOOXf/lWs 3S3ZbC/DlsHq6eU/fsVBNElE21TtA8787old64sflVJhpDFGnaKgaCzM38fZY3pcwHuWyApCb4wFW woHeemBA==; Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1f6GXu-0004Ip-UW; Wed, 11 Apr 2018 16:16:23 +0200 Received: from 200.sub-174-206-19.myvzw.com ([174.206.19.200] helo=sockeye) by mailfront12.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1f6GXO-0003wX-G9; Wed, 11 Apr 2018 16:15:51 +0200 From: Gemini Lasswell References: <20180409191541.86928.qmail@mail.muc.de> User-agent: mu4e 0.9.18; emacs 26.0.91 In-reply-to: <20180409191541.86928.qmail@mail.muc.de> Date: Wed, 11 Apr 2018 07:15:45 -0700 Message-ID: <878t9tvnfy.fsf@runbox.com> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) Hi Alan, > I think we've been here before, in bug #16184. The problem is that the > instrumented form hasn't called edebug-enter, for whatever reason, hence > hasn't pushed a cons onto edebug-offset-indices, which is thus still > nil. The (setcar edebug-offset-indices ...) at the start of > edebug-slow-before (to which edebug-before is aliased) thus fails. Yes, whenever Edebug's instrumentation is malformed due to a bug, edebug-before is where it fails. Consider what edebug-before does: if you are stepping through code, or type a key while running instrumented code, it brings up Edebug's recursive edit at the location the form was defined, the correct buffer, function and offset within the function. In order to do that it relies upon edebug-enter having looked up that information and placed it in Edebug's dynamic variables. > At the time, I committed a solution which involved initialising that > variable to '(0) instead of nil. You persuaded me to revert that > change, saying [Date: Fri, 30 Dec 2016 15:27:37 -0800, Subject: Re: > bug#16184: 24.3.50; edebug and eval-when-compiler don't work together]: > > > I haven't able to reproduce the bug with cc-eval-when-compile, just > > eval-and-compile. But the thing that is supposed to make Edebug wrap a > > form in edebug-enter is the use of def-form or def-body in the Edebug > > spec. It works for eval-when-compile which has the Edebug spec (&rest > > def-form). The body of eval-and-compile doesn't get wrapped because > > its Edebug spec is t, so the bug happens there. > > > cc-eval-when-compile has the same Edebug spec as eval-when-compile, so > > its body should get wrapped by edebug-enter. If that's not happening > > in your Emacs, it's a bug in Edebug which is different from the > > eval-and-compile Edebug spec bug. > > This, if true, implies that using an instrumented macro is liable to > produce this error if that macro doesn't have an appropriate edebug > spec. This seems to be an unreasonable prerequisite - I think the > typical work flow would be writing a macro first, testing it with the > help of Edebug, and then, possibly writing an edebug spec. If a macro, instrumented or not, has no Edebug spec, this error should not happen. Without an Edebug spec, Edebug does not instrument any of the forms that are arguments to the macro, so there shouldn't be any instrumentation in the macro expansion. The fact that `(,,fn ,@,args) is currently making instrumentation show up in the macro expansion is a bug in Edebug. If a macro has an incorrect Edebug spec, it can cause this error, in particular if the spec uses 'form' instead of 'def-form' to describe one of the macro's arguments, and then the macro wraps that form in a lambda and saves it somewhere, and it later gets called outside of its original context. > Perhaps we should think again about my solution from December 2016, > namely initialising edebug-offset-indices to a cons '(0). I've just > tried this, and got the error edebug-freq-count is unbound. So perhaps > we should give initial values to all these declared dynamic variables > which are bound by edebug-enter, for the case when edebug-enter doesn't > get called. This isn't going to work for the reason I described above, because Edebug won't know where to invoke its recursive edit. Changing edebug-before to fail silently when its dynamic variables are unbound would not solve the problem either because if mis-instrumented code is called from a correctly instrumented function, then edebug-before will find that the data in the dynamic variables is wrong instead of missing. For an example of that, go back to the steps to reproduce this bug and evaluate my-test with C-u C-M-x instead of C-M-x, and then run it. The result will be an error message, "Args out of range: [20 31 38 39], 24", because edebug-before is trying to use an index (form number) from my-should in the arrays for my-test, which has fewer forms. If my-test was a longer function with the same or more forms than my-should, then the error would not happen but stepping through my-test with Edebug would do some weird jumping around when it got to the erroneous edebug-before. While pondering this I found a comment in edebug.el saying that the reason for the distinction between form and def-form in the edebug specs for macro arguments was that using def-form everywhere would be expensive. But that was written in 1994, and it doesn't sound prohibitively expensive to me now. I'll give it a try and report back. From unknown Sun Jun 22 17:15:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31090: 26.0.91; Edebug incorrectly instruments unquotes in nested backquotes Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 22 Sep 2019 10:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31090 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Gemini Lasswell Cc: 31090@debbugs.gnu.org Received: via spool by 31090-submit@debbugs.gnu.org id=B31090.156914740221574 (code B ref 31090); Sun, 22 Sep 2019 10:17:01 +0000 Received: (at 31090) by debbugs.gnu.org; 22 Sep 2019 10:16:42 +0000 Received: from localhost ([127.0.0.1]:33417 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iByv3-0005bs-Tv for submit@debbugs.gnu.org; Sun, 22 Sep 2019 06:16:42 -0400 Received: from colin.muc.de ([193.149.48.1]:26639 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1iByv0-0005bh-3t for 31090@debbugs.gnu.org; Sun, 22 Sep 2019 06:16:39 -0400 Received: (qmail 97825 invoked by uid 3782); 22 Sep 2019 10:16:36 -0000 Received: from acm.muc.de (p4FE15FF8.dip0.t-ipconnect.de [79.225.95.248]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 22 Sep 2019 12:16:34 +0200 Received: (qmail 9106 invoked by uid 1000); 22 Sep 2019 10:16:34 -0000 Date: Sun, 22 Sep 2019 10:16:34 +0000 Message-ID: <20190922101634.GA8955@ACM> References: <87fu4662fm.fsf@runbox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87fu4662fm.fsf@runbox.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hello, Gemini. I think I've cracked this bug. On Sat, Apr 07, 2018 at 16:44:59 -0700, Gemini Lasswell wrote: > Edebug incorrectly instruments unquotes inside of nested backquotes, > causing errors if the incorrectly instrumented forms are part of a > macro expansion that then gets executed in another context. As you say the problem is with nested backquotes, in particular when there's no , or ,@ "between" the two backquotes. What edebug does at the moment is, once a backquote is encountered, _every_ , and ,@ form inside it is instrumented. This is wrong. The inner backquote form should not be instrumented, since it is code which will be generated by the macro, not code executed by the macro. The exception is when there is a , or ,@ inside the inner backquote, which needs to "turn on" instrumentation again for its contents. Or something like that. > To reproduce, enter this code into *scratch*: > (defun my-wrap-form (form description) > `(unless ,form > (message "failed %s" ,description))) > (defmacro my-should (form) > (declare (debug t)) > (let ((fn (gensym "fn-")) > (args (gensym "args-")) > (value (gensym "value-"))) > `(let ((,fn (function ,(car form))) > (,args (list ,@(cdr form))) > ,value) > ,(my-wrap-form > `(setq ,value (apply ,fn ,args)) > `(nconc (list :form `(,,fn ,@,args)) > (list :value ,value)))))) > (defun my-test () > (my-should (= 1 2))) > Then: > Navigate to the definition of my-wrap-form and evaluate it with C-M-x > Navigate to the definition of my-should and evaluate it with C-u C-M-x > Navigate to the definition of my-test and evaluate it with C-M-x > g > M-: (my-test) RET > Result: The debugger appears with an error (wrong-type-argument consp nil) > in edebug-before. It now seems clear the problem is in the def-edebug-spec for backquote-form. It needs to be amended such that the nested ` doesn't simply call backquote-form recursively. Here is my first approximation to a fix. It seems to work for your test case, though I haven't tried it out extensively on anything else. Since my understanding of edebug-specs is incomplete, I'd be grateful if you (or anybody else) could check it out and criticise it. diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index c898da3d39..46fc3c39b5 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -2165,6 +2165,7 @@ \` ;; but only at the top level inside unquotes. (def-edebug-spec backquote-form (&or + ("`" nested-backquote-form) ([&or "," ",@"] &or ("quote" backquote-form) form) ;; The simple version: ;; (backquote-form &rest backquote-form) @@ -2180,6 +2181,14 @@ backquote-form (vector &rest backquote-form) sexp)) +(def-edebug-spec nested-backquote-form + (&or + ([&or "," ",@"] backquote-form) + (nested-backquote-form [&rest [¬ "," ",@"] nested-backquote-form] + . [&or nil nested-backquote-form]) + (vector &rest nested-backquote-form) + sexp)) + ;; Special version of backquote that instruments backquoted forms ;; destined to be evaluated, usually as the result of a ;; macroexpansion. Backquoted code can only have unquotes (, and ,@) > The sample code above is a much simplified version of the > implementation of ert.el's 'should' macro, which Edebug does not > instrument correctly. > While this nested backquote construction is a valid use of backquote, > and Edebug should be fixed to handle it correctly, I think that this > is a case where backquote makes readability worse instead of better > and the code in ert.el would be more readable if `(,,fn ,@,args) was > replaced by a non-backquoted way of doing the same thing, such as > (cons ,fn ,args). > In GNU Emacs 26.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.21) > of 2018-04-03 built on localhost > Windowing system distributor 'The X.Org Foundation', version 11.0.11905000 [ .... ] -- Alan Mackenzie (Nuremberg, Germany). From unknown Sun Jun 22 17:15:31 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Gemini Lasswell Subject: bug#31090: closed (Re: bug#31090: 26.0.91; Edebug incorrectly instruments unquotes in nested backquotes) Message-ID: References: <20190924171158.GA18681@ACM> <87fu4662fm.fsf@runbox.com> X-Gnu-PR-Message: they-closed 31090 X-Gnu-PR-Package: emacs Reply-To: 31090@debbugs.gnu.org Date: Tue, 24 Sep 2019 17:13:01 +0000 Content-Type: multipart/mixed; boundary="----------=_1569345181-5528-1" This is a multi-part message in MIME format... ------------=_1569345181-5528-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #31090: 26.0.91; Edebug incorrectly instruments unquotes in nested backquot= es which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 31090@debbugs.gnu.org. --=20 31090: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D31090 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1569345181-5528-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 31090-done) by debbugs.gnu.org; 24 Sep 2019 17:12:03 +0000 Received: from localhost ([127.0.0.1]:40050 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iCoM6-0001Pt-PS for submit@debbugs.gnu.org; Tue, 24 Sep 2019 13:12:03 -0400 Received: from colin.muc.de ([193.149.48.1]:62021 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1iCoM5-0001PU-BJ for 31090-done@debbugs.gnu.org; Tue, 24 Sep 2019 13:12:01 -0400 Received: (qmail 26739 invoked by uid 3782); 24 Sep 2019 17:11:59 -0000 Received: from acm.muc.de (p4FE15C28.dip0.t-ipconnect.de [79.225.92.40]) by colin.muc.de (tmda-ofmipd) with ESMTP; Tue, 24 Sep 2019 19:11:58 +0200 Received: (qmail 18695 invoked by uid 1000); 24 Sep 2019 17:11:58 -0000 Date: Tue, 24 Sep 2019 17:11:58 +0000 To: Gemini Lasswell Subject: Re: bug#31090: 26.0.91; Edebug incorrectly instruments unquotes in nested backquotes Message-ID: <20190924171158.GA18681@ACM> References: <87fu4662fm.fsf@runbox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87fu4662fm.fsf@runbox.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 31090-done Cc: 31090-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Bug fixed in the master branch. Closing the bug. -- Alan Mackenzie (Nuremberg, Germany). ------------=_1569345181-5528-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 7 Apr 2018 23:45:47 +0000 Received: from localhost ([127.0.0.1]:41628 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f4xWk-0005cI-Tz for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:47 -0400 Received: from eggs.gnu.org ([208.118.235.92]:56858) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1f4xWj-0005c5-8V for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f4xWc-0002gg-Gl for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:39 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:33026) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1f4xWc-0002gO-Cn for submit@debbugs.gnu.org; Sat, 07 Apr 2018 19:45:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47799) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1f4xWa-0004FX-Iy for bug-gnu-emacs@gnu.org; Sat, 07 Apr 2018 19:45:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1f4xWX-0002f3-EC for bug-gnu-emacs@gnu.org; Sat, 07 Apr 2018 19:45:36 -0400 Received: from aibo.runbox.com ([91.220.196.211]:44556) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1f4xWW-0002e7-VX for bug-gnu-emacs@gnu.org; Sat, 07 Apr 2018 19:45:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=runbox.com; s=rbselector1; h=Content-Type:MIME-Version:Date:Message-ID:Subject:To:From; bh=G5Sp0qvWXh42yCTGcECZgua/sxLCkeTOe+C52vM15AM=; b=Xyl4TMg9no7EoZvFleuiFBAzj Odu3x0fTBdGZX7wtZbbwcpwFlDWc9uFNJwsWe7iSbfG/h5ewxGUdrZpHDF74VwqwtaAJVECluh78X vxV0GwJN3nyY8nC/8Oq9W7smnqbsVkKtNhD7ihCTESs8M/DwDORL+naiMKUpOohouuYIkegBeptRI 0lYfrxuETU2can84CAW0R8em0UHlNfNQLgUWBDzCOmabIQCeJRMwDvPgPsRwv2skpkXBY6XR6A2hQ 1+ZOrD7OPvbuKdEQphkok5APUIRR8WsbgQEw+D7NcubdoHqDSGfoZ35hOk6wuXvkAkvdx0h3X3Xuh ylALBCNSw==; Received: from [10.9.9.210] (helo=mailfront10.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1f4xWU-0003Oc-4r for bug-gnu-emacs@gnu.org; Sun, 08 Apr 2018 01:45:30 +0200 Received: from c-24-22-244-161.hsd1.wa.comcast.net ([24.22.244.161] helo=chinook) by mailfront10.runbox.com with esmtpsa (uid:179284 ) (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) id 1f4xWJ-0007J6-Ok for bug-gnu-emacs@gnu.org; Sun, 08 Apr 2018 01:45:20 +0200 From: Gemini Lasswell To: bug-gnu-emacs@gnu.org Subject: 26.0.91; Edebug incorrectly instruments unquotes in nested backquotes Message-ID: <87fu4662fm.fsf@runbox.com> Date: Sat, 07 Apr 2018 16:44:59 -0700 MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.1 (-----) Edebug incorrectly instruments unquotes inside of nested backquotes, causing errors if the incorrectly instrumented forms are part of a macro expansion that then gets executed in another context. To reproduce, enter this code into *scratch*: (defun my-wrap-form (form description) `(unless ,form (message "failed %s" ,description))) (defmacro my-should (form) (declare (debug t)) (let ((fn (gensym "fn-")) (args (gensym "args-")) (value (gensym "value-"))) `(let ((,fn (function ,(car form))) (,args (list ,@(cdr form))) ,value) ,(my-wrap-form `(setq ,value (apply ,fn ,args)) `(nconc (list :form `(,,fn ,@,args)) (list :value ,value)))))) (defun my-test () (my-should (= 1 2))) Then: Navigate to the definition of my-wrap-form and evaluate it with C-M-x Navigate to the definition of my-should and evaluate it with C-u C-M-x Navigate to the definition of my-test and evaluate it with C-M-x g M-: (my-test) RET Result: The debugger appears with an error (wrong-type-argument consp nil) in edebug-before. The sample code above is a much simplified version of the implementation of ert.el's 'should' macro, which Edebug does not instrument correctly. While this nested backquote construction is a valid use of backquote, and Edebug should be fixed to handle it correctly, I think that this is a case where backquote makes readability worse instead of better and the code in ert.el would be more readable if `(,,fn ,@,args) was replaced by a non-backquoted way of doing the same thing, such as (cons ,fn ,args). In GNU Emacs 26.0.91 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2018-04-03 built on localhost Windowing system distributor 'The X.Org Foundation', version 11.0.11905000 Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. my-wrap-form Quit Edebug: my-should Mark set Go... my-test Entering debugger... Back to top level Configured using: 'configure --prefix=/nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0 --with-modules --with-x-toolkit=gtk3 --with-xft' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND DBUS GSETTINGS NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES THREADS Important settings: value of $EMACSLOADPATH: /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy-refactor hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy-refactor /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy-pkg hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy-pkg /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.16.0/elpy-autoloads hides /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/elpy-1.9.0/elpy-autoloads /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/soap-client-3.1.3/soap-inspect hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/net/soap-inspect /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/soap-client-3.1.3/soap-client hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/net/soap-client /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/seq-2.20/seq hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/emacs-lisp/seq /nix/store/0gdqa4xzckgz3w0h4cyzsv8al82a601k-emacs-packages-deps/share/emacs/site-lisp/elpa/let-alist-1.0.5/let-alist hides /nix/store/4bablkw2fkvnglq8ha4gj1vj29hiavff-emacs-26.0/share/emacs/26.0.91/lisp/emacs-lisp/let-alist Features: (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs format-spec rfc822 mml mml-sec password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-mode cl-print debug edebug easymenu misearch multi-isearch map seq seq-25 byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib elec-pair time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote dbusbind inotify dynamic-setting system-font-setting font-render-setting move-toolbar gtk x-toolkit x multi-tty make-network-process emacs) Memory information: ((conses 16 101864 7133) (symbols 48 21035 1) (miscs 40 52 165) (strings 32 30023 1659) (string-bytes 1 816911) (vectors 16 15702) (vector-slots 8 511581 6094) (floats 8 51 164) (intervals 56 270 0) (buffers 992 13)) ------------=_1569345181-5528-1--