From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Jun 2018 02:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31793@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15287707696443 (code B ref -1); Tue, 12 Jun 2018 02:33:02 +0000 Received: (at submit) by debbugs.gnu.org; 12 Jun 2018 02:32:49 +0000 Received: from localhost ([127.0.0.1]:43869 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSZ72-0001fr-Rj for submit@debbugs.gnu.org; Mon, 11 Jun 2018 22:32:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:58137) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSZ6z-0001fZ-5n for submit@debbugs.gnu.org; Mon, 11 Jun 2018 22:32:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSZ6s-0004UP-UR for submit@debbugs.gnu.org; Mon, 11 Jun 2018 22:32: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=4.0 required=5.0 tests=BAYES_50, CHARSET_FARAWAY_HEADER,FREEMAIL_FROM,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:59859) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fSZ6s-0004U7-O6 for submit@debbugs.gnu.org; Mon, 11 Jun 2018 22:32:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49086) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSZ6r-000369-EM for bug-gnu-emacs@gnu.org; Mon, 11 Jun 2018 22:32:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSZ6m-0004Nn-EX for bug-gnu-emacs@gnu.org; Mon, 11 Jun 2018 22:32:37 -0400 Received: from mail-pf0-x22e.google.com ([2607:f8b0:400e:c00::22e]:38757) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fSZ6m-0004NP-8L for bug-gnu-emacs@gnu.org; Mon, 11 Jun 2018 22:32:32 -0400 Received: by mail-pf0-x22e.google.com with SMTP id b74-v6so11266665pfl.5 for ; Mon, 11 Jun 2018 19:32:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=sqUOIwAHucYy9/3pDM+q4t3/w097KARYaHr88ga768c=; b=KmQP+fWzb7MnRYSMDuvYN+2O9H7i3b5xEF0n8ndW685teIh/e8roeClAJQ+woJ8c13 n6Sqkd1nYHcYTaLNNMVmZPtAcRSyQ5NxbW22kxvVr6i6wbU0UsJ71NLTOkDpxqHw8Iit MyYW0XnP0IPvaa1yxtlvypprwtPOE/aF54OxTgV1EEbThckBfdpmmiCsGM62gj2fn65y BM6UY7X6O5t1j1vV5phnVTusDBDYmLRmaSCQ6Fq7MiPLezs6qm1KF5d8HSsJujxZXlIr HV8VZDOisD7+pSkDwzuv8bfX8ed5O3u4Vf5lquS0Rt9IXLIl8sb2IJbU4eDyXiELKHaQ NCPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=sqUOIwAHucYy9/3pDM+q4t3/w097KARYaHr88ga768c=; b=PDwKRdWNrqGQBx36bj80ixsu9lf8MJOx2iJyAX1OkIi84iuNDKc8jemb0vu5CJ7eB0 4MPWxxVJIf16ASnqR1QHiqcUAL6gg7BGWyuqQCEf360VGYCAdXuVoUVUc8FQ3HJVVN02 VeV0/p4+Iyt2zijedt2w6sRmJvxh2vGEyhR0lQojfSJwIC4aGvB39o3W0z25F4jNKExe CXm9yf7nHinl+tB1EtAUBJAQ8aYVIzr5lM9MKnuCswaIVaDoKy+sP6XyoSW1xygLQqL/ /54/BrSiu+bOJE1rl+6m+v9mjOa7DmML42H/KVSlFYSE6JRA7pF5R0bXwUyHUuGzMEFR pq2w== X-Gm-Message-State: APt69E3o7ED0Oh8vP9cNbOha1e/eqX2KL9Wd/zFd7Li78mGRgXkltFoX tPnHy2gPt0wMmNeBudljVh25/w== X-Google-Smtp-Source: ADUXVKJo8i9fBMeUc8f+xd+hDdaGQAvMm8/Syp07h30BUH/EpQ1o4GAzU/kQ6nsmpebyXQGkYWl28w== X-Received: by 2002:a62:3e9a:: with SMTP id y26-v6mr1761954pfj.98.1528770751002; Mon, 11 Jun 2018 19:32:31 -0700 (PDT) Received: from Zeuss-MacBook-Air.local ([119.94.238.191]) by smtp.gmail.com with ESMTPSA id j11-v6sm108713259pff.64.2018.06.11.19.32.26 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 11 Jun 2018 19:32:30 -0700 (PDT) From: Leo Liu Date: Tue, 12 Jun 2018 10:32:16 +0800 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. 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.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: -5.0 (-----) --=-=-= Content-Type: text/plain I was reading news in GNUS and suddenly emacs started echoing in the minibuffer: Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Variable binding depth exceeds max-specpdl-size") After that I could not M-x or M-: or did much to investigate, only able to copy the last part of *Messages* to a file (attached). Not sure if this is useful. But this bug might be interesting. It is new. A max-specpdl-size automatically popped up while I was idly reading in GNUS. --=-=-= Content-Type: text/plain; charset=gb2312 Content-Disposition: attachment; filename=k.txt Content-Transfer-Encoding: quoted-printable Content-Description: bug.txt Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") Variable binding depth exceeds max-specpdl-size Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") Variable binding depth exceeds max-specpdl-size Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") Variable binding depth exceeds max-specpdl-size Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") Quit [5 times] Saving /Users/GNUS/.newsrc.eld... Saving file /Users/GNUS/.newsrc.eld... Wrote /Users/GNUS/.newsrc.eld Saving /Users/GNUS/.newsrc.eld...done Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") completing-read-default: Lisp nesting exceeds =A1=AEmax-lisp-eval-depth=A1= =AF Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") byte-code: Lisp nesting exceeds =A1=AEmax-lisp-eval-depth=A1=AF Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") Entering debugger... Error in pre-command-hook (delete-selection-pre-hook): (error "Lisp nesting= exceeds =A1=AEmax-lisp-eval-depth=A1=AF") Quit Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") completing-read-default: Lisp nesting exceeds =A1=AEmax-lisp-eval-depth=A1= =AF Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") let: Lisp nesting exceeds =A1=AEmax-lisp-eval-depth=A1=AF Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") next-line: End of buffer let: Lisp nesting exceeds =A1=AEmax-lisp-eval-depth=A1=AF Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") next-line: End of buffer [18 times] completing-read-default: Lisp nesting exceeds =A1=AEmax-lisp-eval-depth=A1= =AF Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") next-line: End of buffer [5 times] python-args-to-list: Variable binding depth exceeds max-specpdl-size Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") next-line: End of buffer [7 times] C-c C-k is undefined ido-read-internal: Lisp nesting exceeds =A1=AEmax-lisp-eval-depth=A1=AF Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Varia= ble binding depth exceeds max-specpdl-size") --=-=-=-- From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Jun 2018 04:44:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31793@debbugs.gnu.org Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.152877860317737 (code B ref 31793); Tue, 12 Jun 2018 04:44:01 +0000 Received: (at 31793) by debbugs.gnu.org; 12 Jun 2018 04:43:23 +0000 Received: from localhost ([127.0.0.1]:43911 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSb9P-0004c1-M4 for submit@debbugs.gnu.org; Tue, 12 Jun 2018 00:43:23 -0400 Received: from mail-pf0-f169.google.com ([209.85.192.169]:40479) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSb9N-0004bp-Ti for 31793@debbugs.gnu.org; Tue, 12 Jun 2018 00:43:22 -0400 Received: by mail-pf0-f169.google.com with SMTP id z24-v6so11412463pfe.7 for <31793@debbugs.gnu.org>; Mon, 11 Jun 2018 21:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version; bh=Iu1T++cTPRlZkUfKzP0x1dU/qEWda9IGaHp83mDFVgs=; b=DPHe3FEsibA4TsRXUD3VV828/GyaO67xAFuqymp1mW2kYm7JeAy2DBQ1ygFXkF6oLd mJSdpxo8CjNhhiO+JNvZ9cgf3sh0M1/jDRJmLX0rucNodPnUn/En+Ir72jh+WB3RRVf4 D5wI7FSe/liPuQ/qKbqGPYkOmyBfXRGJ6oXWWpsqxK8TgVU9js553uo8JBgBDgXJzQM2 nBBF6aSMuVC+I9LFiztE+hZpifDIJFFJeJlLrEJ/4inVmqLJQN4MvhFnsABylys6y7mM TfxRMvB5CuUdFVt1+NaWFcUKTGER7RHS5Z/yDbPT1jJnFGYYPuRiWBaF3bx/9MVN4IBm 65fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version; bh=Iu1T++cTPRlZkUfKzP0x1dU/qEWda9IGaHp83mDFVgs=; b=Q4ZtsJwKamognuNkgeW9WBxOpkY61nTJLv3M5F5mt6Bo1JbdzQokudavsnJ9r6qK2D jVHCWBd5JhXszOYgvF0pV6icfdb9kg+KbFW67EMG3Vu68/c49Jpg6D3MVAZEOfYxMCMS UqSgnktw+c+Oji40SD2Ds4KwH0QACgGJqUDWVRRpKXIUwAL43PH25wNolOWnE4ivXIAJ A67G+gojKaFuZNPClpjBti5SucuODX0QgKys2wV06cn3NxcfdUhhAZxWpuHDhxxrnz6Y FU1uuqCJbSwpk7D4QaLHyE/88W24700E4fZuWFjqeuJrdTwfAcLPRMfajWKIN5Z8MUg/ ++ag== X-Gm-Message-State: APt69E22gPd2PVr42hdy6Ai4mipr0Z1K0nsvr8wrMd7V2aqxKvltu57J qh5yy39vlaD0KMEKOL+aTCcnfA== X-Google-Smtp-Source: ADUXVKJTmAMwTxl157gzoUMfl7RhtEGfuMxtzjFmLu5d6poyLOlIxS3G37Bm79oxXeyQXme5egL99g== X-Received: by 2002:a65:5ac9:: with SMTP id d9-v6mr1814280pgt.238.1528778590583; Mon, 11 Jun 2018 21:43:10 -0700 (PDT) Received: from Zeuss-MacBook-Air.local ([119.94.238.191]) by smtp.gmail.com with ESMTPSA id a8-v6sm23480947pfe.72.2018.06.11.21.43.08 for <31793@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 11 Jun 2018 21:43:10 -0700 (PDT) From: Leo Liu References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAMFBMVEUaFRZLMy1dTENxVzKQ WiCrXQ97cmO/dSqSh3akjGTApXy5sJ7Sxo/Sz8Xo6eP9//xJbkruAAAAAWJLR0QAiAUdSAAAAAlw SFlzAAACxQAAAsUBidZ/7wAAAAd0SU1FB9cBBwMJOwHXewoAAAIBSURBVCjPVdNBiNNAFADQ6J4F x3hThHZBBC+WCFI8SS0iezRDcMHLHkLAg6gJH/fgYQ9xYlj2sLK4KHgqCgXFhda2Idmr4kkQPZQ0 nkQMbTypbMmMM2m7ZgYSmMef/5OZPwo7HFnx3uKPcmj0Dht1LWZJ+Hvr7dIFZXRUwl9VRTuuKDJ+ U44gjscknK4hhJaCkYRsWjmBtLqXlJAG2wipNe18OZJu1BBq1E8xafl4s6Jq2mUZGftU1y7CCxnp FVUDWJXx4C66BKBnErbuoaYNtoRTu6EZBsCbMn7W+5qOAR6WvxNOby9jHWC9hAf3n304CdiAByXs 3Nh9roLDkyb/sWV712vYwaLSAn8CPMHIAAzOPDKP2COAFm4Y4ODVWc6xG7KXsN7UeUJjjimx2uwd gCgNhr0i8C/xyCD5CiCKAMY3Bf5oDzx//w/fimscdcAZU2jv9sedx6+nYPPFIoWI/GK6QZ+EFGOR ErAjCnV3vPZ7XqlTIMbOLY7fLcvvmT7rXNWaGDexIY44N12TG2PDp7vqyl57dnCeuWwyNpnEURxk fTbDYeBnKRn4oejPYI4sH6WviBumEZ/GxX4X/x6EcURFZ7E071bjQGAxpcOAEOJuTiroDEea5Szv rVWLYfl7ZiQwSUToxrkux7OLixAWGz22+HIyWTRYcVfomOwvzusfjtVIGgLHf3MAAAAASUVORK5C YII= Date: Tue, 12 Jun 2018 12:43:06 +0800 In-Reply-To: (Leo Liu's message of "Tue, 12 Jun 2018 10:32:16 +0800") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (macOS 10.12.6) MIME-Version: 1.0 Content-Type: text/plain 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 (-) Get this same issue a second time also reading in GNUS. I'll have the faulty emacs session available for a short while. If someone knows how to get more info on what's wrong, I can try and get it. I am sending this on 25.3. From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Jun 2018 05:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31793@debbugs.gnu.org Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.152877958919092 (code B ref 31793); Tue, 12 Jun 2018 05:00:02 +0000 Received: (at 31793) by debbugs.gnu.org; 12 Jun 2018 04:59:49 +0000 Received: from localhost ([127.0.0.1]:43918 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbPH-0004xo-3c for submit@debbugs.gnu.org; Tue, 12 Jun 2018 00:59:49 -0400 Received: from mail-pg0-f51.google.com ([74.125.83.51]:42670) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbPE-0004xW-0b for 31793@debbugs.gnu.org; Tue, 12 Jun 2018 00:59:46 -0400 Received: by mail-pg0-f51.google.com with SMTP id c10-v6so5233837pgu.9 for <31793@debbugs.gnu.org>; Mon, 11 Jun 2018 21:59:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version; bh=0WTwCbsHtZMEp07SuVU7ejDg//iuQld9sK0q2V2Vh9Y=; b=g9oDNTs1wY6qyf28vxQGjQBSC13+v6R8ZIcTyqeNg6HlKbTzs8ca0itPQQTSCiy+9l p9hJtlYz5RxBXZxYxb9CoFreEb3YU7St7qzo4WqRhtzOcZQYuxjqTn/jnsQSzu/fO0bz NQM7E/sbrxx+59InW758PfkjYgNxyKcOYEWCyQ2j7YlIhjV8L5HXJBwRiE22Xll+0p5u 0Ax1kY3/zmYchPO/qz1eilnA79/TWSuO5adBrawBfz6qQ+MEKgmbcf+Fu5RYB4AWN6mT k+sjqjv/j0pN7oaE5A4sHy2vJQiNgLCdzalSawF7P5TEwx+5CSzRf09ER8hYU12qVXje lHMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version; bh=0WTwCbsHtZMEp07SuVU7ejDg//iuQld9sK0q2V2Vh9Y=; b=q9hrxzbGHoHeEcG1i4YFB9/NnZJFdofyrEfAFqaZc6PcDCaNTvmx+R4WHHzDtPfIec XYri1Lt68bGZoD+t00V1QxmIqamAA2R24er37WaDpuVSZgDZFnrQFEiOsowVUPeR0KV2 6lEYsyCzSUq2pbgc+N0NJtru1b3vfMyvBQ6kjFWuM+pZl7ecB8KOfjvYk3g1W6bwwIF7 4aa+kfwM5AmfvMWPJNCuUohVS4y06ob9jIUHyHzutiJRMLPclq8teKlfjs143RFKEOEo 7uOn/dVcvKY17W+LEFgD2hrshYqlqVCIOTwVhmUywEIiEjibgJTOTKUlxSxly2i5jT/1 hjIw== X-Gm-Message-State: APt69E076ISEr8JyICVo+CraPg8RK1xFqPEcBi77fj5iVaLiRoTBp/N4 L7y11eDjMVV7rJg/msNCdvTBYg== X-Google-Smtp-Source: ADUXVKJCg992wALS2NSIGQPpE7K6vIDvFeqh6zbe132f4F/tcMAJxYPs1iQextnAvWEBoBMXrmD9uw== X-Received: by 2002:a62:ecdb:: with SMTP id e88-v6mr2240476pfm.16.1528779577755; Mon, 11 Jun 2018 21:59:37 -0700 (PDT) Received: from Zeuss-MacBook-Air.local ([119.94.238.191]) by smtp.gmail.com with ESMTPSA id i88-v6sm27113010pfi.153.2018.06.11.21.59.34 for <31793@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 11 Jun 2018 21:59:36 -0700 (PDT) From: Leo Liu References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAElBMVEUAAAAAAP+LRRP0pGC+ vr7///+7mT1iAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cBBwMO DhglKe4AAAEsSURBVCjPbZNBboQwDEV/Cd4X9QJRThApmn0XYW+Jyf2v0m+HhqDBgiAe9rcTG7QH w/1Vn2Ar8gBb/ocywSN3qK9T3z4eFDB4eApocBpeBs1RSykoJd8gQcm8pGmHXFso3ajnmsqV0TnY DQkOfXUfN5NwaI7AWTVOyEhcu1aHmdWItHddUVUcUgUBCkitu8V6ditHVOVdqzl2EQ1ZVGTbdK0V 7cqn8vWzoU5Q/bF9Y/Y0cRU1xwkys5dJ+Dt6pBDWifcNQml8Gh2JVmPSoQzo7en0grswkxrUGYJ7 0hSxxAGr7ZMwYcHIzprpi7TENEE1xtiYxixRlCfPBsUUrwHD7uGIwATrbnODJcVrPpVn3hxiGloe m/S+z3CtuzUSMo83N4DPH+F0evwR3P4A2k+75838OKQAAAAASUVORK5CYII= Date: Tue, 12 Jun 2018 12:59:32 +0800 In-Reply-To: (Leo Liu's message of "Tue, 12 Jun 2018 12:43:06 +0800") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (macOS 10.12.6) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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 (-) --=-=-= Content-Type: text/plain On 2018-06-12 12:43 +0800, Leo Liu wrote: > Get this same issue a second time also reading in GNUS. I'll have the > faulty emacs session available for a short while. If someone knows how > to get more info on what's wrong, I can try and get it. The session crashed instead. I was trying to increase max-specpdl-size and max-lisp-eval-depth from emacsclient -e. The crash report from the OS is attached. --=-=-= Content-Type: text/plain Content-Disposition: attachment; filename=bug.crash Content-Description: bug.crash Process: Emacs [92244] Path: /usr/local/unix/emacs/26.1/Emacs.app/Contents/MacOS/Emacs Identifier: org.gnu.Emacs Version: 26.1 (1.1) Code Type: X86-64 (Native) Parent Process: ??? [1] Responsible: Emacs [92244] User ID: 502 Date/Time: 2018-06-12 12:52:01.442 +0800 OS Version: Mac OS X 10.12.6 (16G1408) Report Version: 12 Anonymous UUID: 9B6F88F9-9855-B34A-47F1-5A731DD297D2 Sleep/Wake UUID: 8AC4217E-50EC-41CF-8600-9641DA18EFB2 Time Awake Since Boot: 290000 seconds Time Since Wake: 5600 seconds System Integrity Protection: enabled Crashed Thread: 1 org.gnu.Emacs.lisp-main Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0xffffffffffffffff Exception Note: EXC_CORPSE_NOTIFY VM Regions Near 0xffffffffffffffff: --> shared memory 00007ffffff1a000-00007ffffff1b000 [ 4K] r-x/r-x SM=SHM Thread 0:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fffc567e386 semaphore_wait_trap + 10 1 libdispatch.dylib 0x00007fffc5539a77 _os_semaphore_wait + 16 2 libdispatch.dylib 0x00007fffc552a891 _dispatch_semaphore_wait_slow + 103 3 org.gnu.Emacs 0x0000000100424a34 mac_gui_loop + 36 4 org.gnu.Emacs 0x00000001004246f9 main + 1113 5 libdyld.dylib 0x00007fffc5557235 start + 1 Thread 1 Crashed:: org.gnu.Emacs.lisp-main 0 libsystem_kernel.dylib 0x00007fffc5685d42 __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fffc5773457 pthread_kill + 90 2 libsystem_c.dylib 0x00007fffc559c497 raise + 26 3 org.gnu.Emacs 0x0000000100171d86 terminate_due_to_signal + 262 4 org.gnu.Emacs 0x00000001001aa018 handle_fatal_signal + 24 5 org.gnu.Emacs 0x00000001001aa0b8 deliver_thread_signal + 152 6 org.gnu.Emacs 0x00000001001a7b0a deliver_fatal_thread_signal + 26 7 org.gnu.Emacs 0x00000001001aa159 handle_sigsegv + 137 8 libsystem_platform.dylib 0x00007fffc5766b3a _sigtramp + 26 9 ??? 000000000000000000 0 + 0 10 org.gnu.Emacs 0x00000001003333fc setup_process_coding_systems + 284 11 org.gnu.Emacs 0x00000001003490d7 server_accept_connection + 2615 12 org.gnu.Emacs 0x0000000100346ed6 wait_reading_process_output + 6502 13 org.gnu.Emacs 0x000000010018d45f kbd_buffer_get_event + 607 14 org.gnu.Emacs 0x000000010018cedf read_event_from_main_queue + 239 15 org.gnu.Emacs 0x000000010017fbd9 read_decoded_event_from_main_queue + 89 16 org.gnu.Emacs 0x000000010017d4cb read_char + 5883 17 org.gnu.Emacs 0x00000001002f1617 read_filtered_event + 375 18 org.gnu.Emacs 0x00000001002f195e Fread_event + 126 19 org.gnu.Emacs 0x000000010029a141 funcall_subr_1 + 561 20 org.gnu.Emacs 0x0000000100299eeb __funcall_subr_block_invoke + 43 21 org.gnu.Emacs 0x00000001003e1782 mac_autorelease_loop + 34 22 org.gnu.Emacs 0x000000010029981c funcall_subr + 140 23 org.gnu.Emacs 0x00000001002986bd Ffuncall + 445 24 org.gnu.Emacs 0x000000010032dd6b exec_byte_code + 21083 25 org.gnu.Emacs 0x0000000100299a55 funcall_lambda + 517 26 org.gnu.Emacs 0x0000000100298705 Ffuncall + 517 27 org.gnu.Emacs 0x000000010032dd6b exec_byte_code + 21083 28 org.gnu.Emacs 0x0000000100299e95 funcall_lambda + 1605 29 org.gnu.Emacs 0x0000000100298705 Ffuncall + 517 30 org.gnu.Emacs 0x000000010029917f call0 + 31 31 org.gnu.Emacs 0x0000000100156554 ring_bell + 100 32 org.gnu.Emacs 0x0000000100008ada bitch_at_user + 186 33 org.gnu.Emacs 0x0000000100176592 Fcommand_error_default_function + 338 34 org.gnu.Emacs 0x000000010029a141 funcall_subr_1 + 561 35 org.gnu.Emacs 0x0000000100299eeb __funcall_subr_block_invoke + 43 36 org.gnu.Emacs 0x00000001003e1782 mac_autorelease_loop + 34 37 org.gnu.Emacs 0x000000010029981c funcall_subr + 140 38 org.gnu.Emacs 0x00000001002986bd Ffuncall + 445 39 org.gnu.Emacs 0x00000001002992dd call3 + 93 40 org.gnu.Emacs 0x0000000100176418 cmd_error_internal + 248 41 org.gnu.Emacs 0x000000010018c9fa cmd_error + 426 42 org.gnu.Emacs 0x0000000100289853 internal_condition_case + 115 43 org.gnu.Emacs 0x000000010018c74c command_loop_2 + 44 44 org.gnu.Emacs 0x0000000100289018 internal_catch + 72 45 org.gnu.Emacs 0x0000000100175df8 command_loop + 280 46 org.gnu.Emacs 0x0000000100175c60 recursive_edit_1 + 192 47 org.gnu.Emacs 0x0000000100175f98 Frecursive_edit + 312 48 org.gnu.Emacs 0x0000000100173b7d emacs_main + 6829 49 org.gnu.Emacs 0x00000001004249fa mac_start_lisp_main + 90 50 libsystem_pthread.dylib 0x00007fffc577093b _pthread_body + 180 51 libsystem_pthread.dylib 0x00007fffc5770887 _pthread_start + 286 52 libsystem_pthread.dylib 0x00007fffc577008d thread_start + 13 Thread 2:: com.apple.NSEventThread 0 libsystem_kernel.dylib 0x00007fffc567e34a mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fffc567d797 mach_msg + 55 2 com.apple.CoreFoundation 0x00007fffafdca434 __CFRunLoopServiceMachPort + 212 3 com.apple.CoreFoundation 0x00007fffafdc98c1 __CFRunLoopRun + 1361 4 com.apple.CoreFoundation 0x00007fffafdc9114 CFRunLoopRunSpecific + 420 5 com.apple.AppKit 0x00007fffada0df02 _NSEventThread + 205 6 libsystem_pthread.dylib 0x00007fffc577093b _pthread_body + 180 7 libsystem_pthread.dylib 0x00007fffc5770887 _pthread_start + 286 8 libsystem_pthread.dylib 0x00007fffc577008d thread_start + 13 Thread 3:: CVDisplayLink 0 libsystem_kernel.dylib 0x00007fffc5685bf2 __psynch_cvwait + 10 1 libsystem_pthread.dylib 0x00007fffc57717fa _pthread_cond_wait + 712 2 com.apple.CoreVideo 0x00007fffb1485810 CVDisplayLink::runIOThread() + 694 3 libsystem_pthread.dylib 0x00007fffc577093b _pthread_body + 180 4 libsystem_pthread.dylib 0x00007fffc5770887 _pthread_start + 286 5 libsystem_pthread.dylib 0x00007fffc577008d thread_start + 13 Thread 4: 0 libsystem_kernel.dylib 0x00007fffc5685bf2 __psynch_cvwait + 10 1 libsystem_pthread.dylib 0x00007fffc57717fa _pthread_cond_wait + 712 2 libc++.1.dylib 0x00007fffc40ef4cd std::__1::condition_variable::wait(std::__1::unique_lock&) + 47 3 com.apple.JavaScriptCore 0x00007fffb2dd743c void std::__1::condition_variable_any::wait >(std::__1::unique_lock&) + 108 4 com.apple.JavaScriptCore 0x00007fffb2dd73bb bmalloc::AsyncTask::threadRunLoop() + 155 5 com.apple.JavaScriptCore 0x00007fffb2dd728d bmalloc::AsyncTask::threadEntryPoint(bmalloc::AsyncTask*) + 29 6 com.apple.JavaScriptCore 0x00007fffb2dd753d void* std::__1::__thread_proxy*), bmalloc::AsyncTask*> >(void*) + 93 7 libsystem_pthread.dylib 0x00007fffc577093b _pthread_body + 180 8 libsystem_pthread.dylib 0x00007fffc5770887 _pthread_start + 286 9 libsystem_pthread.dylib 0x00007fffc577008d thread_start + 13 Thread 5: 0 libsystem_kernel.dylib 0x00007fffc567e34a mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fffc567d797 mach_msg + 55 2 com.apple.CoreFoundation 0x00007fffafdca434 __CFRunLoopServiceMachPort + 212 3 com.apple.CoreFoundation 0x00007fffafdc98c1 __CFRunLoopRun + 1361 4 com.apple.CoreFoundation 0x00007fffafdc9114 CFRunLoopRunSpecific + 420 5 com.apple.Foundation 0x00007fffb17dc252 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 277 6 com.apple.Foundation 0x00007fffb17dc12a -[NSRunLoop(NSRunLoop) run] + 76 7 com.apple.JavaScriptAppleEvents 0x000000010ec8ef40 __JSAEContextCreate_block_invoke_2 + 162 8 com.apple.Foundation 0x00007fffb17ec8ad __NSThread__start__ + 1243 9 libsystem_pthread.dylib 0x00007fffc577093b _pthread_body + 180 10 libsystem_pthread.dylib 0x00007fffc5770887 _pthread_start + 286 11 libsystem_pthread.dylib 0x00007fffc577008d thread_start + 13 Thread 6:: Dispatch queue: NSCGSDisableUpdates 0 libsystem_kernel.dylib 0x00007fffc567e34a mach_msg_trap + 10 1 libsystem_kernel.dylib 0x00007fffc567d797 mach_msg + 55 2 com.apple.SkyLight 0x00007fffc1a60c60 _CGSReenableUpdateForConnectionSync + 99 3 com.apple.SkyLight 0x00007fffc19d1db0 CGSUpdateManager::enable_update(unsigned long long) + 532 4 libdispatch.dylib 0x00007fffc552a524 _dispatch_call_block_and_release + 12 5 libdispatch.dylib 0x00007fffc55218fc _dispatch_client_callout + 8 6 libdispatch.dylib 0x00007fffc55379a0 _dispatch_queue_serial_drain + 896 7 libdispatch.dylib 0x00007fffc552a306 _dispatch_queue_invoke + 1046 8 libdispatch.dylib 0x00007fffc5530020 _dispatch_queue_override_invoke + 369 9 libdispatch.dylib 0x00007fffc55236b5 _dispatch_root_queue_drain + 476 10 libdispatch.dylib 0x00007fffc552348c _dispatch_worker_thread3 + 99 11 libsystem_pthread.dylib 0x00007fffc57705a2 _pthread_wqthread + 1299 12 libsystem_pthread.dylib 0x00007fffc577007d start_wqthread + 13 Thread 7: 0 libsystem_pthread.dylib 0x00007fffc5770070 start_wqthread + 0 1 ??? 0x0000700000000000 0 + 123145302310912 Thread 8: 0 libsystem_pthread.dylib 0x00007fffc5770070 start_wqthread + 0 1 ??? 0x0000700000000000 0 + 123145302310912 Thread 1 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x000000000000000b rcx: 0x00000001008347c8 rdx: 0x0000000000000000 rdi: 0x0000000000001f07 rsi: 0x000000000000000b rbp: 0x00000001008347f0 rsp: 0x00000001008347c8 r8: 0x0000000000000003 r9: 0x000000010d6a6000 r10: 0x0000000000000000 r11: 0x0000000000000287 r12: 0x00000001004249a0 r13: 0x0000000000001f07 r14: 0x000070000d1f0000 r15: 0x00007fff5fbffa50 rip: 0x00007fffc5685d42 rfl: 0x0000000000000286 cr2: 0x0000000132eb3000 Logical CPU: 0 Error Code: 0x02000170 Trap Number: 133 Binary Images: 0x100000000 - 0x100493fff +org.gnu.Emacs (26.1 - 1.1) <3DE8453F-9645-3FF5-8A9E-7FF74B76558B> /usr/local/unix/emacs/26.1/Emacs.app/Contents/MacOS/Emacs 0x1009b2000 - 0x100ab4fff +libgnutls.30.dylib (0) /usr/local/opt/gnutls/lib/libgnutls.30.dylib 0x100af0000 - 0x100b97ffb +libp11-kit.0.dylib (0) <7D09402A-8D92-3813-B71A-10930D1ECF19> /usr/local/opt/p11-kit/lib/libp11-kit.0.dylib 0x100be1000 - 0x100d45ffb +libunistring.2.dylib (0) <40BA8D54-BA5A-30C8-84E6-9DFBDE304890> /usr/local/opt/libunistring/lib/libunistring.2.dylib 0x100d58000 - 0x100d63fff +libtasn1.6.dylib (0) /usr/local/opt/libtasn1/lib/libtasn1.6.dylib 0x100d67000 - 0x100d8dffb +libnettle.6.dylib (0) <6D7332C9-5095-3D7B-8C2A-18B6D82BF51F> /usr/local/opt/nettle/lib/libnettle.6.dylib 0x100d97000 - 0x100dbffff +libhogweed.4.dylib (0) <52927535-FEFC-320F-90A4-36B574553E8B> /usr/local/opt/nettle/lib/libhogweed.4.dylib 0x100dc8000 - 0x100e24fcf +libgmp.10.dylib (0) <1F35B13B-6E77-3E0F-8F93-237C2F60E95B> /usr/local/opt/gmp/lib/libgmp.10.dylib 0x100e30000 - 0x100e34ff7 +libffi.6.dylib (0) <986DC089-727D-3563-935B-652AB8C97396> /usr/local/opt/libffi/lib/libffi.6.dylib 0x106e8d000 - 0x106eb7fff GLRendererFloat (14.0.16) <32A016EE-63CF-3D07-9BAB-C4EB3E8E479D> /System/Library/Frameworks/OpenGL.framework/Resources/GLRendererFloat.bundle/GLRendererFloat 0x108fdb000 - 0x108fdbfff com.apple.applescript.component (2.5 - 381.2) <58F1DCFD-C4DD-3DE6-9510-E1772C2D7058> /System/Library/Components/AppleScript.component/Contents/MacOS/AppleScript 0x109025000 - 0x109026fff com.apple.javascript.component (1.1 - 1) <3AEC68C4-CCC7-385A-8530-0601F73AD59D> /System/Library/Components/JavaScript.component/Contents/MacOS/JavaScript 0x10922d000 - 0x109231fff libFontRegistryUI.dylib (196.7) /System/Library/Frameworks/ApplicationServices.framework/Frameworks/ATS.framework/Resources/libFontRegistryUI.dylib 0x10923d000 - 0x1093e3fff GLEngine (14.0.16) /System/Library/Frameworks/OpenGL.framework/Resources/GLEngine.bundle/GLEngine 0x109422000 - 0x10949aff7 com.apple.driver.AppleIntelHD5000GraphicsMTLDriver (10.25.19 - 10.2.5) <86638E6C-3BBE-30FB-AEBD-219C772A2E4B> /System/Library/Extensions/AppleIntelHD5000GraphicsMTLDriver.bundle/Contents/MacOS/AppleIntelHD5000GraphicsMTLDriver 0x10a547000 - 0x10a584dc7 dyld (433.5) <322C06B7-8878-311D-888C-C8FD2CA96FF3> /usr/lib/dyld 0x10a5d2000 - 0x10ab2dff7 com.apple.driver.AppleIntelHD5000GraphicsGLDriver (10.25.19 - 10.2.5) <0935CA9C-D2F3-3022-A242-B8C7D0E050BD> /System/Library/Extensions/AppleIntelHD5000GraphicsGLDriver.bundle/Contents/MacOS/AppleIntelHD5000GraphicsGLDriver 0x10bfb9000 - 0x10bfc5fff com.apple.JavaScriptOSA (1.1 - 1) <9C907624-6AA3-3E7F-B2DA-29156FB2D60D> /System/Library/PrivateFrameworks/JavaScriptOSA.framework/Versions/A/JavaScriptOSA 0x10ec57000 - 0x10ecb5ff3 com.apple.JavaScriptAppleEvents (1.0 - 1) <710ED5B6-C09D-35F8-B751-C3B5831BFC1F> /System/Library/PrivateFrameworks/JavaScriptAppleEvents.framework/Versions/A/JavaScriptAppleEvents 0x10ee00000 - 0x10ee89fff com.apple.applescript (2.5 - 381.2) /System/Library/PrivateFrameworks/AppleScript.framework/Versions/A/AppleScript 0x7fffaa9f1000 - 0x7fffaad36ff7 com.apple.RawCamera.bundle (7.04 - 914) <86A67D11-9791-3CE6-9FF5-3387C0AB925B> /System/Library/CoreServices/RawCamera.bundle/Contents/MacOS/RawCamera 0x7fffac56d000 - 0x7fffac72efff com.apple.avfoundation (2.0 - 1187.36) <2F390EAD-07BB-3788-9E73-13104C2E04CD> /System/Library/Frameworks/AVFoundation.framework/Versions/A/AVFoundation 0x7fffac72f000 - 0x7fffac7d1ff7 com.apple.audio.AVFAudio (1.0 - ???) <7997D588-B542-3EBB-B822-D719C1114BB4> /System/Library/Frameworks/AVFoundation.framework/Versions/A/Frameworks/AVFAudio.framework/Versions/A/AVFAudio 0x7fffac89c000 - 0x7fffac89cfff com.apple.Accelerate (1.11 - Accelerate 1.11) <916E360F-323C-3AE1-AB3D-D1F3B284AEE9> /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate 0x7fffac89d000 - 0x7fffac8b4ffb libCGInterfaces.dylib (331.5) <17109679-A284-3C72-AA60-DBA815D3062B> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/Libraries/libCGInterfaces.dylib 0x7fffac8b5000 - 0x7fffacdcefeb com.apple.vImage (8.1 - ???) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vImage.framework/Versions/A/vImage 0x7fffacdcf000 - 0x7fffacf40ff3 libBLAS.dylib (1185.50.4) <4087FFE0-627E-3623-96B4-F0A9A1991E09> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib 0x7fffacf41000 - 0x7fffacf55ffb libBNNS.dylib (15) <254698C7-7D36-3FFF-864E-ADEEEE543076> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBNNS.dylib 0x7fffacf56000 - 0x7fffad34cfef libLAPACK.dylib (1185.50.4) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLAPACK.dylib 0x7fffad34d000 - 0x7fffad363fff libLinearAlgebra.dylib (1185.50.4) <345CAACF-7263-36EF-B69B-793EA8B390AF> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libLinearAlgebra.dylib 0x7fffad364000 - 0x7fffad36afff libQuadrature.dylib (3) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libQuadrature.dylib 0x7fffad36b000 - 0x7fffad37fff7 libSparseBLAS.dylib (1185.50.4) <67BA432E-FB59-3C78-A8BE-ED4274CBC359> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libSparseBLAS.dylib 0x7fffad380000 - 0x7fffad507fe7 libvDSP.dylib (600.60.1) <4155F45B-41CD-3782-AE8F-7AE740FD83C3> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvDSP.dylib 0x7fffad508000 - 0x7fffad5bafff libvMisc.dylib (600.60.1) /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libvMisc.dylib 0x7fffad5bb000 - 0x7fffad5bbfff com.apple.Accelerate.vecLib (3.11 - vecLib 3.11) <7C5733E7-0568-3E7D-AF61-160F19FED544> /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/vecLib 0x7fffad87a000 - 0x7fffae653ff3 com.apple.AppKit (6.9 - 1504.83.101) <1757DE0D-1586-355E-B515-1830553BBE24> /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit 0x7fffae654000 - 0x7fffae664fff com.apple.AppleScriptObjC (1.4 - 32) /System/Library/Frameworks/AppleScriptObjC.framework/Versions/A/AppleScriptObjC 0x7fffae665000 - 0x7fffae665fff com.apple.ApplicationServices (48 - 48) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices 0x7fffae666000 - 0x7fffae6d4ff7 com.apple.ApplicationServices.ATS (377 - 422.3) <6F127D0C-AF9F-3CB4-B85A-42BF7A0E3045> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/ATS 0x7fffae76e000 - 0x7fffae89dfff libFontParser.dylib (194.14) <35E2D4A9-8B28-33FB-8C60-8F57D249F6B0> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontParser.dylib 0x7fffae89e000 - 0x7fffae8e8ff7 libFontRegistry.dylib (196.7) <79411CB6-A093-333A-B669-CEC00B4D5C8E> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libFontRegistry.dylib 0x7fffae945000 - 0x7fffae978fff libTrueTypeScaler.dylib (194.14) <33F2CEAE-7915-3739-AC1F-0F4CC4408F08> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ATS.framework/Versions/A/Resources/libTrueTypeScaler.dylib 0x7fffae9e5000 - 0x7fffaea8fff7 com.apple.ColorSync (4.12.0 - 502.2) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ColorSync.framework/Versions/A/ColorSync 0x7fffaea90000 - 0x7fffaeae1fff com.apple.HIServices (1.22 - 593) <045870A9-1D92-3FEF-8722-671E99A35E71> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/HIServices 0x7fffaeae2000 - 0x7fffaeaf1ff3 com.apple.LangAnalysis (1.7.0 - 1.7.0) <2CBE7F61-2056-3F96-99A1-0D527796AFA6> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis 0x7fffaeaf2000 - 0x7fffaeb3ffff com.apple.print.framework.PrintCore (12 - 491) <5027FD58-F0EE-33E4-8577-934CA06CD2AF> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/PrintCore 0x7fffaeb40000 - 0x7fffaeb7bfff com.apple.QD (3.12 - 313) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/QD.framework/Versions/A/QD 0x7fffaeb7c000 - 0x7fffaeb87fff com.apple.speech.synthesis.framework (6.6.2 - 6.6.2) <7853EFF4-62B9-394E-B7B8-41A645656820> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/SpeechSynthesis.framework/Versions/A/SpeechSynthesis 0x7fffaeb88000 - 0x7fffaed94ff7 com.apple.audio.toolbox.AudioToolbox (1.14 - 1.14) <1F4026C6-23C1-39E8-823D-72298FECF75C> /System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox 0x7fffaed95000 - 0x7fffaed95fff com.apple.audio.units.AudioUnit (1.14 - 1.14) <2CEE36AF-79E6-3B3E-B369-285E6C1886F7> /System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit 0x7fffaeefe000 - 0x7fffaf2dafff com.apple.CFNetwork (811.9 - 811.9) <1E384ECD-D841-356A-8188-61AA8B4A4F2E> /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork 0x7fffaf2f4000 - 0x7fffaf2f4fff com.apple.Carbon (154 - 157) <69F403C7-F0CB-34E6-89B0-235CF4978C17> /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon 0x7fffaf2f5000 - 0x7fffaf2f8fff com.apple.CommonPanels (1.2.6 - 98) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/CommonPanels.framework/Versions/A/CommonPanels 0x7fffaf2f9000 - 0x7fffaf602fff com.apple.HIToolbox (2.1.1 - 857.8) <5367366E-747E-32CF-8E76-93CD8E7424C7> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/HIToolbox 0x7fffaf603000 - 0x7fffaf606ff7 com.apple.help (1.3.5 - 49) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Help.framework/Versions/A/Help 0x7fffaf607000 - 0x7fffaf60cfff com.apple.ImageCapture (9.0 - 9.0) <341252B4-E082-361A-B756-6A330259C741> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/ImageCapture.framework/Versions/A/ImageCapture 0x7fffaf60d000 - 0x7fffaf6a4ff3 com.apple.ink.framework (10.9 - 219) <1BD40B45-FD33-3177-A935-565EE5FC79D7> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Ink.framework/Versions/A/Ink 0x7fffaf6a5000 - 0x7fffaf6bffff com.apple.openscripting (1.7 - 172.1) <78F3256B-AF4C-324A-A591-ECA4443A469F> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/OpenScripting.framework/Versions/A/OpenScripting 0x7fffaf6c0000 - 0x7fffaf6c1ff3 com.apple.print.framework.Print (12 - 267) /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/Print.framework/Versions/A/Print 0x7fffaf6c2000 - 0x7fffaf6c4ff7 com.apple.securityhi (9.0 - 55006) <3BD353DD-4FC7-3A44-99D0-9269C1D3F6A5> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SecurityHI.framework/Versions/A/SecurityHI 0x7fffaf6c5000 - 0x7fffaf6cbff7 com.apple.speech.recognition.framework (6.0.1 - 6.0.1) <082895DC-3AC7-3DEF-ADCA-5B018C19C9D3> /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/SpeechRecognition.framework/Versions/A/SpeechRecognition 0x7fffaf6cc000 - 0x7fffaf7abffb com.apple.cloudkit.CloudKit (651.14 - 651.14) <9F901E45-23E3-3F45-B66F-1BAB3AFC4462> /System/Library/Frameworks/CloudKit.framework/Versions/A/CloudKit 0x7fffaf7ac000 - 0x7fffaf7acfff com.apple.Cocoa (6.11 - 22) <85EDFBE1-75F0-369E-8CA8-C6A639B98FA6> /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa 0x7fffaf8f6000 - 0x7fffaf983fff com.apple.audio.CoreAudio (4.3.0 - 4.3.0) <78767F88-91D4-31CE-AAC6-1F9407F479BB> /System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio 0x7fffaf984000 - 0x7fffaf997fff com.apple.CoreBluetooth (1.0 - 1) /System/Library/Frameworks/CoreBluetooth.framework/Versions/A/CoreBluetooth 0x7fffaf998000 - 0x7fffafc93fff com.apple.CoreData (120 - 754.2) <4C9CAB2C-60D4-3694-A0A0-5B04B14BD14E> /System/Library/Frameworks/CoreData.framework/Versions/A/CoreData 0x7fffafc94000 - 0x7fffafd41ff7 com.apple.CoreDisplay (1.0 - 1) <53D1EAFE-23A4-398D-BF52-E4299E670DB6> /System/Library/Frameworks/CoreDisplay.framework/Versions/A/CoreDisplay 0x7fffafd42000 - 0x7fffb01dbff7 com.apple.CoreFoundation (6.9 - 1349.92) <6D0D0311-7C61-3313-BC55-22B7E876BEFA> /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation 0x7fffb01dc000 - 0x7fffb085efff com.apple.CoreGraphics (2.0 - 1070.22) /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics 0x7fffb085f000 - 0x7fffb0aa2ffb com.apple.CoreImage (12.4.0 - 451.4.9) /System/Library/Frameworks/CoreImage.framework/Versions/A/CoreImage 0x7fffb0aa3000 - 0x7fffb0b08ff7 com.apple.corelocation (2101.0.63) /System/Library/Frameworks/CoreLocation.framework/Versions/A/CoreLocation 0x7fffb0b09000 - 0x7fffb0bbafff com.apple.CoreMedia (1.0 - 1907.59.1.6) <570690D8-A956-3629-9E46-4F8BDDB8A82C> /System/Library/Frameworks/CoreMedia.framework/Versions/A/CoreMedia 0x7fffb0bbb000 - 0x7fffb0c06ff7 com.apple.CoreMediaIO (805.0 - 4932) /System/Library/Frameworks/CoreMediaIO.framework/Versions/A/CoreMediaIO 0x7fffb0c07000 - 0x7fffb0c07fff com.apple.CoreServices (775.20 - 775.20) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices 0x7fffb0c08000 - 0x7fffb0c59fff com.apple.AE (712.5 - 712.5) <61F2AE2C-E04E-3FDF-9E88-201325136C83> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/AE.framework/Versions/A/AE 0x7fffb0c5a000 - 0x7fffb0f35ff7 com.apple.CoreServices.CarbonCore (1159.6 - 1159.6) <08AC074C-965B-3EDF-8E45-0707C8DE9EAD> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/CarbonCore 0x7fffb0f36000 - 0x7fffb0f69fff com.apple.DictionaryServices (1.2 - 274) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/DictionaryServices.framework/Versions/A/DictionaryServices 0x7fffb0f6a000 - 0x7fffb0f72ff3 com.apple.CoreServices.FSEvents (1230.50.1 - 1230.50.1) <2AD1B0E5-7214-37C4-8D11-A27C9CAC0F74> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/FSEvents.framework/Versions/A/FSEvents 0x7fffb0f73000 - 0x7fffb10dfffb com.apple.LaunchServices (775.20 - 775.20) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/LaunchServices 0x7fffb10e0000 - 0x7fffb1190ffb com.apple.Metadata (10.7.0 - 1075.40) <930F8ED2-2004-3996-940B-B1780E89B822> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/Metadata.framework/Versions/A/Metadata 0x7fffb1191000 - 0x7fffb11f0fff com.apple.CoreServices.OSServices (775.20 - 775.20) <0DF5747C-12BC-3A6A-BF5A-C12833F6DDEB> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/OSServices.framework/Versions/A/OSServices 0x7fffb11f1000 - 0x7fffb1261fff com.apple.SearchKit (1.4.0 - 1.4.0) <7A6DDA2B-03F1-3137-BA9E-1CC211973E26> /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SearchKit.framework/Versions/A/SearchKit 0x7fffb1262000 - 0x7fffb12a7ff7 com.apple.coreservices.SharedFileList (38 - 38) /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/SharedFileList.framework/Versions/A/SharedFileList 0x7fffb1330000 - 0x7fffb147dffb com.apple.CoreText (352.0 - 544.17) <43466B0D-C061-3636-928B-0417EBD325A8> /System/Library/Frameworks/CoreText.framework/Versions/A/CoreText 0x7fffb147e000 - 0x7fffb14b3ff3 com.apple.CoreVideo (1.8 - 235.3) /System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo 0x7fffb14b4000 - 0x7fffb1525ffb com.apple.framework.CoreWLAN (11.0 - 1200.31) <4D57D932-6D66-3800-8D33-13951D2E0D84> /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN 0x7fffb1564000 - 0x7fffb1622ff7 com.apple.DiscRecording (9.0.3 - 9030.4.5) <9397E609-CB54-37B2-B28E-D4BC6C34BFAB> /System/Library/Frameworks/DiscRecording.framework/Versions/A/DiscRecording 0x7fffb1623000 - 0x7fffb1628fff com.apple.DiskArbitration (2.7 - 2.7) <70F56042-EF04-3BAF-9E04-90F423FB2BCC> /System/Library/Frameworks/DiskArbitration.framework/Versions/A/DiskArbitration 0x7fffb17ba000 - 0x7fffb1b60fff com.apple.Foundation (6.9 - 1349.91) <2A521CFB-7F0F-3226-9DAE-73CEDB6EF4ED> /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation 0x7fffb1b8c000 - 0x7fffb1bbdff7 com.apple.GSS (4.0 - 2.0) <30A77A95-CBD4-3BD7-9BFF-8426071F5D9D> /System/Library/Frameworks/GSS.framework/Versions/A/GSS 0x7fffb1c7d000 - 0x7fffb1d20fff com.apple.Bluetooth (5.0.5 - 5.0.5f2) <9F6888F1-C63C-3591-8594-5E52DA7162B1> /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth 0x7fffb1d21000 - 0x7fffb1db7ff7 com.apple.framework.IOKit (2.0.2 - 1324.60.4) <454036AD-86AA-3ABB-8C53-B5F654A6824D> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit 0x7fffb1db8000 - 0x7fffb1dbeffb com.apple.IOSurface (159.12 - 159.12) /System/Library/Frameworks/IOSurface.framework/Versions/A/IOSurface 0x7fffb1dbf000 - 0x7fffb1e10ff7 com.apple.ImageCaptureCore (7.0 - 7.0) /System/Library/Frameworks/ImageCaptureCore.framework/Versions/A/ImageCaptureCore 0x7fffb1e11000 - 0x7fffb1f71fef com.apple.ImageIO.framework (3.3.0 - 1599.13) <443879A7-48C6-37ED-AC0B-166EEEABA662> /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO 0x7fffb1f72000 - 0x7fffb1f76fff libGIF.dylib (1599.13) <11C5D9D7-B8A1-3D53-BA50-B25976FE6379> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libGIF.dylib 0x7fffb1f77000 - 0x7fffb2067ff7 libJP2.dylib (1599.13) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJP2.dylib 0x7fffb2068000 - 0x7fffb208bffb libJPEG.dylib (1599.13) /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib 0x7fffb208c000 - 0x7fffb20b3ff7 libPng.dylib (1599.13) <561865FA-A51B-3EFF-ABFF-B4566B90B1A2> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libPng.dylib 0x7fffb20b4000 - 0x7fffb20b6ff3 libRadiance.dylib (1599.13) <6559253B-8FE2-3884-BC93-95BB7705A6D1> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libRadiance.dylib 0x7fffb20b7000 - 0x7fffb2105ffb libTIFF.dylib (1599.13) <8FC594B3-6BBF-3A70-9994-203E9B330B5F> /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib 0x7fffb2263000 - 0x7fffb2e6dfff com.apple.JavaScriptCore (12603 - 12603.3.8) <9557271A-1838-38DD-93E3-D8A9ECDE3B6B> /System/Library/Frameworks/JavaScriptCore.framework/Versions/A/JavaScriptCore 0x7fffb2e6e000 - 0x7fffb2e87ff7 com.apple.Kerberos (3.0 - 1) /System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos 0x7fffb2e88000 - 0x7fffb2ebefff com.apple.LDAPFramework (2.4.28 - 194.5) <492ACA22-373E-3DD9-BAEB-9EF6AA962FD5> /System/Library/Frameworks/LDAP.framework/Versions/A/LDAP 0x7fffb3111000 - 0x7fffb3117fff com.apple.MediaAccessibility (1.0 - 97.1.1) <0BD82735-6644-37CE-B13D-8E7CC59A1752> /System/Library/Frameworks/MediaAccessibility.framework/Versions/A/MediaAccessibility 0x7fffb312d000 - 0x7fffb3666ff7 com.apple.MediaToolbox (1.0 - 1907.59.1.6) /System/Library/Frameworks/MediaToolbox.framework/Versions/A/MediaToolbox 0x7fffb3667000 - 0x7fffb36c2fff com.apple.Metal (87.18 - 87.18) /System/Library/Frameworks/Metal.framework/Versions/A/Metal 0x7fffb3fab000 - 0x7fffb3fb3fff com.apple.NetFS (6.0 - 4.0) <14A24D00-5673-330A-959D-87F72040DEFF> /System/Library/Frameworks/NetFS.framework/Versions/A/NetFS 0x7fffb4127000 - 0x7fffb4163ff7 com.apple.OSAKit (1.5 - 105) <06120E05-5E9B-3259-AD56-74D5B207FF59> /System/Library/Frameworks/OSAKit.framework/Versions/A/OSAKit 0x7fffb418a000 - 0x7fffb4192ff7 libcldcpuengine.dylib (2.8.5) <8086D6FA-2006-3582-B20E-4209D81ACC58> /System/Library/Frameworks/OpenCL.framework/Versions/A/Libraries/libcldcpuengine.dylib 0x7fffb4193000 - 0x7fffb41e1ff3 com.apple.opencl (2.8.6 - 2.8.6) /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL 0x7fffb41e2000 - 0x7fffb41fbffb com.apple.CFOpenDirectory (10.12 - 194) /System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory 0x7fffb41fc000 - 0x7fffb4207ff7 com.apple.OpenDirectory (10.12 - 194) <4298FFD0-B1A7-3064-AF5B-708B3FA38671> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory 0x7fffb4208000 - 0x7fffb420afff libCVMSPluginSupport.dylib (14.0.16) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib 0x7fffb420b000 - 0x7fffb420eff7 libCoreFSCache.dylib (156.3) <687C4CC3-6537-344B-8BE1-5234C8CB2864> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreFSCache.dylib 0x7fffb420f000 - 0x7fffb4213fff libCoreVMClient.dylib (156.3) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib 0x7fffb4214000 - 0x7fffb421dff7 libGFXShared.dylib (14.0.16) <170D07F3-2D30-3D4B-80A0-971E0A765709> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGFXShared.dylib 0x7fffb421e000 - 0x7fffb4229fff libGL.dylib (14.0.16) <0801F3B9-A525-32BB-9BC0-478947CE21D9> /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib 0x7fffb422a000 - 0x7fffb4266ff7 libGLImage.dylib (14.0.16) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib 0x7fffb4267000 - 0x7fffb43ddff3 libGLProgrammability.dylib (14.0.16) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLProgrammability.dylib 0x7fffb43de000 - 0x7fffb441fff7 libGLU.dylib (14.0.16) /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLU.dylib 0x7fffb4d87000 - 0x7fffb4d95fff com.apple.opengl (14.0.16 - 14.0.16) /System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL 0x7fffb4e32000 - 0x7fffb4f79fff com.apple.QTKit (7.7.3 - 2978.8) <80B27C5D-087F-3B83-AF99-AD6BA2E1105D> /System/Library/Frameworks/QTKit.framework/Versions/A/QTKit 0x7fffb4f7a000 - 0x7fffb51e4ff7 com.apple.imageKit (3.0 - 1023) <9C547565-CBAA-3ACB-A3F6-1366A0DCDCB4> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/ImageKit.framework/Versions/A/ImageKit 0x7fffb51e5000 - 0x7fffb52acfff com.apple.PDFKit (1.0 - 1) /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/PDFKit.framework/Versions/A/PDFKit 0x7fffb52ad000 - 0x7fffb57d3ff7 com.apple.QuartzComposer (5.1 - 356) /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzComposer.framework/Versions/A/QuartzComposer 0x7fffb57d4000 - 0x7fffb57f7ffb com.apple.quartzfilters (1.10.0 - 1.10.0) <365342ED-7A1A-3C75-AE60-90764E96034C> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuartzFilters.framework/Versions/A/QuartzFilters 0x7fffb57f8000 - 0x7fffb58e5fff com.apple.QuickLookUIFramework (5.0 - 720.7) <3136C23E-399E-3296-928A-B18EC9FC423C> /System/Library/Frameworks/Quartz.framework/Versions/A/Frameworks/QuickLookUI.framework/Versions/A/QuickLookUI 0x7fffb58e6000 - 0x7fffb58e6fff com.apple.quartzframework (1.5 - 21) <09455972-8A33-3D61-B193-BA7E7CF984CA> /System/Library/Frameworks/Quartz.framework/Versions/A/Quartz 0x7fffb58e7000 - 0x7fffb5ae7fff com.apple.QuartzCore (1.11 - 453.39.5) <34F65F8C-01D2-3120-BD04-2620BB652D50> /System/Library/Frameworks/QuartzCore.framework/Versions/A/QuartzCore 0x7fffb5ae8000 - 0x7fffb5b3dfff com.apple.QuickLookFramework (5.0 - 720.7) <3BD7BA2F-924C-3EFF-B26E-3F930E62E6B4> /System/Library/Frameworks/QuickLook.framework/Versions/A/QuickLook 0x7fffb5b3e000 - 0x7fffb5b55ff3 com.apple.SafariServices.framework (12605 - 12605.2.8) /System/Library/Frameworks/SafariServices.framework/Versions/A/SafariServices 0x7fffb6050000 - 0x7fffb6352fff com.apple.security (7.0 - 57740.60.23) <9F23DF40-1A2F-3177-8DCE-FBC4F8F43BAF> /System/Library/Frameworks/Security.framework/Versions/A/Security 0x7fffb6353000 - 0x7fffb63c8fff com.apple.securityfoundation (6.0 - 55132.50.7) /System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation 0x7fffb63f3000 - 0x7fffb63f6ff3 com.apple.xpc.ServiceManagement (1.0 - 1) /System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement 0x7fffb677d000 - 0x7fffb67ecff7 com.apple.SystemConfiguration (1.14 - 1.14) /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration 0x7fffb67ed000 - 0x7fffb6b9bfff com.apple.VideoToolbox (1.0 - 1907.59.1.6) /System/Library/Frameworks/VideoToolbox.framework/Versions/A/VideoToolbox 0x7fffb6b9c000 - 0x7fffb7f23ff3 com.apple.WebCore (12603 - 12603.3.8) /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore 0x7fffb7f24000 - 0x7fffb8110ff3 com.apple.WebKitLegacy (12603 - 12603.3.8) <28A763DA-BA6C-3350-8200-6DEA86FF7878> /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebKitLegacy.framework/Versions/A/WebKitLegacy 0x7fffb8111000 - 0x7fffb84bcfff com.apple.WebKit (12603 - 12603.3.8) <38192059-8C02-3BBC-BF1F-E1D5E3150E16> /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit 0x7fffb88c8000 - 0x7fffb88cfffb com.apple.APFS (1.0 - 1) <6E79797E-26BD-3E49-891C-03B223F7BD59> /System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS 0x7fffb9043000 - 0x7fffb905eff3 com.apple.AppContainer (4.0 - 307.50.21) /System/Library/PrivateFrameworks/AppContainer.framework/Versions/A/AppContainer 0x7fffb905f000 - 0x7fffb906cff3 com.apple.AppSandbox (4.0 - 307.50.21) /System/Library/PrivateFrameworks/AppSandbox.framework/Versions/A/AppSandbox 0x7fffb906d000 - 0x7fffb908fffb com.apple.framework.Apple80211 (12.0 - 1200.47) <869BFE4C-3F15-349E-9715-0A48ED725EAE> /System/Library/PrivateFrameworks/Apple80211.framework/Versions/A/Apple80211 0x7fffb9090000 - 0x7fffb909ffeb com.apple.AppleFSCompression (88.50.3 - 1.0) <478E8BFF-8BA2-375E-BE02-BA27F115C15A> /System/Library/PrivateFrameworks/AppleFSCompression.framework/Versions/A/AppleFSCompression 0x7fffb9189000 - 0x7fffb921497f com.apple.AppleJPEG (1.0 - 1) /System/Library/PrivateFrameworks/AppleJPEG.framework/Versions/A/AppleJPEG 0x7fffb9244000 - 0x7fffb924cffb com.apple.AppleSRP (5.0 - 1) <6AAE93B6-9816-35B2-9C59-D5C3218065AF> /System/Library/PrivateFrameworks/AppleSRP.framework/Versions/A/AppleSRP 0x7fffb924d000 - 0x7fffb9250ff3 com.apple.AppleSystemInfo (3.1.5 - 3.1.5) <42A1731A-A576-307A-B07C-9F8F64696CB7> /System/Library/PrivateFrameworks/AppleSystemInfo.framework/Versions/A/AppleSystemInfo 0x7fffb9251000 - 0x7fffb92a3fff com.apple.AppleVAFramework (5.0.36 - 5.0.36) /System/Library/PrivateFrameworks/AppleVA.framework/Versions/A/AppleVA 0x7fffb92ad000 - 0x7fffb92b4ff7 com.apple.AssetCacheServices (48.3 - 48.3) /System/Library/PrivateFrameworks/AssetCacheServices.framework/Versions/A/AssetCacheServices 0x7fffb9647000 - 0x7fffb96c5ff7 com.apple.backup.framework (1.8.5 - 1.8.5) /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup 0x7fffb96ee000 - 0x7fffb972bffb com.apple.bom (14.0 - 194.1) <0CBECAF1-B5E0-302F-99EC-D7ED14E12B84> /System/Library/PrivateFrameworks/Bom.framework/Versions/A/Bom 0x7fffba350000 - 0x7fffba377ff3 com.apple.ChunkingLibrary (173 - 173) /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary 0x7fffba378000 - 0x7fffba404ff7 com.apple.CloudDocs (1.0 - 486.30) <74EA66DC-294A-3AFA-9FDF-711926907A35> /System/Library/PrivateFrameworks/CloudDocs.framework/Versions/A/CloudDocs 0x7fffbac9c000 - 0x7fffbaca5ffb com.apple.CommonAuth (4.0 - 2.0) <44E4467E-90BB-3CC4-9E57-9B09D7E90081> /System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth 0x7fffbae2a000 - 0x7fffbb209ff7 com.apple.CoreAUC (226.0.0 - 226.0.0) /System/Library/PrivateFrameworks/CoreAUC.framework/Versions/A/CoreAUC 0x7fffbb20a000 - 0x7fffbb23afff com.apple.CoreAVCHD (5.9.0 - 5900.4.1) <3F6857D1-AE7C-3593-B064-930F5BB7269E> /System/Library/PrivateFrameworks/CoreAVCHD.framework/Versions/A/CoreAVCHD 0x7fffbb2d5000 - 0x7fffbb2ddffb com.apple.frameworks.CoreDaemon (1.3 - 1.3) <2AB86FAF-37B3-3323-9EF0-CA591B6E357C> /System/Library/PrivateFrameworks/CoreDaemon.framework/Versions/B/CoreDaemon 0x7fffbb3ee000 - 0x7fffbb3fefff com.apple.CoreEmoji (1.0 - 40.3.3) /System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji 0x7fffbb4c3000 - 0x7fffbb4d9ff3 com.apple.CoreMediaAuthoring (2.2 - 956) /System/Library/PrivateFrameworks/CoreMediaAuthoring.framework/Versions/A/CoreMediaAuthoring 0x7fffbb4e0000 - 0x7fffbb570ffb com.apple.CorePDF (4.0 - 4) <7F50E4A6-940C-33F5-BE4E-7E01AFE98A8F> /System/Library/PrivateFrameworks/CorePDF.framework/Versions/A/CorePDF 0x7fffbb739000 - 0x7fffbb769ff3 com.apple.CoreServicesInternal (276.2 - 276.2) <05EB7D45-DD4C-3A0F-AC63-A0C2A68E6481> /System/Library/PrivateFrameworks/CoreServicesInternal.framework/Versions/A/CoreServicesInternal 0x7fffbb9fa000 - 0x7fffbba89ff7 com.apple.CoreSymbolication (62046) <8AFF20BA-6696-3B48-A26F-C0B73F20A134> /System/Library/PrivateFrameworks/CoreSymbolication.framework/Versions/A/CoreSymbolication 0x7fffbba8a000 - 0x7fffbbbc9fe7 com.apple.coreui (2.1 - 431.3) <8D0FA478-9B6C-3D6D-8ADF-8677BA0BF134> /System/Library/PrivateFrameworks/CoreUI.framework/Versions/A/CoreUI 0x7fffbbbca000 - 0x7fffbbc9aff3 com.apple.CoreUtils (5.1 - 510.31) <4AC4A8E9-C1E8-3FBA-AF0E-96F9404D826D> /System/Library/PrivateFrameworks/CoreUtils.framework/Versions/A/CoreUtils 0x7fffbbcea000 - 0x7fffbbd4fff3 com.apple.framework.CoreWiFi (12.0 - 1200.31) /System/Library/PrivateFrameworks/CoreWiFi.framework/Versions/A/CoreWiFi 0x7fffbbd50000 - 0x7fffbbd5eff7 com.apple.CrashReporterSupport (10.12 - 827) <802A9B81-E349-348B-90AB-10E40B654250> /System/Library/PrivateFrameworks/CrashReporterSupport.framework/Versions/A/CrashReporterSupport 0x7fffbbdd0000 - 0x7fffbbddaffb com.apple.framework.DFRFoundation (1.0 - 104.25) <7CFF896C-EF22-3941-BB3D-F3615CE4C908> /System/Library/PrivateFrameworks/DFRFoundation.framework/Versions/A/DFRFoundation 0x7fffbbddb000 - 0x7fffbbddfff3 com.apple.DSExternalDisplay (3.1 - 380) <4B5E3FF0-E8C3-38CC-BF72-418C928956AB> /System/Library/PrivateFrameworks/DSExternalDisplay.framework/Versions/A/DSExternalDisplay 0x7fffbbe15000 - 0x7fffbbe8affb com.apple.datadetectorscore (7.0 - 539.1) <84F04DEF-DF0A-3F93-AEE9-B6FAC781164B> /System/Library/PrivateFrameworks/DataDetectorsCore.framework/Versions/A/DataDetectorsCore 0x7fffbbec6000 - 0x7fffbbf05fff com.apple.DebugSymbols (137 - 137) <58A70B66-2628-3CFE-B103-2200D95FC5F7> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols 0x7fffbbf06000 - 0x7fffbc017fff com.apple.desktopservices (1.11.5 - 1.11.5) <46A9D4F3-1EF8-373C-98A4-AD48D285E484> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv 0x7fffbc01c000 - 0x7fffbc0f1fff com.apple.DiskImagesFramework (444.50.17 - 444.50.17) <24D34260-3029-3057-B1D8-BFDC75B0A2C0> /System/Library/PrivateFrameworks/DiskImages.framework/Versions/A/DiskImages 0x7fffbc15a000 - 0x7fffbc165fff com.apple.DisplayServicesFW (3.1 - 380) <0BDF6C17-5E5F-33F8-8E99-C7350C6F9667> /System/Library/PrivateFrameworks/DisplayServices.framework/Versions/A/DisplayServices 0x7fffbc1aa000 - 0x7fffbc1acffb com.apple.EFILogin (2.0 - 2) /System/Library/PrivateFrameworks/EFILogin.framework/Versions/A/EFILogin 0x7fffbc2ff000 - 0x7fffbc730ff7 com.apple.vision.FaceCore (3.3.2 - 3.3.2) <9391D5A3-738C-3136-9D07-518CB43DBADA> /System/Library/PrivateFrameworks/FaceCore.framework/Versions/A/FaceCore 0x7fffbda87000 - 0x7fffbda87fff libmetal_timestamp.dylib (600.0.49.9) /System/Library/PrivateFrameworks/GPUCompiler.framework/libmetal_timestamp.dylib 0x7fffbda94000 - 0x7fffbda9fff3 libGPUSupportMercury.dylib (14.0.16) <1216909A-E38E-335F-9F46-9362753AE0D1> /System/Library/PrivateFrameworks/GPUSupport.framework/Versions/A/Libraries/libGPUSupportMercury.dylib 0x7fffbdd58000 - 0x7fffbdd74fff com.apple.GenerationalStorage (2.0 - 267.2) <22381303-B9A8-32D8-BDBF-871F0CDD81A5> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage 0x7fffbdd8d000 - 0x7fffbe43ffff com.apple.GeoServices (1.0 - 1228.24.9.30.34) <96BF97F6-8FF2-3FC4-A8C1-498CB7B0D9A0> /System/Library/PrivateFrameworks/GeoServices.framework/Versions/A/GeoServices 0x7fffbe485000 - 0x7fffbe4fbff3 com.apple.Heimdal (4.0 - 2.0) <9541C717-96FF-32D3-8F0B-5048525DAA70> /System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal 0x7fffbe4fc000 - 0x7fffbe50dfff com.apple.HelpData (2.1.12 - 100.1) /System/Library/PrivateFrameworks/HelpData.framework/Versions/A/HelpData 0x7fffbeb16000 - 0x7fffbeb1dffb com.apple.IOAccelerator (311.16.2 - 311.16.2) <96FA28B6-B03D-3A5E-AF07-0AE4486D2968> /System/Library/PrivateFrameworks/IOAccelerator.framework/Versions/A/IOAccelerator 0x7fffbeb1f000 - 0x7fffbeb33ff7 com.apple.IOPresentment (1.0 - 29.10) <30DF04EE-10E2-353F-845F-A97B87DF3207> /System/Library/PrivateFrameworks/IOPresentment.framework/Versions/A/IOPresentment 0x7fffbeb34000 - 0x7fffbeb56fff com.apple.IconServices (74.4 - 74.4) <218DDD05-35F4-3833-B98D-471ED0EBC031> /System/Library/PrivateFrameworks/IconServices.framework/Versions/A/IconServices 0x7fffbebf2000 - 0x7fffbec02ff3 com.apple.IntlPreferences (2.0 - 216) <15B0DF1F-24C3-3A51-9032-1DD150B7D321> /System/Library/PrivateFrameworks/IntlPreferences.framework/Versions/A/IntlPreferences 0x7fffbec3d000 - 0x7fffbedf4fff com.apple.LanguageModeling (1.0 - 123.2.5) /System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling 0x7fffbeef0000 - 0x7fffbefb2ff3 com.apple.MMCS (1.3 - 385.4) /System/Library/PrivateFrameworks/MMCS.framework/Versions/A/MMCS 0x7fffbf464000 - 0x7fffbf467fff com.apple.Mangrove (1.0 - 1) <98814966-FD65-302B-B47E-00928DC34E5C> /System/Library/PrivateFrameworks/Mangrove.framework/Versions/A/Mangrove 0x7fffbf540000 - 0x7fffbf574ff3 com.apple.MediaKit (16 - 845) <883DC63F-F90F-3FB9-8C23-9CECD72EBCDE> /System/Library/PrivateFrameworks/MediaKit.framework/Versions/A/MediaKit 0x7fffbf715000 - 0x7fffbf78eff7 com.apple.MetalPerformanceShaders.MetalPerformanceShaders (1.0 - 1) /System/Library/PrivateFrameworks/MetalPerformanceShaders.framework/Versions/A/MetalPerformanceShaders 0x7fffbf7a0000 - 0x7fffbf8f7fc7 com.apple.mobiledevice (988.50.16.100.2 - 988.50.16.100.2) /System/Library/PrivateFrameworks/MobileDevice.framework/Versions/A/MobileDevice 0x7fffbf8f8000 - 0x7fffbf906fff com.apple.MobileKeyBag (2.0 - 1.0) /System/Library/PrivateFrameworks/MobileKeyBag.framework/Versions/A/MobileKeyBag 0x7fffbf917000 - 0x7fffbf93fff7 com.apple.MultitouchSupport.framework (368.16 - 368.16) /System/Library/PrivateFrameworks/MultitouchSupport.framework/Versions/A/MultitouchSupport 0x7fffbf9f1000 - 0x7fffbf9fcfff com.apple.NetAuth (6.2 - 6.2) <97F487D6-8089-31A8-B68C-6C1EAC6ED1B5> /System/Library/PrivateFrameworks/NetAuth.framework/Versions/A/NetAuth 0x7fffc02d4000 - 0x7fffc0315ff3 com.apple.PerformanceAnalysis (1.148.3 - 148.3) /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis 0x7fffc09c2000 - 0x7fffc09fcffb com.apple.ProtectedCloudStorage (1.0 - 1) <8B32A7EC-D371-38E3-A286-F1BE1307F1E1> /System/Library/PrivateFrameworks/ProtectedCloudStorage.framework/Versions/A/ProtectedCloudStorage 0x7fffc09fd000 - 0x7fffc0a17fff com.apple.ProtocolBuffer (1 - 249.1) /System/Library/PrivateFrameworks/ProtocolBuffer.framework/Versions/A/ProtocolBuffer 0x7fffc0a18000 - 0x7fffc0a27ff7 com.apple.QuickLookThumbnailing (1.0 - 1) <173EE873-1700-3FCA-9782-C060FBB5BCAD> /System/Library/PrivateFrameworks/QuickLookThumbnailing.framework/Versions/A/QuickLookThumbnailing 0x7fffc0a30000 - 0x7fffc0a53ff3 com.apple.RemoteViewServices (2.0 - 124) <6B967FDA-6591-302C-BA0A-76C4856E584E> /System/Library/PrivateFrameworks/RemoteViewServices.framework/Versions/A/RemoteViewServices 0x7fffc171d000 - 0x7fffc1720fff com.apple.SecCodeWrapper (4.0 - 307.50.21) /System/Library/PrivateFrameworks/SecCodeWrapper.framework/Versions/A/SecCodeWrapper 0x7fffc17af000 - 0x7fffc183cfff com.apple.Sharing (696.2.67 - 696.2.67) /System/Library/PrivateFrameworks/Sharing.framework/Versions/A/Sharing 0x7fffc183d000 - 0x7fffc185cff7 com.apple.shortcut (2.16 - 98) <6C0435B1-83DD-3254-B0D3-3B86C6CE606A> /System/Library/PrivateFrameworks/Shortcut.framework/Versions/A/Shortcut 0x7fffc185d000 - 0x7fffc1ac6ff3 com.apple.SkyLight (1.600.0 - 170.3.6) <43F4ADAC-A7BA-35E0-AD63-5F6AF243DF80> /System/Library/PrivateFrameworks/SkyLight.framework/Versions/A/SkyLight 0x7fffc1ca5000 - 0x7fffc1cb1ff7 com.apple.SpeechRecognitionCore (3.3.2 - 3.3.2) <684BD1EA-8268-331C-A5A9-080EB375C658> /System/Library/PrivateFrameworks/SpeechRecognitionCore.framework/Versions/A/SpeechRecognitionCore 0x7fffc239d000 - 0x7fffc2411fdf com.apple.Symbolication (62048.1) <1A30ED19-7532-3F46-9DD3-9879A973D0CF> /System/Library/PrivateFrameworks/Symbolication.framework/Versions/A/Symbolication 0x7fffc2850000 - 0x7fffc2856ff7 com.apple.TCC (1.0 - 1) <911B534B-4AC7-34E4-935E-E42ECD008CBC> /System/Library/PrivateFrameworks/TCC.framework/Versions/A/TCC 0x7fffc28e2000 - 0x7fffc29a8ff7 com.apple.TextureIO (2.8 - 2.8) <3D61E533-4156-3B21-B7ED-CB823E680DFC> /System/Library/PrivateFrameworks/TextureIO.framework/Versions/A/TextureIO 0x7fffc2a1c000 - 0x7fffc2a1dfff com.apple.TrustEvaluationAgent (2.0 - 28.50.1) /System/Library/PrivateFrameworks/TrustEvaluationAgent.framework/Versions/A/TrustEvaluationAgent 0x7fffc2a1e000 - 0x7fffc2baeff3 com.apple.UIFoundation (1.0 - 490.7) <2A3063FE-1790-3510-8A0E-AEC581D42B7E> /System/Library/PrivateFrameworks/UIFoundation.framework/Versions/A/UIFoundation 0x7fffc367d000 - 0x7fffc373dfff com.apple.ViewBridge (283 - 283) <25A635B3-C87C-3D3A-ADF3-539713FA1048> /System/Library/PrivateFrameworks/ViewBridge.framework/Versions/A/ViewBridge 0x7fffc378d000 - 0x7fffc3820fff com.apple.WebInspector (12603 - 12603.3.8) <3CBBD418-6385-3649-BDD1-860E54475138> /System/Library/PrivateFrameworks/WebInspector.framework/Versions/A/WebInspector 0x7fffc3b88000 - 0x7fffc3b8efff com.apple.XPCService (2.0 - 1) <4B28B225-2105-33F4-9ED0-F04288FF4FB1> /System/Library/PrivateFrameworks/XPCService.framework/Versions/A/XPCService 0x7fffc3c5f000 - 0x7fffc3c61ffb com.apple.loginsupport (1.0 - 1) /System/Library/PrivateFrameworks/login.framework/Versions/A/Frameworks/loginsupport.framework/Versions/A/loginsupport 0x7fffc3cb6000 - 0x7fffc3cd1ff7 libCRFSuite.dylib (34) /usr/lib/libCRFSuite.dylib 0x7fffc3cd2000 - 0x7fffc3cddfff libChineseTokenizer.dylib (21) <0886E908-A825-36AF-B94B-2361FD8BC2A1> /usr/lib/libChineseTokenizer.dylib 0x7fffc3cde000 - 0x7fffc3d6eff7 libCoreStorage.dylib (540.30.1) <85C0A366-F901-36E3-854A-FE8A14A04A72> /usr/lib/libCoreStorage.dylib 0x7fffc3d6f000 - 0x7fffc3d70ff3 libDiagnosticMessagesClient.dylib (102) <84A04D24-0E60-3810-A8C0-90A65E2DF61A> /usr/lib/libDiagnosticMessagesClient.dylib 0x7fffc3d71000 - 0x7fffc3f84fff libFosl_dynamic.dylib (16.39) /usr/lib/libFosl_dynamic.dylib 0x7fffc3fa0000 - 0x7fffc3fa7fff libMatch.1.dylib (27) <70D4BD2A-9383-37F2-B0D6-9B592D236601> /usr/lib/libMatch.1.dylib 0x7fffc3fa8000 - 0x7fffc3fa8fff libOpenScriptingUtil.dylib (172.1) <0F1BA407-97D1-36F6-882D-A355EAAD5E00> /usr/lib/libOpenScriptingUtil.dylib 0x7fffc3fa9000 - 0x7fffc3fadffb libScreenReader.dylib (477.40.6) /usr/lib/libScreenReader.dylib 0x7fffc3fae000 - 0x7fffc3fafffb libSystem.B.dylib (1238.60.2) <45C5C363-67A0-308C-8D35-A4DF23069A9F> /usr/lib/libSystem.B.dylib 0x7fffc401b000 - 0x7fffc4046ff3 libarchive.2.dylib (41.70.2) <907D1FB1-9A65-33F5-AFC8-0B6E5AE9D83A> /usr/lib/libarchive.2.dylib 0x7fffc4047000 - 0x7fffc40c3fc7 libate.dylib (1.12.13) /usr/lib/libate.dylib 0x7fffc40c7000 - 0x7fffc40c7ff3 libauto.dylib (187) <34388D0B-C539-3C1B-9408-2BC152162E43> /usr/lib/libauto.dylib 0x7fffc40c8000 - 0x7fffc40d8ff3 libbsm.0.dylib (34) <20084796-B04D-3B35-A003-EA11459557A9> /usr/lib/libbsm.0.dylib 0x7fffc40d9000 - 0x7fffc40e7ff7 libbz2.1.0.dylib (38) /usr/lib/libbz2.1.0.dylib 0x7fffc40e8000 - 0x7fffc413eff7 libc++.1.dylib (307.5) <0B43BB5D-E6EB-3464-8DE9-B41AC8ED9D1C> /usr/lib/libc++.1.dylib 0x7fffc413f000 - 0x7fffc4168ff7 libc++abi.dylib (307.4) /usr/lib/libc++abi.dylib 0x7fffc4169000 - 0x7fffc4179ffb libcmph.dylib (6) <2B5D405E-2D0B-3320-ABD6-622934C86ABE> /usr/lib/libcmph.dylib 0x7fffc417a000 - 0x7fffc4190fcf libcompression.dylib (39) /usr/lib/libcompression.dylib 0x7fffc4191000 - 0x7fffc4191ff7 libcoretls.dylib (121.50.4) <64B1001E-10F6-3542-A3B2-C4B49F51817F> /usr/lib/libcoretls.dylib 0x7fffc4192000 - 0x7fffc4193ff3 libcoretls_cfhelpers.dylib (121.50.4) <1A10303E-5EB0-3C7C-9165-021FCDFD934D> /usr/lib/libcoretls_cfhelpers.dylib 0x7fffc424d000 - 0x7fffc4331ff7 libcrypto.0.9.8.dylib (64.50.7) /usr/lib/libcrypto.0.9.8.dylib 0x7fffc44c3000 - 0x7fffc44cefff libcsfde.dylib (540.30.1) <0C2B183B-16D9-3D5F-962D-0A09C7063211> /usr/lib/libcsfde.dylib 0x7fffc44cf000 - 0x7fffc4522ff7 libcups.2.dylib (450) <9950BFCB-7882-33C9-9ECF-CE66773C5657> /usr/lib/libcups.2.dylib 0x7fffc4523000 - 0x7fffc4575fff libcurl.4.dylib (95.70.5) /usr/lib/libcurl.4.dylib 0x7fffc4576000 - 0x7fffc457dff3 libdscsym.dylib (148.3) /usr/lib/libdscsym.dylib 0x7fffc459f000 - 0x7fffc459ffff libenergytrace.dylib (15) /usr/lib/libenergytrace.dylib 0x7fffc45a0000 - 0x7fffc45acffb libexslt.0.dylib (15.9.1) /usr/lib/libexslt.0.dylib 0x7fffc45ad000 - 0x7fffc45aefff libffi.dylib (18.1) <49D03682-E111-351C-8266-4519B3B82BE9> /usr/lib/libffi.dylib 0x7fffc45af000 - 0x7fffc45b4ff7 libheimdal-asn1.dylib (498.50.9) <92C953A2-5E1D-39E9-875E-92F29A12D6FB> /usr/lib/libheimdal-asn1.dylib 0x7fffc45b5000 - 0x7fffc46a7ff7 libiconv.2.dylib (50) <42125B35-81D7-3FC4-9475-A26DBE10884D> /usr/lib/libiconv.2.dylib 0x7fffc46a8000 - 0x7fffc48cdffb libicucore.A.dylib (57167.0.1) /usr/lib/libicucore.A.dylib 0x7fffc48d3000 - 0x7fffc48d4fff liblangid.dylib (126) <2085E7A7-9A34-3735-87F4-F174EF8EABF0> /usr/lib/liblangid.dylib 0x7fffc48d5000 - 0x7fffc48eeffb liblzma.5.dylib (10) <44BD0279-99DD-36B5-8A6E-C11432E2098D> /usr/lib/liblzma.5.dylib 0x7fffc48ef000 - 0x7fffc4905ff7 libmarisa.dylib (5) <9030D214-5D0F-30CB-AC03-902C63909362> /usr/lib/libmarisa.dylib 0x7fffc4906000 - 0x7fffc4baeff7 libmecabra.dylib (744.8) /usr/lib/libmecabra.dylib 0x7fffc4baf000 - 0x7fffc4be0ffb libncurses.5.4.dylib (51.30.1) /usr/lib/libncurses.5.4.dylib 0x7fffc4be1000 - 0x7fffc4c5bff3 libnetwork.dylib (856.60.1) <191E99F5-4723-3180-8013-02AF2F9AE4B8> /usr/lib/libnetwork.dylib 0x7fffc4c5c000 - 0x7fffc502e047 libobjc.A.dylib (709.1) <70614861-0340-32E2-85ED-FE65759CDFFA> /usr/lib/libobjc.A.dylib 0x7fffc5031000 - 0x7fffc5035fff libpam.2.dylib (21.30.1) <71EB0D88-DE84-3C8D-A2C5-58AA282BC5BC> /usr/lib/libpam.2.dylib 0x7fffc5036000 - 0x7fffc5067fff libpcap.A.dylib (67.60.2) /usr/lib/libpcap.A.dylib 0x7fffc5084000 - 0x7fffc50a0ffb libresolv.9.dylib (64) /usr/lib/libresolv.9.dylib 0x7fffc50a1000 - 0x7fffc50dafff libsandbox.1.dylib (592.70.2) /usr/lib/libsandbox.1.dylib 0x7fffc50db000 - 0x7fffc50edffb libsasl2.2.dylib (209) <32107C59-22C6-3049-B86E-9C2F85FF549B> /usr/lib/libsasl2.2.dylib 0x7fffc50ee000 - 0x7fffc50efff3 libspindump.dylib (231.3) <2042E7E5-295C-3AF0-AFAA-4568FAAB9FB6> /usr/lib/libspindump.dylib 0x7fffc50f0000 - 0x7fffc523eff7 libsqlite3.dylib (254.8) <1ECF7DF7-7A07-3B4B-A63B-F4EFF6BC7ACF> /usr/lib/libsqlite3.dylib 0x7fffc5261000 - 0x7fffc5299ff3 libssl.0.9.8.dylib (64.50.7) <3B6EAD4B-F7FA-369C-AB54-755B08219D2A> /usr/lib/libssl.0.9.8.dylib 0x7fffc529a000 - 0x7fffc52eafff libstdc++.6.dylib (104.1) /usr/lib/libstdc++.6.dylib 0x7fffc532f000 - 0x7fffc5332ff7 libutil.dylib (47.30.1) <88CC63B3-0EDF-306E-9AB5-D87EBE0F3F16> /usr/lib/libutil.dylib 0x7fffc5333000 - 0x7fffc5340fff libxar.1.dylib (357) <69547C64-E811-326F-BBED-490C6361BDCB> /usr/lib/libxar.1.dylib 0x7fffc5341000 - 0x7fffc5430ff3 libxml2.2.dylib (30.20) <40B1027A-43B6-38EC-9EB9-9E7871E98CBC> /usr/lib/libxml2.2.dylib 0x7fffc5431000 - 0x7fffc545afff libxslt.1.dylib (15.9.1) /usr/lib/libxslt.1.dylib 0x7fffc545b000 - 0x7fffc546cff3 libz.1.dylib (67) <46E3FFA2-4328-327A-8D34-A03E20BFFB8E> /usr/lib/libz.1.dylib 0x7fffc547b000 - 0x7fffc547fff7 libcache.dylib (79) <093A4DAB-8385-3D47-A350-E20CB7CCF7BF> /usr/lib/system/libcache.dylib 0x7fffc5480000 - 0x7fffc548afff libcommonCrypto.dylib (60092.50.5) <8A64D1B0-C70E-385C-92F0-E669079FDA90> /usr/lib/system/libcommonCrypto.dylib 0x7fffc548b000 - 0x7fffc5492fff libcompiler_rt.dylib (62) <55D47421-772A-32AB-B529-1A46C2F43B4D> /usr/lib/system/libcompiler_rt.dylib 0x7fffc5493000 - 0x7fffc549bfff libcopyfile.dylib (138) <819BEA3C-DF11-3E3D-A1A1-5A51C5BF1961> /usr/lib/system/libcopyfile.dylib 0x7fffc549c000 - 0x7fffc551ffdf libcorecrypto.dylib (442.50.19) <65D7165E-2E71-335D-A2D6-33F78E2DF0C1> /usr/lib/system/libcorecrypto.dylib 0x7fffc5520000 - 0x7fffc5551fff libdispatch.dylib (703.50.37) <6582BAD6-ED27-3B30-B620-90B1C5A4AE3C> /usr/lib/system/libdispatch.dylib 0x7fffc5552000 - 0x7fffc5557ffb libdyld.dylib (433.5) /usr/lib/system/libdyld.dylib 0x7fffc5558000 - 0x7fffc5558ffb libkeymgr.dylib (28) <7AA011A9-DC21-3488-BF73-3B5B14D1FDD6> /usr/lib/system/libkeymgr.dylib 0x7fffc5559000 - 0x7fffc5565fff libkxld.dylib (3789.73.13) <9A739C49-DD82-3B7F-AF41-60395C1AE071> /usr/lib/system/libkxld.dylib 0x7fffc5566000 - 0x7fffc5566fff liblaunch.dylib (972.70.1) /usr/lib/system/liblaunch.dylib 0x7fffc5567000 - 0x7fffc556cff3 libmacho.dylib (898) <17D5D855-F6C3-3B04-B680-E9BF02EF8AED> /usr/lib/system/libmacho.dylib 0x7fffc556d000 - 0x7fffc556fff3 libquarantine.dylib (85.50.1) <12448CC2-378E-35F3-BE33-9DC395A5B970> /usr/lib/system/libquarantine.dylib 0x7fffc5570000 - 0x7fffc5571ffb libremovefile.dylib (45) <38D4CB9C-10CD-30D3-8B7B-A515EC75FE85> /usr/lib/system/libremovefile.dylib 0x7fffc5572000 - 0x7fffc558aff7 libsystem_asl.dylib (349.50.5) <096E4228-3B7C-30A6-8B13-EC909A64499A> /usr/lib/system/libsystem_asl.dylib 0x7fffc558b000 - 0x7fffc558bff7 libsystem_blocks.dylib (67) <10DC5404-73AB-35B3-A277-A8AFECB476EB> /usr/lib/system/libsystem_blocks.dylib 0x7fffc558c000 - 0x7fffc5619fef libsystem_c.dylib (1158.50.2) /usr/lib/system/libsystem_c.dylib 0x7fffc561a000 - 0x7fffc561dffb libsystem_configuration.dylib (888.60.2) /usr/lib/system/libsystem_configuration.dylib 0x7fffc561e000 - 0x7fffc5621fff libsystem_coreservices.dylib (41.4) <7D26DE79-B424-3450-85E1-F7FAB32714AB> /usr/lib/system/libsystem_coreservices.dylib 0x7fffc5622000 - 0x7fffc563afff libsystem_coretls.dylib (121.50.4) /usr/lib/system/libsystem_coretls.dylib 0x7fffc563b000 - 0x7fffc5641fff libsystem_dnssd.dylib (765.50.9) /usr/lib/system/libsystem_dnssd.dylib 0x7fffc5642000 - 0x7fffc566bff7 libsystem_info.dylib (503.50.4) <611DB84C-BF70-3F92-8702-B9F28A900920> /usr/lib/system/libsystem_info.dylib 0x7fffc566c000 - 0x7fffc568eff7 libsystem_kernel.dylib (3789.73.13) /usr/lib/system/libsystem_kernel.dylib 0x7fffc568f000 - 0x7fffc56d6fe7 libsystem_m.dylib (3121.6) <86D499B5-BBDC-3D3B-8A4E-97AE8E6672A4> /usr/lib/system/libsystem_m.dylib 0x7fffc56d7000 - 0x7fffc56f5ff7 libsystem_malloc.dylib (116.50.8) /usr/lib/system/libsystem_malloc.dylib 0x7fffc56f6000 - 0x7fffc574fffb libsystem_network.dylib (856.60.1) <369D0221-56CA-3C3E-9EDE-94B41CAE77B7> /usr/lib/system/libsystem_network.dylib 0x7fffc5750000 - 0x7fffc5759ff3 libsystem_networkextension.dylib (563.60.2) /usr/lib/system/libsystem_networkextension.dylib 0x7fffc575a000 - 0x7fffc5763ff3 libsystem_notify.dylib (165.20.1) /usr/lib/system/libsystem_notify.dylib 0x7fffc5764000 - 0x7fffc576cfe7 libsystem_platform.dylib (126.50.8) <897462FD-B318-321B-A554-E61982630F7E> /usr/lib/system/libsystem_platform.dylib 0x7fffc576d000 - 0x7fffc5777ff7 libsystem_pthread.dylib (218.60.3) /usr/lib/system/libsystem_pthread.dylib 0x7fffc5778000 - 0x7fffc577bff7 libsystem_sandbox.dylib (592.70.2) <19320A42-2E3B-361B-BBDA-2F5F2E87B100> /usr/lib/system/libsystem_sandbox.dylib 0x7fffc577c000 - 0x7fffc577dff3 libsystem_secinit.dylib (24.50.4) /usr/lib/system/libsystem_secinit.dylib 0x7fffc577e000 - 0x7fffc5785ffb libsystem_symptoms.dylib (532.50.47) <3390E07C-C1CE-348F-ADBD-2C5440B45EAA> /usr/lib/system/libsystem_symptoms.dylib 0x7fffc5786000 - 0x7fffc5799ff7 libsystem_trace.dylib (518.70.1) /usr/lib/system/libsystem_trace.dylib 0x7fffc579a000 - 0x7fffc579fffb libunwind.dylib (35.3) <3D50D8A8-C460-334D-A519-2DA841102C6B> /usr/lib/system/libunwind.dylib 0x7fffc57a0000 - 0x7fffc57c9ff7 libxpc.dylib (972.70.1) /usr/lib/system/libxpc.dylib External Modification Summary: Calls made by other processes targeting this process: task_for_pid: 643 thread_create: 0 thread_set_state: 0 Calls made by this process: task_for_pid: 0 thread_create: 0 thread_set_state: 0 Calls made by all processes on this machine: task_for_pid: 483635 thread_create: 0 thread_set_state: 0 VM Region Summary: ReadOnly portion of Libraries: Total=348.4M resident=0K(0%) swapped_out_or_unallocated=348.4M(100%) Writable regions: Total=1.3G written=0K(0%) resident=0K(0%) swapped_out=0K(0%) unallocated=1.3G(100%) VIRTUAL REGION REGION TYPE SIZE COUNT (non-coalesced) =========== ======= ======= Accelerate framework 1024K 8 Activity Tracing 256K 2 CG backing stores 5312K 4 CG image 44K 9 CoreAnimation 28K 6 CoreUI image data 1036K 14 CoreUI image file 292K 5 Dispatch continuations 8192K 2 Foundation 4K 2 IOKit 7940K 2 JS JIT generated code 128.0M 5 JS JIT generated code (reserved) 896.0M 2 reserved VM address space (unallocated) Kernel Alloc Once 8K 2 MALLOC 175.0M 91 MALLOC guard page 48K 10 Memory Tag 242 12K 2 Memory Tag 249 156K 3 OpenGL GLSL 256K 4 SQLite page cache 64K 2 STACK GUARD 54.5M 9 Stack 22.7M 11 Stack Guard 4K 2 VM_ALLOCATE 96K 18 WebKit Malloc 20.0M 42 __DATA 72.0M 328 __GLSLBUILTINS 2588K 2 __IMAGE 528K 2 __LINKEDIT 118.4M 22 __TEXT 230.0M 302 __UNICODE 556K 2 mapped file 1.0G 27 shared memory 16.4M 13 =========== ======= ======= TOTAL 2.7G 923 TOTAL, minus reserved VM space 1.8G 923 --=-=-=-- From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Jun 2018 05:05:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31793@debbugs.gnu.org, sdl.web@gmail.com X-Debbugs-Original-To: bug-gnu-emacs@gnu.org,Leo Liu ,31793@debbugs.gnu.org Received: via spool by submit@debbugs.gnu.org id=B.152877987919598 (code B ref -1); Tue, 12 Jun 2018 05:05:02 +0000 Received: (at submit) by debbugs.gnu.org; 12 Jun 2018 05:04:39 +0000 Received: from localhost ([127.0.0.1]:43922 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbTy-00055w-Ka for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:04:38 -0400 Received: from eggs.gnu.org ([208.118.235.92]:47386) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbTx-00055i-JO for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:04:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSbTr-0007Ha-Ob for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:04:32 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:60047) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fSbTr-0007HW-LV for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:04:31 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38346) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSbTo-0007DP-Nf for bug-gnu-emacs@gnu.org; Tue, 12 Jun 2018 01:04:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSbTl-0007Dl-J9 for bug-gnu-emacs@gnu.org; Tue, 12 Jun 2018 01:04:28 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57533) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSbTl-0007DX-Eh; Tue, 12 Jun 2018 01:04:25 -0400 Received: from [176.12.150.111] (port=51078 helo=[10.165.23.144]) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1fSbTj-0004QZ-W0; Tue, 12 Jun 2018 01:04:25 -0400 Date: Tue, 12 Jun 2018 08:04:20 +0300 User-Agent: K-9 Mail for Android In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: Eli Zaretskii Message-ID: <63BD94B3-7CF7-41E1-9125-707935CF53C8@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.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: -6.0 (------) On June 12, 2018 7:43:06 AM GMT+03:00, Leo Liu wrot= e: > Get this same issue a second time also reading in GNUS=2E I'll have the > faulty emacs session available for a short while=2E If someone knows how > to get more info on what's wrong, I can try and get it=2E >=20 > I am sending this on 25=2E3=2E Can you attach a debugger and produce a backtrace? The Lisp backtrace is also important, and the xbacktrace command in the debugger should produce it=2E Let us know if you need more detailed instructions=2E Thanks=2E From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Jun 2018 05:22:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 31793@debbugs.gnu.org, sdl.web@gmail.com X-Debbugs-Original-To: bug-gnu-emacs@gnu.org,Leo Liu ,31793@debbugs.gnu.org Received: via spool by submit@debbugs.gnu.org id=B.152878090521541 (code B ref -1); Tue, 12 Jun 2018 05:22:01 +0000 Received: (at submit) by debbugs.gnu.org; 12 Jun 2018 05:21:45 +0000 Received: from localhost ([127.0.0.1]:43937 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbkX-0005bM-In for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:21:45 -0400 Received: from eggs.gnu.org ([208.118.235.92]:49592) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbkW-0005b1-1M for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:21:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSbkQ-0007zD-3S for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:21:38 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:39350) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fSbkP-0007z2-W2 for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:21:38 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40555) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSbkP-0002cc-3u for bug-gnu-emacs@gnu.org; Tue, 12 Jun 2018 01:21:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fSbkK-0007vA-Ph for bug-gnu-emacs@gnu.org; Tue, 12 Jun 2018 01:21:35 -0400 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57684) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fSbkK-0007v2-LM; Tue, 12 Jun 2018 01:21:32 -0400 Received: from [176.12.150.111] (port=51124 helo=[10.165.23.144]) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_128_CBC_SHA1:128) (Exim 4.82) (envelope-from ) id 1fSbkJ-0006Iu-Ta; Tue, 12 Jun 2018 01:21:32 -0400 Date: Tue, 12 Jun 2018 08:21:27 +0300 User-Agent: K-9 Mail for Android In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: Eli Zaretskii Message-ID: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.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: -6.0 (------) On June 12, 2018 7:59:32 AM GMT+03:00, Leo Liu wrot= e: > On 2018-06-12 12:43 +0800, Leo Liu wrote: > > Get this same issue a second time also reading in GNUS=2E I'll have > the > > faulty emacs session available for a short while=2E If someone knows > how > > to get more info on what's wrong, I can try and get it=2E >=20 > The session crashed instead=2E I was trying to increase max-specpdl-size > and max-lisp-eval-depth from emacsclient -e=2E The crash report from the > OS is attached=2E Ugh, macOS=2E=2E=2E This means no xbacktrace and no other GDB wizardry=2E=2E=2E Well, I think the most important thing is to produce a Lisp backtrace from the error=2E From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Jun 2018 05:25:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 31793@debbugs.gnu.org Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.152878109921834 (code B ref 31793); Tue, 12 Jun 2018 05:25:02 +0000 Received: (at 31793) by debbugs.gnu.org; 12 Jun 2018 05:24:59 +0000 Received: from localhost ([127.0.0.1]:43945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbnf-0005g6-9k for submit@debbugs.gnu.org; Tue, 12 Jun 2018 01:24:59 -0400 Received: from mail-pf0-f182.google.com ([209.85.192.182]:38366) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSbne-0005fu-7c for 31793@debbugs.gnu.org; Tue, 12 Jun 2018 01:24:58 -0400 Received: by mail-pf0-f182.google.com with SMTP id b74-v6so11471734pfl.5 for <31793@debbugs.gnu.org>; Mon, 11 Jun 2018 22:24:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version; bh=Nh56QLj2NhqUwVd8T1cAnSzAfhAUhmnjMgamQYa/mmA=; b=I8Ge9+d/khrcxN8BKiu2BEwVTJBWWYSBqQAgPCHr1YcN0r3eN4QSFG7ULKRcfyEejU Z490bk6l6HJHvj/qy5HVWpRD23ebXdQbYS6aaDCsgj+glHLoil4k5HJzoEavA676j9jB cgjMtAGVJRscmrE6UVHaxsIoROfpWuaIYYPY+cTEUvE7aMq+RpRGeQJgrH+O1di09LNX 9/G+yor/bu7bokuV0EHgUJNz0wqZsrAaxC/h666K+7ua5fnTFHogOTJlCBVkZlnEJ5Bg MtjXJgZSBeu785+dbRorT4S3ch5c79WMVUg0k790QIvBZ0omXEQSNRMkrqpltiI4IOg+ krfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:face:date :in-reply-to:message-id:user-agent:mime-version; bh=Nh56QLj2NhqUwVd8T1cAnSzAfhAUhmnjMgamQYa/mmA=; b=gxjC0/jxdQBM6WDHhM2whoW5ukxcB+Ht48hv6ecInYAoChogKJIbey65LBye69xVkv xdNVgESHPUr7BbQPaRy/TykbrRLDpOV9ky2HLmkhXnIWjpfEPn5sLQyDYfBs6C/7OAgO sk+9GrTKty+Ow6uVxF7VJlKQJzpUh9pD+3469GDD2krczC88oEDpTOeIRkwFvofnFcrf qrg2wOpsnuiWN9OTPks6eyrydTlEFtBnQ1CoRjQTPU2Xeux67lv1vRUomXBOYqR0ivxj TFpz8zT4PMx4hI9a40fVZOwChsJj3YQ6l4lcbBbvxZqmU0FAygblwiLhEteDAhviys7U xyig== X-Gm-Message-State: APt69E3ltaC/vxR7G0c0k4A6g7QhBq6PHiL6OL8iFfCxEeAO+D7ZKPEt cvYWTLuhFdJ5Xn1uE+vOHazHGg== X-Google-Smtp-Source: ADUXVKJ/Nn0LoC87YldK81NVkuKb4clUTsdtoQN0lpnNlurWVjfqV319bjrJW6w3ctTG5uYpAJRyHQ== X-Received: by 2002:a65:6591:: with SMTP id u17-v6mr1798059pgv.401.1528781092168; Mon, 11 Jun 2018 22:24:52 -0700 (PDT) Received: from Zeuss-MacBook-Air.local ([119.94.238.191]) by smtp.gmail.com with ESMTPSA id b22-v6sm83567pfi.144.2018.06.11.22.24.50 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 11 Jun 2018 22:24:51 -0700 (PDT) From: Leo Liu References: <63BD94B3-7CF7-41E1-9125-707935CF53C8@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAElBMVEUAAAAAAP+LRRP0pGC+ vr7///+7mT1iAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cBBwMO DhglKe4AAAEsSURBVCjPbZNBboQwDEV/Cd4X9QJRThApmn0XYW+Jyf2v0m+HhqDBgiAe9rcTG7QH w/1Vn2Ar8gBb/ocywSN3qK9T3z4eFDB4eApocBpeBs1RSykoJd8gQcm8pGmHXFso3ajnmsqV0TnY DQkOfXUfN5NwaI7AWTVOyEhcu1aHmdWItHddUVUcUgUBCkitu8V6ditHVOVdqzl2EQ1ZVGTbdK0V 7cqn8vWzoU5Q/bF9Y/Y0cRU1xwkys5dJ+Dt6pBDWifcNQml8Gh2JVmPSoQzo7en0grswkxrUGYJ7 0hSxxAGr7ZMwYcHIzprpi7TENEE1xtiYxixRlCfPBsUUrwHD7uGIwATrbnODJcVrPpVn3hxiGloe m/S+z3CtuzUSMo83N4DPH+F0evwR3P4A2k+75838OKQAAAAASUVORK5CYII= Date: Tue, 12 Jun 2018 13:24:48 +0800 In-Reply-To: <63BD94B3-7CF7-41E1-9125-707935CF53C8@gnu.org> (Eli Zaretskii's message of "Tue, 12 Jun 2018 08:04:20 +0300") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (macOS 10.12.6) MIME-Version: 1.0 Content-Type: text/plain 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 (-) On 2018-06-12 08:04 +0300, Eli Zaretskii wrote: > Can you attach a debugger and produce a backtrace? The Lisp backtrace > is also important, and the xbacktrace command in the debugger should > produce it. Thanks. Will see what I can do. Attaching gdb to processes is becoming more difficult with new macOS. Leo From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Jun 2018 08:47:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: moreinfo To: Eli Zaretskii Cc: 31793@debbugs.gnu.org Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.15287931869078 (code B ref 31793); Tue, 12 Jun 2018 08:47:01 +0000 Received: (at 31793) by debbugs.gnu.org; 12 Jun 2018 08:46:26 +0000 Received: from localhost ([127.0.0.1]:44044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSewc-0002MM-GW for submit@debbugs.gnu.org; Tue, 12 Jun 2018 04:46:26 -0400 Received: from mail-pg0-f54.google.com ([74.125.83.54]:44481) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fSewa-0002M9-C2 for 31793@debbugs.gnu.org; Tue, 12 Jun 2018 04:46:25 -0400 Received: by mail-pg0-f54.google.com with SMTP id p21-v6so11120637pgd.11 for <31793@debbugs.gnu.org>; Tue, 12 Jun 2018 01:46:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version; bh=YNigTRpd9ixWtkkk5FHD+JUduFjlYC7uEJIsgvVY418=; b=S4FnhyUa4w1jN0P+Uvr9dSiQ3aPWCjMz1NBQMrUwu44e5wXXPJChuRZB23oW/1oOQ4 gvA4hGBpEvNg7t9UKbjrBEuy7TiftAl/prU4COk1fOOTATWvOCV/TGxKOuQJ8eZOcUmE OLsWrTl9Jqp+Y2ummf8/Rk1dxZKJ87uuUc4xNazVdsRo/EePLDwANsdCozykEcZyR8m9 td1kWhKQsdCEzoOMBDSUa0FFn1gBLLOOkufDq7hk1zvn1NTrVFjGEBPuCPs2ujAd4kK0 O4791sv2F20mrY1ROgKBzeTDQ+PvYbEPn8tqE3RMks5/1Hd6ePEVHllq+rAAlvY4CctE Jeyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:face:date :in-reply-to:message-id:user-agent:mime-version; bh=YNigTRpd9ixWtkkk5FHD+JUduFjlYC7uEJIsgvVY418=; b=bF6IE8VdgCtVsc50JG3T/8kRWiPStBHxg9jSfA20YuNXjoEEVqMciQPfHVKzIzGpu+ rPcolUHT3+ErVtds6IVWWRk/khddWML2NBGoRk+jbi1iDtNDoqe375KrosdxWUGH/dkx a9H6XiWX9hdRcgjyln9WHZjhiEvkJld5TgOM8oIyye8Yzazw75OjAFqyBqXKT2EebFra sGzZUs40QAjE2PLkXlv+xfnk4U5cbw7ZWuQwos7GLnnG7AW4Jx0X8BEeSR1XziXh7N7N ziKb5Q3q4zR7+dojfOxWBctFamEcppgojYPp9Awm51rI4YJkXqqBrM9LaconSCb/Z4eX yo1w== X-Gm-Message-State: APt69E04SfP5MAxXmJihvPthrQL2eo04+s0QiblmWU8aYgv8PS0Ejr7C g1CEuXDTKDDgHJdcEfz2K4Ay8A== X-Google-Smtp-Source: ADUXVKLCKo6A5Ughr1y/vzR8ITJZaOAffPFAW40HuzIpGOtvq5flR++362AToZoanhJWqwC02nj+Sw== X-Received: by 2002:a62:c809:: with SMTP id z9-v6mr2836043pff.5.1528793178170; Tue, 12 Jun 2018 01:46:18 -0700 (PDT) Received: from Zeuss-MacBook-Air.local ([119.94.238.191]) by smtp.gmail.com with ESMTPSA id h12-v6sm926861pfi.114.2018.06.12.01.46.13 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Jun 2018 01:46:16 -0700 (PDT) From: Leo Liu References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoAgMAAADxkFD+AAAADFBMVEUvT09qWs3/pQD///+J kUVcAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cBBwMLOd3veKQA AACuSURBVBjTldE9CgIxEAXgB+lEyFUC2wo5ikdZ8DSypxhMY7H9VuIVwlqkGRgnm59VsHGafIQ3 CZlAtmKIRaHETgYa12lqvEsPYKf8wXHsPGfqPaUM0g9aJPKFXkmNQmSDqwzz4Fpgpz+6WAPY2z5o uPJJpu0uypcl4nyCibMLQ8lCiVjayLoQvw5LsVKQuHPRR958HZbOcVsKeepcLxpByjycGvnKmY+c MBvrtyjfe0vmuLvdq/kAAAAASUVORK5CYII= Date: Tue, 12 Jun 2018 16:46:11 +0800 In-Reply-To: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> (Eli Zaretskii's message of "Tue, 12 Jun 2018 08:21:27 +0300") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (macOS 10.12.6) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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" --=-=-= Content-Type: text/plain On 2018-06-12 08:21 +0300, Eli Zaretskii wrote: > Ugh, macOS... This means no xbacktrace and no other GDB > wizardry... Indeed. > Well, I think the most important thing is to produce a Lisp > backtrace from the error. Turns out 26.1 cannot load a version of python.el (by dave love) that I have in my site-lisp. 1. emacs -Q -l python.el 2. M-x python-mode ,----[ error ] | Variable binding depth exceeds max-specpdl-size | Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Variable binding depth exceeds max-specpdl-size") `---- Gnus was just loading python-mode to fontify some code in an article. --=-=-= Content-Type: application/emacs-lisp Content-Disposition: attachment; filename=python.el Content-Transfer-Encoding: quoted-printable Content-Description: python.el ;;; python.el --- silly walks for Python ;; Copyright (C) 2003-2013 Free Software Foundation, Inc. ;; Author: Dave Love ;; Maintainer: Leo Liu ;; Created: Nov 2003 ;; Keywords: languages ;; This file was part of GNU Emacs. ;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . ;;; Commentary: ;; Major mode for editing Python, with support for inferior processes. ;; There is another Python mode, python-mode.el: ;; http://launchpad.net/python-mode ;; used by XEmacs, and originally maintained with Python. ;; That isn't covered by an FSF copyright assignment (?), unlike this ;; code, and seems not to be well-maintained for Emacs (though I've ;; submitted fixes). This mode is rather simpler and is better in ;; other ways. In particular, using the syntax functions with text ;; properties maintained by font-lock makes it more correct with ;; arbitrary string and comment contents. ;; This doesn't implement all the facilities of python-mode.el. Some ;; just need doing, e.g. catching exceptions in the inferior Python ;; buffer (but see M-x pdb for debugging). [Actually, the use of ;; `compilation-shell-minor-mode' now is probably enough for that.] ;; Others don't seem appropriate. For instance, ;; `forward-into-nomenclature' should be done separately, since it's ;; not specific to Python, and I've installed a minor mode to do the ;; job properly in Emacs 23. [CC mode 5.31 contains an incompatible ;; feature, `subword-mode' which is intended to have a similar ;; effect, but actually only affects word-oriented keybindings.] ;; Other things seem more natural or canonical here, e.g. the ;; {beginning,end}-of-defun implementation dealing with nested ;; definitions, and the inferior mode following `cmuscheme'. (The ;; inferior mode can find the source of errors from ;; `python-send-region' & al via `compilation-shell-minor-mode'.) ;; There is (limited) symbol completion using lookup in Python and ;; Eldoc support also using the inferior process. Successive TABs ;; cycle between possible indentations for the line. ;; Even where it has similar facilities, this mode is incompatible ;; with python-mode.el in some respects. For instance, various key ;; bindings are changed to obey Emacs conventions. ;; TODO: See various Fixmes below. ;; Fixme: This doesn't support (the nascent) Python 3 . ;;; Code: (require 'comint) (require 'ansi-color) (eval-when-compile (require 'compile)) (defgroup python nil "Silly walks in the Python language." :group 'languages :version "22.1" :link '(emacs-commentary-link "python")) ;;;###autoload (add-to-list 'interpreter-mode-alist (cons (purecopy "jython") 'jython-mode= )) ;;;###autoload (add-to-list 'interpreter-mode-alist (cons (purecopy "python") 'python-mode= )) ;;;###autoload (add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode)) ;;;; Font lock (defvar python-font-lock-keywords `(,(rx symbol-start ;; From v 2.7 reference, =C2=A7 keywords. ;; def and class dealt with separately below (or "and" "as" "assert" "break" "continue" "del" "elif" "else" "except" "exec" "finally" "for" "from" "global" "if" "import" "in" "is" "lambda" "not" "or" "pass" "print" "raise" "return" "try" "while" "with" "yield" ;; Not real keywords, but close enough to be fontified as such "self" "True" "False" ;; Python 3 "nonlocal") symbol-end) (,(rx symbol-start "None" symbol-end) ; see =C2=A7 Keywords in 2.7 manu= al . font-lock-constant-face) ;; Definitions (,(rx symbol-start (group "class") (1+ space) (group (1+ (or word ?_)))) (1 font-lock-keyword-face) (2 font-lock-type-face)) (,(rx symbol-start (group "def") (1+ space) (group (1+ (or word ?_)))) (1 font-lock-keyword-face) (2 font-lock-function-name-face)) ;; Top-level assignments are worth highlighting. (,(rx line-start (group (1+ (or word ?_))) (0+ space) (opt (or "+" "-" "*" "**" "/" "//" "&" "%" "|" "^" "<<" ">>")) "=3D") (1 font-lock-variable-name-face)) ;; Decorators. (,(rx line-start (* (any " \t")) (group "@" (1+ (or word ?_)) (0+ "." (1+ (or word ?_))))) (1 font-lock-type-face)) ;; Built-ins. (The next three blocks are from ;; `__builtin__.__dict__.keys()' in Python 2.7) These patterns ;; are debatable, but they at least help to spot possible ;; shadowing of builtins. (,(rx symbol-start (or ;; exceptions "ArithmeticError" "AssertionError" "AttributeError" "BaseException" "DeprecationWarning" "EOFError" "EnvironmentError" "Exception" "FloatingPointError" "FutureWarning" "GeneratorExit" "IOError" "ImportError" "ImportWarning" "IndentationError" "IndexError" "KeyError" "KeyboardInterrupt" "LookupError" "MemoryError" "NameError" "NotImplemented" "NotImplementedError" "OSError" "OverflowError" "PendingDeprecationWarning" "ReferenceError" "RuntimeError" "RuntimeWarning" "StandardError" "StopIteration" "SyntaxError" "SyntaxWarning" "SystemError" "SystemExit" "TabError" "TypeError" "UnboundLocalError" "UnicodeDecodeError" "UnicodeEncodeError" "UnicodeError" "UnicodeTranslateError" "UnicodeWarning" "UserWarning" "ValueError" "Warning" "ZeroDivisionError" ;; Python 2.7 "BufferError" "BytesWarning" "WindowsError") symbol-end) . font-lock-type-face) (,(rx (or line-start (not (any ". \t"))) (* (any " \t")) symbol-start (group (or ;; callable built-ins, fontified when not appearing as ;; object attributes "abs" "all" "any" "apply" "basestring" "bool" "buffer" "callable" "chr" "classmethod" "cmp" "coerce" "compile" "complex" "copyright" "credits" "delattr" "dict" "dir" "divmod" "enumerate" "eval" "execfile" "exit" "file" "filter" "float" "frozenset" "getattr" "globals" "hasattr" "hash" "help" "hex" "id" "input" "int" "intern" "isinstance" "issubclass" "iter" "len" "license" "list" "locals" "long" "map" "max" "min" "object" "oct" "open" "ord" "pow" "property" "quit" "range" "raw_input" "reduce" "reload" "repr" "reversed" "round" "set" "setattr" "slice" "sorted" "staticmethod" "str" "sum" "super" "tuple" "type" "unichr" "unicode" "vars" "xrange" "zip" ;; Python 2.7. "bin" "bytearray" "bytes" "format" "memoryview" "next" "print" )) symbol-end) (1 font-lock-builtin-face)) (,(rx symbol-start (or ;; other built-ins "True" "False" "None" "Ellipsis" "_" "__debug__" "__doc__" "__import__" "__name__" "__package__") symbol-end) . font-lock-builtin-face))) (defconst python-syntax-propertize-function ;; Make outer chars of matching triple-quote sequences into generic ;; string delimiters. Fixme: Is there a better way? ;; First avoid a sequence preceded by an odd number of backslashes. (syntax-propertize-rules (;; =C2=A1Backrefs don't work in syntax-propertize-rules! (concat "\\(?:\\([RUru]\\)[Rr]?\\|\\(?:\\=3D\\|[^\\]\\)\\(?:\\\\.\\)*\\= )?" ;Prefix. "\\(?:\\('\\)'\\('\\)\\|\\(?2:\"\\)\"\\(?3:\"\\)\\)") (3 (ignore (python-quote-syntax)))) ;; This doesn't really help. ;;((rx (and ?\\ (group ?\n))) (1 " ")) )) (defun python-quote-syntax () "Put `syntax-table' property correctly on triple quote. Used for syntactic keywords. N is the match number (1, 2 or 3)." ;; Given a triple quote, we have to check the context to know ;; whether this is an opening or closing triple or whether it's ;; quoted anyhow, and should be ignored. (For that we need to do ;; the same job as `syntax-ppss' to be correct and it seems to be OK ;; to use it here despite initial worries.) We also have to sort ;; out a possible prefix -- well, we don't _have_ to, but I think it ;; should be treated as part of the string. ;; Test cases: ;; ur"""ar""" x=3D'"' # """ ;; x =3D ''' """ ' a ;; ''' ;; x '"""' x """ \"""" x (save-excursion (goto-char (match-beginning 0)) (let ((syntax (save-match-data (syntax-ppss)))) (cond ((eq t (nth 3 syntax)) ; after unclosed fence ;; Consider property for the last char if in a fenced string. (goto-char (nth 8 syntax)) ; fence position (skip-chars-forward "uUrR") ; skip any prefix ;; Is it a matching sequence? (if (eq (char-after) (char-after (match-beginning 2))) (put-text-property (match-beginning 3) (match-end 3) 'syntax-table (string-to-syntax "|")))) ((match-end 1) ;; Consider property for initial char, accounting for prefixes. (put-text-property (match-beginning 1) (match-end 1) 'syntax-table (string-to-syntax "|"))) (t ;; Consider property for initial char, accounting for prefixes. (put-text-property (match-beginning 2) (match-end 2) 'syntax-table (string-to-syntax "|")))) ))) ;; This isn't currently in `font-lock-defaults' as probably not worth ;; it -- we basically only mess with a few normally-symbol characters. ;; (defun python-font-lock-syntactic-face-function (state) ;; "`font-lock-syntactic-face-function' for Python mode. ;; Returns the string or comment face as usual, with side effect of putting ;; a `syntax-table' property on the inside of the string or comment which is ;; the standard syntax table." ;; (if (nth 3 state) ;; (save-excursion ;; (goto-char (nth 8 state)) ;; (condition-case nil ;; (forward-sexp) ;; (error nil)) ;; (put-text-property (1+ (nth 8 state)) (1- (point)) ;; 'syntax-table (standard-syntax-table)) ;; 'font-lock-string-face) ;; (put-text-property (1+ (nth 8 state)) (line-end-position) ;; 'syntax-table (standard-syntax-table)) ;; 'font-lock-comment-face)) ;;;; Keymap and syntax (defvar python-mode-map (let ((map (make-sparse-keymap))) ;; Mostly taken from python-mode.el. (define-key map ":" 'python-electric-colon) (define-key map "\177" 'python-backspace) (define-key map "\C-c<" 'python-shift-left) (define-key map "\C-c>" 'python-shift-right) (define-key map "\C-c\C-k" 'python-mark-block) (define-key map "\C-c\C-d" 'python-pdbtrack-toggle-stack-tracking) (define-key map "\C-c\C-n" 'python-next-statement) (define-key map "\C-c\C-p" 'python-previous-statement) (define-key map "\C-c\C-u" 'python-beginning-of-block) (define-key map "\C-c\C-f" 'python-describe-symbol) (define-key map "\C-c\C-w" 'python-check) (define-key map "\C-c\C-v" 'python-check) ; a la sgml-mode (define-key map "\C-c\C-s" 'python-send-string) (define-key map [?\C-\M-x] 'python-send-defun) (define-key map "\C-c\C-r" 'python-send-region) (define-key map "\C-c\M-r" 'python-send-region-and-go) (define-key map "\C-c\C-c" 'python-send-buffer) (define-key map "\C-c\C-z" 'python-switch-to-python) (define-key map "\C-c\C-m" 'python-load-file) (define-key map "\C-c\C-l" 'python-load-file) ; a la cmuscheme (substitute-key-definition 'complete-symbol 'completion-at-point map global-map) (define-key map "\C-c\C-i" 'python-find-imports) (define-key map "\C-c\C-t" 'python-expand-template) (easy-menu-define python-menu map "Python Mode menu" `("Python" :help "Python-specific Features" ["Shift region left" python-shift-left :active mark-active :help "Shift by a single indentation step"] ["Shift region right" python-shift-right :active mark-active :help "Shift by a single indentation step"] "-" ["Mark block" python-mark-block :help "Mark innermost block around point"] ["Mark def/class" mark-defun :help "Mark innermost definition around point"] "-" ["Start of block" python-beginning-of-block :help "Go to start of innermost definition around point"] ["End of block" python-end-of-block :help "Go to end of innermost definition around point"] ["Start of def/class" beginning-of-defun :help "Go to start of innermost definition around point"] ["End of def/class" end-of-defun :help "Go to end of innermost definition around point"] "-" ("Templates..." :help "Expand templates for compound statements" :filter (lambda (&rest junk) (abbrev-table-menu python-mode-abbrev-table))) "-" ["Start interpreter" run-python :help "Run `inferior' Python in separate buffer"] ["Import/reload file" python-load-file :help "Load into inferior Python session"] ["Eval buffer" python-send-buffer :help "Evaluate buffer en bloc in inferior Python session"] ["Eval region" python-send-region :active mark-active :help "Evaluate region en bloc in inferior Python session"] ["Eval def/class" python-send-defun :help "Evaluate current definition in inferior Python session"] ["Switch to interpreter" python-switch-to-python :help "Switch to inferior Python buffer"] ["Set default process" python-set-proc :help "Make buffer's inferior process the default" :active (buffer-live-p python-buffer)] ["Check file" python-check :help "Run pychecker"] ["Debugger" pdb :help "Run pdb under GUD"] "-" ["Help on symbol" python-describe-symbol :help "Use pydoc on symbol at point"] ["Complete symbol" completion-at-point :help "Complete (qualified) symbol before point"] ["Find function" python-find-function :help "Try to find source definition of function at point"] ["Update imports" python-find-imports :help "Update list of top-level imports for completion"])) map)) ;; Fixme: add toolbar stuff for useful things like symbol help, send ;; region, at least. (Shouldn't be specific to Python, obviously.) ;; eric has items including: (un)indent, (un)comment, restart script, ;; run script, debug script; also things for profiling, unit testing. (defvar python-mode-syntax-table (let ((table (make-syntax-table))) ;; Give punctuation syntax to ASCII that normally has symbol ;; syntax or has word syntax and isn't a letter. (let ((symbol (string-to-syntax "_")) (sst (standard-syntax-table))) (dotimes (i 128) (unless (=3D i ?_) (if (equal symbol (aref sst i)) (modify-syntax-entry i "." table))))) (modify-syntax-entry ?$ "." table) (modify-syntax-entry ?% "." table) ;; exceptions (modify-syntax-entry ?# "<" table) (modify-syntax-entry ?\n ">" table) (modify-syntax-entry ?' "\"" table) (modify-syntax-entry ?` "$" table) table)) ;;;; Utility stuff (defsubst python-in-string/comment () "Return non-nil if point is in a Python literal (a comment or string)." ;; We don't need to save the match data. (nth 8 (syntax-ppss))) (defconst python-space-backslash-table (let ((table (copy-syntax-table python-mode-syntax-table))) (modify-syntax-entry ?\\ " " table) table) "`python-mode-syntax-table' with backslash given whitespace syntax.") (defun python-skip-comments/blanks (&optional backward) "Skip comments and blank lines. BACKWARD non-nil means go backwards, otherwise go forwards. Backslash is treated as whitespace so that continued blank lines are skipped. Doesn't move out of comments -- should be outside or at end of line." (let ((arg (if backward ;; If we're in a comment (including on the trailing ;; newline), forward-comment doesn't move backwards out ;; of it. Don't set the syntax table round this bit! (let ((syntax (syntax-ppss))) (if (nth 4 syntax) (goto-char (nth 8 syntax))) (- (point-max))) (point-max)))) (with-syntax-table python-space-backslash-table (forward-comment arg)))) (defun python-backslash-continuation-line-p () "Non-nil if preceding line ends with backslash that is not in a comment." (and (eq ?\\ (char-before (line-end-position 0))) (not (syntax-ppss-context (syntax-ppss))))) (defun python-continuation-line-p () "Return non-nil if current line continues a previous one. The criteria are that the previous line ends in a backslash outside comments and strings, or that point is within brackets/parens." (or (python-backslash-continuation-line-p) (let ((depth (syntax-ppss-depth (save-excursion ; syntax-ppss with arg changes point (syntax-ppss (line-beginning-position)))))) (or (> depth 0) (if (< depth 0) ; Unbalanced brackets -- act locally (save-excursion (condition-case () (progn (backward-up-list) t) ; actually within brackets (error nil)))))))) (defun python-comment-line-p () "Return non-nil if and only if current line has only a comment." (save-excursion (end-of-line) (when (eq 'comment (syntax-ppss-context (syntax-ppss))) (back-to-indentation) (looking-at (rx (or (syntax comment-start) line-end)))))) (defun python-blank-line-p () "Return non-nil if and only if current line is blank." (save-excursion (beginning-of-line) (looking-at "\\s-*$"))) (defun python-beginning-of-string () "Go to beginning of string around point. Do nothing if not in string." (let ((state (syntax-ppss))) (when (eq 'string (syntax-ppss-context state)) (goto-char (nth 8 state))))) (defun python-open-block-statement-p (&optional bos) "Return non-nil if statement at point opens a block. BOS non-nil means point is known to be at beginning of statement." (save-excursion (unless bos (python-beginning-of-statement)) (looking-at (rx (and (or "if" "else" "elif" "while" "for" "def" "class" "try" "except" "finally" "with") symbol-end))))) (defun python-close-block-statement-p (&optional bos) "Return non-nil if current line is a statement closing a block. BOS non-nil means point is at beginning of statement. The criteria are that the line isn't a comment or in string and starts with keyword `raise', `break', `continue' or `pass'." (save-excursion (unless bos (python-beginning-of-statement)) (back-to-indentation) (looking-at (rx (or "return" "raise" "break" "continue" "pass") symbol-end)))) (defun python-outdent-p () "Return non-nil if current line should outdent a level." (save-excursion (back-to-indentation) (and (looking-at (rx (and (or "else" "finally" "except" "elif") symbol-end))) (not (python-in-string/comment)) ;; Ensure there's a previous statement and move to it. (zerop (python-previous-statement)) (not (python-close-block-statement-p t)) ;; Fixme: check this (not (python-open-block-statement-p))))) ;;;; Indentation. (defcustom python-indent 4 "Number of columns for a unit of indentation in Python mode. See also `\\[python-guess-indent]'" :group 'python :type 'integer) (put 'python-indent 'safe-local-variable 'integerp) (defcustom python-guess-indent t "Non-nil means Python mode guesses `python-indent' for the buffer." :type 'boolean :group 'python) (defcustom python-indent-string-contents t "Non-nil means indent contents of multi-line strings together. This means indent them the same as the preceding non-blank line. Otherwise preserve their indentation. This only applies to `doc' strings, i.e. those that form statements; the indentation is preserved in others." :type '(choice (const :tag "Align with preceding" t) (const :tag "Preserve indentation" nil)) :group 'python) (defcustom python-honour-comment-indentation nil "Non-nil means indent relative to preceding comment line. Only do this for comments where the leading comment character is followed by space. This doesn't apply to comment lines, which are always indented in lines with preceding comments." :type 'boolean :group 'python) (defcustom python-continuation-offset 4 "Number of columns of additional indentation for continuation lines. Continuation lines follow a backslash-terminated line starting a statement." :group 'python :type 'integer) (defcustom python-pdbtrack-do-tracking-p t "Controls whether the pdbtrack feature is enabled or not. When non-nil, pdbtrack is enabled in all comint-based buffers, e.g. shell interaction buffers and the *Python* buffer. When using pdb to debug a Python program, pdbtrack notices the pdb prompt and presents the line in the source file where the program is stopped in a pop-up buffer. It's similar to what gud-mode does for debugging C programs with gdb, but without having to restart the program." :type 'boolean :group 'python) (make-variable-buffer-local 'python-pdbtrack-do-tracking-p) (defcustom python-pdbtrack-minor-mode-string " PDB" "Minor-mode sign to be displayed when pdbtrack is active." :type 'string :group 'python) ;; Add a designator to the minor mode strings (or (assq 'python-pdbtrack-is-tracking-p minor-mode-alist) (push '(python-pdbtrack-is-tracking-p python-pdbtrack-minor-mode-string) minor-mode-alist)) (defcustom python-shell-prompt-alist '(("ipython" . "^In \\[[0-9]+\\]: *") (t . "^>>> ")) "Alist of Python input prompts. Each element has the form (PROGRAM . REGEXP), where PROGRAM is the value of `python-python-command' for the python process and REGEXP is a regular expression matching the Python prompt. PROGRAM can also be t, which specifies the default when no other element matches `python-python-command'." :type 'string :group 'python :version "24.1") (defcustom python-shell-continuation-prompt-alist '(("ipython" . "^ [.][.][.]+: *") (t . "^[.][.][.] ")) "Alist of Python continued-line prompts. Each element has the form (PROGRAM . REGEXP), where PROGRAM is the value of `python-python-command' for the python process and REGEXP is a regular expression matching the Python prompt for continued lines. PROGRAM can also be t, which specifies the default when no other element matches `python-python-command'." :type 'string :group 'python :version "24.1") (defvar python-pdbtrack-is-tracking-p nil) (defconst python-pdbtrack-stack-entry-regexp "^> \\(.*\\)(\\([0-9]+\\))\\([?a-zA-Z0-9_<>]+\\)()" "Regular expression pdbtrack uses to find a stack trace entry.") (defconst python-pdbtrack-input-prompt "\n[(<]*[Ii]?[Pp]db[>)]+ " "Regular expression pdbtrack uses to recognize a pdb prompt.") (defconst python-pdbtrack-track-range 10000 "Max number of characters from end of buffer to search for stack entry.") (defun python-guess-indent () "Guess step for indentation of current buffer. Set `python-indent' locally to the value guessed." (interactive) (save-excursion (save-restriction (widen) (goto-char (point-min)) (let (done indent) (while (and (not done) (not (eobp))) (when (and (re-search-forward (rx ?: (0+ space) (or (syntax comment-start) line-end)) nil 'move) (python-open-block-statement-p)) (save-excursion (python-beginning-of-statement) (let ((initial (current-indentation))) (if (zerop (python-next-statement)) (setq indent (- (current-indentation) initial))) (if (and indent (>=3D indent 2) (<=3D indent 8)) ; sanity check (setq done t)))))) (when done (when (/=3D indent (default-value 'python-indent)) (set (make-local-variable 'python-indent) indent) (unless (=3D tab-width python-indent) (setq indent-tabs-mode nil))) indent))))) ;; Alist of possible indentations and start of statement they would ;; close. Used in indentation cycling (below). (defvar python-indent-list nil "Internal use.") ;; Length of the above (defvar python-indent-list-length nil "Internal use.") ;; Current index into the alist. (defvar python-indent-index nil "Internal use.") (defun python-calculate-indentation () "Calculate Python indentation for line at point." (setq python-indent-list nil python-indent-list-length 1) (save-excursion (beginning-of-line) (let ((syntax (syntax-ppss)) start) (cond ((eq 'string (syntax-ppss-context syntax)) ; multi-line string (if (not python-indent-string-contents) (current-indentation) ;; Only respect `python-indent-string-contents' in doc ;; strings (defined as those which form statements). (if (not (save-excursion (python-beginning-of-statement) (looking-at (rx (or (syntax string-delimiter) (syntax string-quote)))))) (current-indentation) ;; Find indentation of preceding non-blank line within string. (setq start (nth 8 syntax)) (forward-line -1) (while (and (< start (point)) (looking-at "\\s-*$")) (forward-line -1)) (current-indentation)))) ((python-continuation-line-p) ; after backslash, or bracketed (let* ((point (point)) (open-start (cadr syntax)) (closing (and open-start (progn (back-to-indentation) (eq (char-after) (cdr-safe (syntax-after open-start)))))) (backslash (python-backslash-continuation-line-p))) (if open-start ;; Inside bracketed expression. (progn (goto-char (1+ open-start)) (if (and (looking-at-p "\\s-*$") closing) (current-indentation) ;; Look for first item in list (preceding point) and align ;; with it, if found. (if (with-syntax-table python-space-backslash-table (let ((parse-sexp-ignore-comments t)) (condition-case () (progn (forward-sexp) (backward-sexp) (< (point) point)) (error nil)))) ;; Extra level if we're backslash-continued or ;; following a key. (if backslash (+ python-indent (current-column)) (current-column)) ;; Otherwise indent relative to statement start, one ;; level per bracketing level. (goto-char (1+ open-start)) (python-beginning-of-statement) (+ (current-indentation) (* (car syntax) python-indent) (if (python-open-block-statement-p t) python-indent 0))))) ;; Otherwise backslash-continued. (forward-line -1) (if (python-continuation-line-p) ;; We're past first continuation line. Align with ;; previous line. (current-indentation) ;; First continuation line. Indent one step, with an ;; extra one if statement opens a block. (python-beginning-of-statement) (+ (current-indentation) python-continuation-offset (if (python-open-block-statement-p t) python-indent 0)))))) ((bobp) 0) ;; Fixme: Like python-mode.el; not convinced by this. ((looking-at (rx (0+ space) (syntax comment-start) (not (any " \t\n")))) ; non-indentable comment (current-indentation)) ((and python-honour-comment-indentation ;; Back over whitespace, newlines, non-indentable comments. (catch 'done (while (cond ((bobp) nil) ((not (forward-comment -1)) nil) ; not at comment start ;; Now at start of comment -- trailing one? ((/=3D (current-column) (current-indentation)) nil) ;; Indentable comment, like python-mode.el? ((and (looking-at (rx (syntax comment-start) (or space line-end))) (/=3D 0 (current-column))) (throw 'done (current-column))) ;; Else skip it (loop). (t)))))) (t (python-indentation-levels) ;; Prefer to indent comments with an immediately-following ;; statement, e.g. ;; ... ;; # ... ;; def ... (when (and (> python-indent-list-length 1) (python-comment-line-p)) (forward-line) (unless (python-comment-line-p) (let ((elt (assq (current-indentation) python-indent-list))) (setq python-indent-list (nconc (delete elt python-indent-list) (list elt)))))) (caar (last python-indent-list))))))) ;;;; Cycling through the possible indentations with successive TABs. ;; These don't need to be buffer-local since they're only relevant ;; during a cycle. (defun python-initial-text () "Text of line following indentation and ignoring any trailing comment." (save-excursion (buffer-substring (progn (back-to-indentation) (point)) (progn (end-of-line) (forward-comment -1) (point))))) (defconst python-block-pairs '(("else" "if" "elif" "while" "for" "try" "except") ("elif" "if" "elif") ("except" "try" "except") ("finally" "else" "try" "except")) "Alist of keyword matches. The car of an element is a keyword introducing a statement which can close a block opened by a keyword in the cdr.") (defun python-first-word () "Return first word (actually symbol) on the line." (save-excursion (back-to-indentation) (current-word t))) (defun python-indentation-levels () "Return a list of possible indentations for this line. It is assumed not to be a continuation line or in a multi-line string. Includes the default indentation and those which would close all enclosing blocks. Elements of the list are actually pairs: \(INDENTATION . TEXT), where TEXT is the initial text of the corresponding block opening (or nil)." (save-excursion (let ((initial "") levels indent) ;; Only one possibility immediately following a block open ;; statement, assuming it doesn't have a `suite' on the same line. (cond ((save-excursion (and (python-previous-statement) (python-open-block-statement-p t) (setq indent (current-indentation)) ;; Check we don't have something like: ;; if ...: ... (if (progn (python-end-of-statement) (python-skip-comments/blanks t) (eq ?: (char-before))) (setq indent (+ python-indent indent))))) (push (cons indent initial) levels)) ;; Only one possibility for comment line immediately following ;; another. ((save-excursion (when (python-comment-line-p) (forward-line -1) (if (python-comment-line-p) (push (cons (current-indentation) initial) levels))))) ;; Fixme: Maybe have a case here which indents (only) first ;; line after a lambda. (t (let ((start (car (assoc (python-first-word) python-block-pairs)))) (python-previous-statement) ;; Is this a valid indentation for the line of interest? (unless (or (if start ; potentially only outdentable ;; Check for things like: ;; if ...: ... ;; else ...: ;; where the second line need not be outdented. (not (member (python-first-word) (cdr (assoc start python-block-pairs))))) ;; Not sensible to indent to the same level as ;; previous `return' &c. (python-close-block-statement-p)) (push (cons (current-indentation) (python-initial-text)) levels)) (while (python-beginning-of-block) (when (or (not start) (member (python-first-word) (cdr (assoc start python-block-pairs)))) (push (cons (current-indentation) (python-initial-text)) levels)))))) (prog1 (or levels (setq levels '((0 . "")))) (setq python-indent-list levels python-indent-list-length (length python-indent-list)))))) ;; This is basically what `python-indent-line' would be if we didn't ;; do the cycling. (defun python-indent-line-1 (&optional leave) "Subroutine of `python-indent-line'. Does non-repeated indentation. LEAVE non-nil means leave indentation if it is valid, i.e. one of the positions returned by `python-calculate-indentation'." (let ((target (python-calculate-indentation)) (pos (- (point-max) (point)))) (if (or (=3D target (current-indentation)) ;; Maybe keep a valid indentation. (and leave python-indent-list (assq (current-indentation) python-indent-list))) (if (< (current-column) (current-indentation)) (back-to-indentation)) (beginning-of-line) (delete-horizontal-space) (indent-to target) (if (> (- (point-max) pos) (point)) (goto-char (- (point-max) pos)))))) (defun python-indent-line () "Indent current line as Python code. When invoked via `indent-for-tab-command', cycle through possible indentations for current line. The cycle is broken by a command different from `indent-for-tab-command', i.e. successive TABs do the cycling." (interactive) (if (and (eq this-command 'indent-for-tab-command) (eq last-command this-command)) (if (=3D 1 python-indent-list-length) (message "Sole indentation") (progn (setq python-indent-index (% (1+ python-indent-index) python-indent-list-length)) (beginning-of-line) (delete-horizontal-space) (indent-to (car (nth python-indent-index python-indent-list))) (if (python-block-end-p) (let ((text (cdr (nth python-indent-index python-indent-list)))) (if text (message "Closes: %s" text)))))) (python-indent-line-1) (setq python-indent-index (1- python-indent-list-length)))) (defun python-indent-region (start end) "`indent-region-function' for Python. Leaves validly-indented lines alone, i.e. doesn't indent to another valid position." (save-excursion (goto-char end) (setq end (point-marker)) (goto-char start) (or (bolp) (forward-line 1)) (while (< (point) end) (or (and (bolp) (eolp)) (python-indent-line-1 t)) (forward-line 1)) (move-marker end nil))) (defun python-block-end-p () "Non-nil if this is a line in a statement closing a block, or a blank line indented to where it would close a block." (and (not (python-comment-line-p)) (or (python-close-block-statement-p t) (< (current-indentation) (save-excursion (python-previous-statement) (current-indentation)))))) ;;;; Movement. ;; Fixme: Define {for,back}ward-sexp-function? Maybe skip units like ;; block, statement, depending on context. (defun python-beginning-of-defun () "`beginning-of-defun-function' for Python. Finds beginning of innermost nested class or method definition. Returns the name of the definition found at the end, or nil if reached start of buffer." (let ((ci (current-indentation)) (def-re (rx line-start (0+ space) (or "def" "class") (1+ space) (group (1+ (or word (syntax symbol)))))) found lep) ;; def-line (if (python-comment-line-p) (setq ci most-positive-fixnum)) (while (and (not (bobp)) (not found)) ;; Treat bol at beginning of function as outside function so ;; that successive C-M-a makes progress backwards. ;;(setq def-line (looking-at def-re)) (unless (bolp) (end-of-line)) (setq lep (line-end-position)) (if (and (re-search-backward def-re nil 'move) ;; Must be less indented or matching top level, or ;; equally indented if we started on a definition line. (let ((in (current-indentation))) (or (and (zerop ci) (zerop in)) (=3D lep (line-end-position)) ; on initial line ;; Not sure why it was like this -- fails in case of ;; last internal function followed by first ;; non-def statement of the main body. ;; (and def-line (=3D in ci)) (=3D in ci) (< in ci))) (not (python-in-string/comment))) (setq found t))) found)) (defun python-end-of-defun () "`end-of-defun-function' for Python. Finds end of innermost nested class or method definition." (let ((orig (point)) (pattern (rx line-start (0+ space) (or "def" "class") space))) ;; Go to start of current block and check whether it's at top ;; level. If it is, and not a block start, look forward for ;; definition statement. (when (python-comment-line-p) (end-of-line) (forward-comment most-positive-fixnum)) (if (not (python-open-block-statement-p)) (python-beginning-of-block)) (if (zerop (current-indentation)) (unless (python-open-block-statement-p) (while (and (re-search-forward pattern nil 'move) (python-in-string/comment))) ; just loop (unless (eobp) (beginning-of-line))) ;; Don't move before top-level statement that would end defun. (end-of-line) (python-beginning-of-defun)) ;; If we got to the start of buffer, look forward for ;; definition statement. (if (and (bobp) (not (looking-at "def\\|class"))) (while (and (not (eobp)) (re-search-forward pattern nil 'move) (python-in-string/comment)))) ; just loop ;; We're at a definition statement (or end-of-buffer). (unless (eobp) (python-end-of-block) ;; Count trailing space in defun (but not trailing comments). (skip-syntax-forward " >") (unless (eobp) ; e.g. missing final newline (beginning-of-line))) ;; Catch pathological cases like this, where the beginning-of-defun ;; skips to a definition we're not in: ;; if ...: ;; ... ;; else: ;; ... # point here ;; ... ;; def ... (if (< (point) orig) (goto-char (point-max))))) (defun python-beginning-of-statement () "Go to the start of current statement and return point. Accounts for continuation lines, multi-line strings, and multi-line bracketed expressions." (while (if (python-backslash-continuation-line-p) (progn (forward-line -1) t) (beginning-of-line) (or (python-beginning-of-string) (python-skip-out)))) (back-to-indentation) (point)) (defun python-skip-out (&optional forward syntax) "Skip out of any nested brackets. Skip forward if FORWARD is non-nil, else backward. If SYNTAX is non-nil it is the state returned by `syntax-ppss' at point. Return non-nil if and only if skipping was done." ;; FIXME: Use syntax-ppss-toplevel-pos. (let ((depth (syntax-ppss-depth (or syntax (syntax-ppss)))) (forward (if forward -1 1))) (unless (zerop depth) (if (> depth 0) ;; Skip forward out of nested brackets. (condition-case () ; beware invalid syntax (progn (backward-up-list (* forward depth)) t) (error nil)) ;; Invalid syntax (too many closed brackets). ;; Skip out of as many as possible. (let (done) (while (condition-case () (progn (backward-up-list forward) (setq done t)) (error nil))) done))))) (defun python-end-of-statement () "Go to the end of the current statement and return point. Usually this is the start of the next line, but if this is a multi-line statement we need to skip over the continuation lines. On a comment line, go to end of line." (end-of-line) (while (let (comment) ;; Move past any enclosing strings and sexps, or stop if ;; we're in a comment. (while (let ((s (syntax-ppss))) (cond ((eq 'comment (syntax-ppss-context s)) (setq comment t) nil) ((eq 'string (syntax-ppss-context s)) ;; Go to start of string and skip it. (let ((pos (point))) (goto-char (nth 8 s)) (condition-case () ; beware invalid syntax (progn (forward-sexp) t) ;; If there's a mismatched string, make sure ;; we still overall move *forward*. (error (goto-char pos) (end-of-line))))) ((python-skip-out t s)))) (end-of-line)) (and (not comment) (not (eobp)) (eq ?\\ (char-before)))) ; Line continued? (end-of-line 2)) ; Try next line. (point)) (defun python-previous-statement (&optional count) "Go to start of previous statement. With argument COUNT, do it COUNT times. Stop at beginning of buffer. Return count of statements left to move." (interactive "p") (unless count (setq count 1)) (if (< count 0) (python-next-statement (- count)) (python-beginning-of-statement) (while (and (> count 0) (not (bobp))) (python-skip-comments/blanks t) (python-beginning-of-statement) (unless (bobp) (setq count (1- count)))) count)) (defun python-next-statement (&optional count) "Go to start of next statement. With argument COUNT, do it COUNT times. Stop at end of buffer. Return count of statements left to move." (interactive "p") (unless count (setq count 1)) (if (< count 0) (python-previous-statement (- count)) (beginning-of-line) (let (bogus) (while (and (> count 0) (not (eobp)) (not bogus)) (python-end-of-statement) (python-skip-comments/blanks) (if (eq 'string (syntax-ppss-context (syntax-ppss))) (setq bogus t) (unless (eobp) (setq count (1- count)))))) count)) (defun python-beginning-of-block (&optional arg) "Go to start of current block. With numeric arg, do it that many times. If ARG is negative, call `python-end-of-block' instead. If point is on the first line of a block, use its outer block. If current statement is in column zero, don't move and return nil. Otherwise return non-nil." (interactive "p") (unless arg (setq arg 1)) (cond ((zerop arg)) ((< arg 0) (python-end-of-block (- arg))) (t (let ((point (point))) (if (or (python-comment-line-p) (python-blank-line-p)) (python-skip-comments/blanks t)) (python-beginning-of-statement) (let ((ci (current-indentation))) (if (zerop ci) (not (goto-char point)) ; return nil ;; Look upwards for less indented statement. (if (catch 'done ;;; This is slower than the below. ;;; (while (zerop (python-previous-statement)) ;;; (when (and (< (current-indentation) ci) ;;; (python-open-block-statement-p t)) ;;; (beginning-of-line) ;;; (throw 'done t))) (while (and (zerop (forward-line -1))) (when (and (< (current-indentation) ci) (not (python-comment-line-p)) ;; Move to beginning to save effort in case ;; this is in string. (progn (python-beginning-of-statement) t) (python-open-block-statement-p t)) (beginning-of-line) (throw 'done t))) (not (goto-char point))) ; Failed -- return nil (python-beginning-of-block (1- arg))))))))) (defun python-end-of-block (&optional arg) "Go to end of current block. With numeric arg, do it that many times. If ARG is negative, call `python-beginning-of-block' instead. If current statement is in column zero and doesn't open a block, don't move and return nil. Otherwise return t." (interactive "p") (unless arg (setq arg 1)) (if (< arg 0) (python-beginning-of-block (- arg)) (while (and (> arg 0) (let* ((point (point)) (_ (if (python-comment-line-p) (python-skip-comments/blanks t))) (ci (current-indentation)) (open (python-open-block-statement-p))) (if (and (zerop ci) (not open)) (not (goto-char point)) (catch 'done (while (zerop (python-next-statement)) (when (or (and open (<=3D (current-indentation) ci)) (< (current-indentation) ci)) (python-skip-comments/blanks t) (beginning-of-line 2) (throw 'done t))))))) (setq arg (1- arg))) (zerop arg))) (defvar python-which-func-length-limit 40 "Non-strict length limit for `python-which-func' output.") (defun python-which-func () (let ((function-name (python-current-defun python-which-func-length-limit= ))) (set-text-properties 0 (length function-name) nil function-name) function-name)) ;;;; Imenu. ;; For possibly speeding this up, here's the top of the ELP profile ;; for rescanning pydoc.py (2.2k lines, 90kb): ;; Function Name Call Count Elapsed Time Average = Time ;; =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ;; python-imenu-create-index 156 2.430906 0.015582= 7307 ;; python-end-of-defun 155 1.2718260000 0.008205= 3290 ;; python-end-of-block 155 1.1898689999 0.007676= 5741 ;; python-next-statement 2970 1.024717 0.000345= 0225 ;; python-end-of-statement 2970 0.4332190000 0.000145= 8649 ;; python-beginning-of-defun 265 0.0918479999 0.000346= 5962 ;; python-skip-comments/blanks 3125 0.0753319999 2.410...= e-05 (defvar python-recursing) (defun python-imenu-create-index () "`imenu-create-index-function' for Python. Makes nested Imenu menus from nested `class' and `def' statements. The nested menus are headed by an item referencing the outer definition; it has a space prepended to the name so that it sorts first with `imenu--sort-by-name' (though, unfortunately, sub-menus precede it)." (unless (boundp 'python-recursing) ; dynamically bound below ;; Normal call from Imenu. (goto-char (point-min)) ;; Without this, we can get an infloop if the buffer isn't all ;; fontified. I guess this is really a bug in syntax.el. OTOH, ;; _with_ this, imenu doesn't immediately work; I can't figure out ;; what's going on, but it must be something to do with timers in ;; font-lock. ;; This can't be right, especially not when jit-lock is not used. --St= ef ;; (unless (get-text-property (1- (point-max)) 'fontified) ;; (font-lock-fontify-region (point-min) (point-max))) ) (let (index-alist) ; accumulated value to return (while (re-search-forward (rx line-start (0+ space) ; leading space (or (group "def") (group "class")) ; type (1+ space) (group (1+ (or word ?_)))) ; name nil t) (unless (save-match-data (python-in-string/comment)) (let ((pos (match-beginning 0)) (name (match-string-no-properties 3))) (if (match-beginning 2) ; def or class? (setq name (concat "class " name))) (save-restriction (narrow-to-defun) (let* ((python-recursing t) (sublist (python-imenu-create-index))) (if sublist (progn (push (cons (concat " " name) pos) sublist) (push (cons name sublist) index-alist)) (push (cons name pos) index-alist))))))) (unless (boundp 'python-recursing) ;; Look for module variables. (let (vars) (goto-char (point-min)) (while (re-search-forward (rx line-start (group (1+ (or word ?_))) (0+ space) "=3D") nil t) (unless (python-in-string/comment) (push (cons (match-string 1) (match-beginning 1)) vars))) (setq index-alist (nreverse index-alist)) (if vars (push (cons "Module variables" (nreverse vars)) index-alist)))) index-alist)) ;;;; `Electric' commands. (defun python-electric-colon (arg) "Insert a colon and maybe outdent the line if it is a statement like `els= e'. With numeric ARG, just insert that many colons. With \\[universal-argument= ], just insert a single colon." (interactive "*P") (self-insert-command (if (not (integerp arg)) 1 arg)) (and (not arg) (eolp) (python-outdent-p) (not (python-in-string/comment)) (> (current-indentation) (python-calculate-indentation)) (python-indent-line))) ; OK, do it (put 'python-electric-colon 'delete-selection t) (defun python-backspace (arg) "Maybe delete a level of indentation on the current line. Do so if point is at the end of the line's indentation outside strings and comments. Otherwise just call `backward-delete-char-untabify'. Repeat ARG times." (interactive "*p") (if (or (/=3D (current-indentation) (current-column)) (bolp) (python-continuation-line-p) (python-in-string/comment)) (backward-delete-char-untabify arg) ;; Look for the largest valid indentation which is smaller than ;; the current indentation. (let ((indent 0) (ci (current-indentation)) (indents (python-indentation-levels)) initial) (dolist (x indents) (if (< (car x) ci) (setq indent (max indent (car x))))) (setq initial (cdr (assq indent indents))) (if (> (length initial) 0) (message "Closes %s" initial)) (delete-horizontal-space) (indent-to indent)))) (put 'python-backspace 'delete-selection 'supersede) ;;;; pychecker (defcustom python-check-command "pychecker --stdlib" "Command used to check a Python file." :type 'string :group 'python) (defvar python-saved-check-command nil "Internal use.") ;; After `sgml-validate-command'. (defun python-check (command) "Check a Python file (default current buffer's file). Runs COMMAND, a shell command, as if by `compile'. See `python-check-command' for the default." (interactive (list (read-string "Checker command: " (or python-saved-check-command (concat python-check-command " " (let ((name (buffer-file-name))) (if name (file-name-nondirectory name)))))))) (set (make-local-variable 'python-saved-check-command) command) (require 'compile) ;To define compilation-* variables. (save-some-buffers (not compilation-ask-about-save) nil) (let ((compilation-error-regexp-alist (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2) compilation-error-regexp-alist))) (compilation-start command))) ;;;; Inferior mode stuff (following cmuscheme). (defcustom python-python-command "python" "Shell command to run Python interpreter. Any arguments can't contain whitespace." :group 'python :type 'string) (defcustom python-jython-command "jython" "Shell command to run Jython interpreter. Any arguments can't contain whitespace." :group 'python :type 'string) (defvar python-command python-python-command "Actual command used to run Python. May be `python-python-command' or `python-jython-command', possibly modified by the user. Additional arguments are added when the command is used by `run-python' et al.") (defvar python-buffer nil "The current Python process buffer. Commands that send text from source buffers to Python processes have to choose a process to send to. This is determined by buffer-local value of `python-buffer'. If its value in the current buffer, i.e. both any local value and the default one, is nil, `run-python' and commands that send to the Python process will start a new process. Whenever \\[run-python] starts a new process, it resets the default value of `python-buffer' to be the new process's buffer and sets the buffer-local value similarly if the current buffer is in Python mode or Inferior Python mode, so that source buffer stays associated with a specific sub-process. Use \\[python-set-proc] to set the default value from a buffer with a local value.") (make-variable-buffer-local 'python-buffer) (defconst python-compilation-regexp-alist ;; FIXME: maybe these should move to compilation-error-regexp-alist-alist. ;; The first already is (for CAML), but the second isn't. Anyhow, ;; these are specific to the inferior buffer. -- fx `((,(rx line-start (1+ (any " \t")) "File \"" (group (1+ (not (any "\"<")))) ; avoid `' &c "\", line " (group (1+ digit))) 1 2) (,(rx " in file " (group (1+ not-newline)) " on line " (group (1+ digit))) 1 2) ;; pdb stack trace (,(rx line-start "> " (group (1+ (not (any "(\"<")))) "(" (group (1+ digit)) ")" (1+ (not (any "("))) "()") 1 2)) "`compilation-error-regexp-alist' for inferior Python.") (defvar inferior-python-mode-map (let ((map (make-sparse-keymap))) ;; This will inherit from comint-mode-map. (define-key map "\C-c\C-l" 'python-load-file) (define-key map "\C-c\C-v" 'python-check) ;; Note that we _can_ still use these commands which send to the ;; Python process even at the prompt if we have a normal prompt, ;; i.e. '>>> ' and not '... '. See the comment before ;; python-send-region. Fixme: uncomment these if we address that. ;; (define-key map [(meta ?\t)] 'python-complete-symbol) ;; (define-key map "\C-c\C-f" 'python-describe-symbol) map)) (defvar inferior-python-mode-syntax-table (let ((st (make-syntax-table python-mode-syntax-table))) ;; Don't get confused by apostrophes in the process's output (e.g. if ;; you execute "help(os)"). (modify-syntax-entry ?\' "." st) ;; Maybe we should do the same for double quotes? ;; (modify-syntax-entry ?\" "." st) st)) ;; Autoloaded. (declare-function compilation-shell-minor-mode "compile" (&optional arg)) (defvar python--prompt-regexp nil) (defun python--set-prompt-regexp () (let ((prompt (cdr-safe (or (assoc python-python-command python-shell-prompt-alist) (assq t python-shell-prompt-alist)))) (cprompt (cdr-safe (or (assoc python-python-command python-shell-continuation-prompt-alist) (assq t python-shell-continuation-prompt-alist))))) (set (make-local-variable 'comint-prompt-regexp) (concat "\\(" (mapconcat 'identity (delq nil (list prompt cprompt "^([Pp]db) ")) "\\|") "\\)")) (set (make-local-variable 'python--prompt-regexp) prompt))) ;; Fixme: This should inherit some stuff from `python-mode', but I'm ;; not sure how much: at least some keybindings, like C-c C-f; ;; syntax?; font-locking, e.g. for triple-quoted strings? (define-derived-mode inferior-python-mode comint-mode "Inferior Python" "Major mode for interacting with an inferior Python process. A Python process can be started with \\[run-python]. Hooks `comint-mode-hook' and `inferior-python-mode-hook' are run in that order. You can send text to the inferior Python process from other buffers containing Python source. * \\[python-switch-to-python] switches the current buffer to the Python process buffer. * \\[python-send-region] sends the current region to the Python process. * \\[python-send-region-and-go] switches to the Python process buffer after sending the text. For running multiple processes in multiple buffers, see `run-python' and `python-buffer'. \\{inferior-python-mode-map}" :group 'python (setq mode-line-process '(":%s")) (set (make-local-variable 'comint-input-filter) 'python-input-filter) (add-hook 'comint-preoutput-filter-functions #'python-preoutput-filter nil t) (python--set-prompt-regexp) (set (make-local-variable 'compilation-error-regexp-alist) python-compilation-regexp-alist) (compilation-shell-minor-mode 1)) (defcustom inferior-python-filter-regexp "\\`\\s-*\\S-?\\S-?\\s-*\\'" "Input matching this regexp is not saved on the history list. Default ignores all inputs of 0, 1, or 2 non-blank characters." :type 'regexp :group 'python) (defcustom python-remove-cwd-from-path t "Whether to allow loading of Python modules from the current directory. If this is non-nil, Emacs removes '' from sys.path when starting an inferior Python process. This is the default, for security reasons, as it is easy for the Python process to be started without the user's realization (e.g. to perform completion)." :type 'boolean :group 'python :version "23.3") (defun python-input-filter (str) "`comint-input-filter' function for inferior Python. Don't save anything for STR matching `inferior-python-filter-regexp'." (not (string-match inferior-python-filter-regexp str))) ;; Fixme: Loses with quoted whitespace. (defun python-args-to-list (string) (let ((where (string-match "[ \t]" string))) (cond ((null where) (list string)) ((not (=3D where 0)) (cons (substring string 0 where) (python-args-to-list (substring string (+ 1 where))))) (t (let ((pos (string-match "[^ \t]" string))) (if pos (python-args-to-list (substring string pos)))))))) (defvar python-preoutput-result nil "Data from last `_emacs_out' line seen by the preoutput filter.") (defvar python-preoutput-continuation nil "If non-nil, funcall this when `python-preoutput-filter' sees `_emacs_ok'= .") (defvar python-preoutput-leftover nil) (defvar python-preoutput-skip-next-prompt nil) ;; Using this stops us getting lines in the buffer like ;; >>> ... ... >>> ;; Also look for (and delete) an `_emacs_ok' string and call ;; `python-preoutput-continuation' if we get it. (defun python-preoutput-filter (s) "`comint-preoutput-filter-functions' function: ignore prompts not at bol." (when python-preoutput-leftover (setq s (concat python-preoutput-leftover s)) (setq python-preoutput-leftover nil)) (let ((start 0) (res "")) ;; First process whole lines. (while (string-match "\n" s start) (let ((line (substring s start (setq start (match-end 0))))) ;; Skip prompt if needed. (when (and python-preoutput-skip-next-prompt (string-match comint-prompt-regexp line)) (setq python-preoutput-skip-next-prompt nil) (setq line (substring line (match-end 0)))) ;; Recognize special _emacs_out lines. (if (and (string-match "\\`_emacs_out \\(.*\\)\n\\'" line) (local-variable-p 'python-preoutput-result)) (progn (setq python-preoutput-result (match-string 1 line)) (set (make-local-variable 'python-preoutput-skip-next-prompt)= t)) (setq res (concat res line))))) ;; Then process the remaining partial line. (unless (zerop start) (setq s (substring s start))) (cond ((and (string-match comint-prompt-regexp s) ;; Drop this prompt if it follows an _emacs_out... (or python-preoutput-skip-next-prompt ;; ... or if it's not gonna be inserted at BOL. ;; Maybe we could be more selective here. (if (zerop (length res)) (not (bolp)) (string-match ".\\'" res)))) ;; The need for this seems to be system-dependent: ;; What is this all about, exactly? --Stef ;; (if (and (eq ?. (aref s 0))) ;; (accept-process-output (get-buffer-process (current-buffe= r)) 1)) (setq python-preoutput-skip-next-prompt nil) res) ((let ((end (min (length "_emacs_out ") (length s)))) (eq t (compare-strings s nil end "_emacs_out " nil end))) ;; The leftover string is a prefix of _emacs_out so we don't know ;; yet whether it's an _emacs_out or something else: wait until = we ;; get more output so we can resolve this ambiguity. (set (make-local-variable 'python-preoutput-leftover) s) res) (t (concat res s))))) (defvar python-version-checked nil) (defun python-check-version (cmd) "Check that CMD runs a suitable version of Python." ;; Fixme: Check on Jython. (unless (or python-version-checked (equal 0 (string-match (regexp-quote python-python-command) cmd))) (unless (shell-command-to-string cmd) (error "Can't run Python command `%s'" cmd)) (let* ((res (shell-command-to-string (concat cmd " -c \"from sys import version_info;\ print version_info >=3D (2, 2) and version_info < (3, 0)\"")))) (unless (string-match "True" res) (error "Only Python versions >=3D 2.2 and < 3.0 are supported"))) (setq python-version-checked t))) ;;;###autoload (defun run-python (&optional cmd noshow new) "Run an inferior Python process, input and output via buffer *Python*. CMD is the Python command to run. NOSHOW non-nil means don't show the buffer automatically. Interactively, a prefix arg means to prompt for the initial Python command line (default is `python-command'). A new process is started if one isn't running attached to `python-buffer', or if called from Lisp with non-nil arg NEW. Otherwise, if a process is already running in `python-buffer', switch to that buffer. This command runs the hook `inferior-python-mode-hook' after running `comint-mode-hook'. Type \\[describe-mode] in the process buffer for a list of commands. By default, Emacs inhibits the loading of Python modules from the current working directory, for security reasons. To disable this behavior, change `python-remove-cwd-from-path' to nil." (interactive (if current-prefix-arg (list (read-string "Run Python: " python-command) nil t) (list python-command))) (unless cmd (setq cmd python-command)) (python-check-version cmd) (setq python-command cmd) ;; Fixme: Consider making `python-buffer' buffer-local as a buffer ;; (not a name) in Python buffers from which `run-python' &c is ;; invoked. Would support multiple processes better. (when (or new (not (comint-check-proc python-buffer))) (with-current-buffer (let* ((cmdlist (append (python-args-to-list cmd) '("-i") (if python-remove-cwd-from-path '("-c" "import sys; sys.path.remove('')")))) (path (getenv "PYTHONPATH")) (process-environment ; to import emacs.py (cons (concat "PYTHONPATH=3D" (if path (concat path path-separator)) data-directory) process-environment)) ;; If we use a pipe, Unicode characters are not printed ;; correctly (Bug#5794) and IPython does not work at ;; all (Bug#5390). (process-connection-type t)) (apply 'make-comint-in-buffer "Python" (generate-new-buffer "*Python*") (car cmdlist) nil (cdr cmdlist))) (setq-default python-buffer (current-buffer)) (setq python-buffer (current-buffer)) (accept-process-output (get-buffer-process python-buffer) 5) (inferior-python-mode) ;; Load function definitions we need. ;; Before the preoutput function was used, this was done via -c in ;; cmdlist, but that loses the banner and doesn't run the startup ;; file. The code might be inline here, but there's enough that it ;; seems worth putting in a separate file, and it's probably cleaner ;; to put it in a module. ;; Ensure we're at a prompt before doing anything else. (python-send-string "import emacs") ;; The following line was meant to ensure that we're at a prompt ;; before doing anything else. However, this can cause Emacs to ;; hang waiting for a response, if that Python function fails ;; (i.e. raises an exception). ;; (python-send-receive "print '_emacs_out ()'") )) (if (derived-mode-p 'python-mode) (setq python-buffer (default-value 'python-buffer))) ; buffer-local ;; Without this, help output goes into the inferior python buffer if ;; the process isn't already running. (sit-for 1 t) ;Should we use accept-process-output instead? --Stef (unless noshow (pop-to-buffer python-buffer t))) (defun python-send-command (command) "Like `python-send-string' but resets `compilation-shell-minor-mode'." (when (python-check-comint-prompt) (with-current-buffer (process-buffer (python-proc)) (goto-char (point-max)) (compilation-forget-errors) (python-send-string command) (setq compilation-last-buffer (current-buffer))))) (defun python-send-region (start end) "Send the region to the inferior Python process." ;; The region is evaluated from a temporary file. This avoids ;; problems with blank lines, which have different semantics ;; interactively and in files. It also saves the inferior process ;; buffer filling up with interpreter prompts. We need a Python ;; function to remove the temporary file when it has been evaluated ;; (though we could probably do it in Lisp with a Comint output ;; filter). This function also catches exceptions and truncates ;; tracebacks not to mention the frame of the function itself. ;; ;; The `compilation-shell-minor-mode' parsing takes care of relating ;; the reference to the temporary file to the source. ;; ;; Fixme: Write a `coding' header to the temp file if the region is ;; non-ASCII. (interactive "r") (let* ((temporary-file-directory (if (file-remote-p default-directory) (concat (file-remote-p default-directory) "/tmp") temporary-file-directory)) (f (make-temp-file "py" nil ".py")) (f-local (or (file-remote-p f 'localname) f)) (command ;; IPython puts the FakeModule module into __main__ so ;; emacs.eexecfile becomes useless. (if (string-match "^ipython" python-command) (format "execfile %S" f-local) (format "emacs.eexecfile(%S)" f-local))) (orig-start (copy-marker start))) (when (save-excursion (goto-char start) (/=3D 0 (current-indentation))) ; need dummy block (save-excursion (goto-char orig-start) ;; Wrong if we had indented code at buffer start. (set-marker orig-start (line-beginning-position 0))) (write-region "if True:\n" nil f nil 'nomsg)) (write-region start end f t 'nomsg) (python-send-command command) (with-current-buffer (process-buffer (python-proc)) ;; Tell compile.el to redirect error locations in file `f' to ;; positions past marker `orig-start'. It has to be done *after* ;; `python-send-command''s call to `compilation-forget-errors'. (compilation-fake-loc orig-start f)))) (defun python-send-string (string) "Evaluate STRING in inferior Python process." (interactive "sPython command: ") (comint-send-string (python-proc) string) (unless (string-match "\n\\'" string) ;; Make sure the text is properly LF-terminated. (comint-send-string (python-proc) "\n")) (when (string-match "\n[ \t].*\n?\\'" string) ;; If the string contains a final indented line, add a second newline so ;; as to make sure we terminate the multiline instruction. (comint-send-string (python-proc) "\n"))) (defun python-send-buffer () "Send the current buffer to the inferior Python process." (interactive) (python-send-region (point-min) (point-max))) ;; Fixme: Try to define the function or class within the relevant ;; module, not just at top level. (defun python-send-defun () "Send the current defun (class or method) to the inferior Python process." (interactive) (save-excursion (python-send-region (progn (beginning-of-defun) (point)) (progn (end-of-defun) (point))))) (defun python-switch-to-python (eob-p) "Switch to the Python process buffer, maybe starting new process. With prefix arg, position cursor at end of buffer." (interactive "P") (pop-to-buffer (process-buffer (python-proc)) t) ;Runs python if needed. (when eob-p (push-mark) (goto-char (point-max)))) (defun python-send-region-and-go (start end) "Send the region to the inferior Python process. Then switch to the process buffer." (interactive "r") (python-send-region start end) (python-switch-to-python t)) (defcustom python-source-modes '(python-mode jython-mode) "Used to determine if a buffer contains Python source code. If a file is loaded into a buffer that is in one of these major modes, it is considered Python source by `python-load-file', which uses the value to determine defaults." :type '(repeat function) :group 'python) (defvar python-prev-dir/file nil "Caches (directory . file) pair used in the last `python-load-file' comma= nd. Used for determining the default in the next one.") (defun python-load-file (file-name) "Load a Python file FILE-NAME into the inferior Python process. If the file has extension `.py' import or reload it as a module. Treating it as a module keeps the global namespace clean, provides function location information for debugging, and supports users of module-qualified names." (interactive (comint-get-source "Load Python file: " python-prev-dir/file python-source-modes t)) ; because execfile needs exact name (comint-check-source file-name) ; Check to see if buffer needs saving. (setq python-prev-dir/file (cons (file-name-directory file-name) (file-name-nondirectory file-name))) (with-current-buffer (process-buffer (python-proc)) ;Runs python if neede= d. ;; Fixme: I'm not convinced by this logic from python-mode.el. (python-send-command (if (string-match "\\.py\\'" file-name) (let ((module (file-name-sans-extension (file-name-nondirectory file-name)))) (format "emacs.eimport(%S,%S)" module (file-name-directory file-name))) (format "execfile(%S)" file-name))) (message "%s loaded" file-name))) (defun python-proc () "Return the current Python process. See variable `python-buffer'. Starts a new process if necessary." ;; Fixme: Maybe should look for another active process if there ;; isn't one for `python-buffer'. (unless (comint-check-proc python-buffer) (run-python nil t)) (get-buffer-process (if (derived-mode-p 'inferior-python-mode) (current-buffer) python-buffer))) (defun python-set-proc () "Set the default value of `python-buffer' to correspond to this buffer. If the current buffer has a local value of `python-buffer', set the default (global) value to that. The associated Python process is the one that gets input from \\[python-send-region] et al when used in a buffer that doesn't have a local value of `python-buffer'." (interactive) (if (local-variable-p 'python-buffer) (setq-default python-buffer python-buffer) (error "No local value of `python-buffer'"))) ;;;; Context-sensitive help. (defconst python-dotty-syntax-table (let ((table (make-syntax-table))) (set-char-table-parent table python-mode-syntax-table) (modify-syntax-entry ?. "_" table) table) "Syntax table giving `.' symbol syntax. Otherwise inherits from `python-mode-syntax-table'.") (defvar view-return-to-alist) (eval-when-compile (autoload 'help-buffer "help-fns")) (defvar python-imports) ; forward declaration ;; Fixme: Should this actually be used instead of info-look, i.e. be ;; bound to C-h S? [Probably not, since info-look may work in cases ;; where this doesn't.] (defun python-describe-symbol (symbol) "Get help on SYMBOL using `help'. Interactively, prompt for symbol. Symbol may be anything recognized by the interpreter's `help' command -- e.g. `CALLS' -- not just variables in scope in the interpreter. This only works for Python version 2.2 or newer since earlier interpreters don't support `help'. In some cases where this doesn't find documentation, \\[info-lookup-symbol] will." ;; Note that we do this in the inferior process, not a separate one, to ;; ensure the environment is appropriate. (interactive (let ((symbol (with-syntax-table python-dotty-syntax-table (current-word))) (enable-recursive-minibuffers t)) (list (read-string (if symbol (format "Describe symbol (default %s): " symbol) "Describe symbol: ") nil nil symbol)))) (if (equal symbol "") (error "No symbol")) ;; Ensure we have a suitable help buffer. ;; Fixme: Maybe process `Related help topics' a la help xrefs and ;; allow C-c C-f in help buffer. (let ((temp-buffer-show-hook ; avoid xref stuff (lambda () (setq buffer-read-only t) (setq view-return-to-alist (list (cons (selected-window) help-return-method)))))) (with-output-to-temp-buffer (help-buffer) (with-current-buffer standard-output ;; Fixme: Is this actually useful? (help-setup-xref (list 'python-describe-symbol symbol) (called-interactively-p 'interactive)) (set (make-local-variable 'comint-redirect-subvert-readonly) t) (help-print-return-message)))) (comint-redirect-send-command-to-process (format "emacs.ehelp(%S, %s)" symbol python-imports) "*Help*" (python-proc) nil nil)) (add-to-list 'debug-ignored-errors "^No symbol") (defun python-send-receive (string) "Send STRING to inferior Python (if any) and return result. The result is what follows `_emacs_out' in the output. This is a no-op if `python-check-comint-prompt' returns nil." (python-send-string string) (let ((proc (python-proc))) (with-current-buffer (process-buffer proc) (when (python-check-comint-prompt proc) (set (make-local-variable 'python-preoutput-result) nil) (while (progn (accept-process-output proc 5) (null python-preoutput-result))) (prog1 python-preoutput-result (kill-local-variable 'python-preoutput-result)))))) (defun python-check-comint-prompt (&optional proc) "Return non-nil if and only if there's a normal prompt in the inferior bu= ffer. If there isn't, it's probably not appropriate to send input to return Eldoc information etc. If PROC is non-nil, check the buffer for that process." (with-current-buffer (process-buffer (or proc (python-proc))) (save-excursion (save-match-data (re-search-backward (concat python--prompt-regexp " *\\=3D") nil t))))) ;; Fixme: Is there anything reasonable we can do with random methods? ;; (Currently only works with functions.) (defun python-eldoc-function () "`eldoc-documentation-function' for Python. Only works when point is in a function name, not its arg list, for instance. Assumes an inferior Python is running." (let ((symbol (with-syntax-table python-dotty-syntax-table (current-word)))) ;; This is run from timers, so inhibit-quit tends to be set. (with-local-quit ;; First try the symbol we're on. (or (and symbol (python-send-receive (format "emacs.eargs(%S, %s)" symbol python-imports))) ;; Try moving to symbol before enclosing parens. (let ((s (syntax-ppss))) (unless (zerop (car s)) (when (eq ?\( (char-after (nth 1 s))) (save-excursion (goto-char (nth 1 s)) (skip-syntax-backward "-") (let ((point (point))) (skip-chars-backward "a-zA-Z._") (if (< (point) point) (python-send-receive (format "emacs.eargs(%S, %s)" (buffer-substring-no-properties (point) point) python-imports)))))))))))) ;;;; Info-look functionality. (declare-function info-lookup-maybe-add-help "info-look" (&rest arg)) ;;;###autoload (defun python-after-info-look () "Set up info-look for Python. Used with `eval-after-load'." (let* ((version (let ((s (shell-command-to-string (concat python-command " -V")))) (string-match "^Python \\([0-9]+\\.[0-9]+\\>\\)" s) (match-string 1 s))) ;; Whether info files have a Python version suffix, e.g. in Debian. (versioned (with-temp-buffer (with-no-warnings (Info-mode)) (condition-case () ;; Don't use `info' because it would pop-up a *info* buffer. (with-no-warnings (Info-goto-node (format "(python%s-lib)Miscellaneous Index" version)) t) (error nil))))) (info-lookup-maybe-add-help :mode 'python-mode :regexp "[[:alnum:]_]+" :doc-spec ;; Fixme: Can this reasonably be made specific to indices with ;; different rules? Is the order of indices optimal? ;; (Miscellaneous in -ref first prefers lookup of keywords, for ;; instance.) (if versioned ;; The empty prefix just gets us highlighted terms. `((,(concat "(python" version "-ref)Miscellaneous Index") nil "") (,(concat "(python" version "-ref)Module Index" nil "")) (,(concat "(python" version "-ref)Function-Method-Variable Index" nil "")) (,(concat "(python" version "-ref)Class-Exception-Object Index" nil "")) (,(concat "(python" version "-lib)Module Index" nil "")) (,(concat "(python" version "-lib)Class-Exception-Object Index" nil "")) (,(concat "(python" version "-lib)Function-Method-Variable Index" nil "")) (,(concat "(python" version "-lib)Miscellaneous Index" nil ""))) '(("(python-ref)Miscellaneous Index" nil "") ("(python-ref)Module Index" nil "") ("(python-ref)Function-Method-Variable Index" nil "") ("(python-ref)Class-Exception-Object Index" nil "") ("(python-lib)Module Index" nil "") ("(python-lib)Class-Exception-Object Index" nil "") ("(python-lib)Function-Method-Variable Index" nil "") ("(python-lib)Miscellaneous Index" nil "")))))) (eval-after-load "info-look" '(python-after-info-look)) ;;;; Miscellany. (defcustom python-jython-packages '("java" "javax" "org" "com") "Packages implying `jython-mode'. If these are imported near the beginning of the buffer, `python-mode' actually punts to `jython-mode'." :type '(repeat string) :group 'python) ;; Called from `python-mode', this causes a recursive call of the ;; mode. See logic there to break out of the recursion. (defun python-maybe-jython () "Invoke `jython-mode' if the buffer appears to contain Jython code. The criterion is either a match for `jython-mode' via `interpreter-mode-alist' or an import of a module from the list `python-jython-packages'." ;; The logic is taken from python-mode.el. (save-excursion (save-restriction (widen) (goto-char (point-min)) (let ((interpreter (if (looking-at auto-mode-interpreter-regexp) (match-string 2)))) (if (and interpreter (eq 'jython-mode (cdr (assoc (file-name-nondirectory interpreter) interpreter-mode-alist)))) (jython-mode) (if (catch 'done (while (re-search-forward (rx line-start (or "import" "from") (1+ space) (group (1+ (not (any " \t\n."))))) (+ (point-min) 10000) ; Probably not worth customizing. t) (if (member (match-string 1) python-jython-packages) (throw 'done t)))) (jython-mode))))))) (defun python-fill-paragraph (&optional justify) "`fill-paragraph-function' handling multi-line strings and possibly comme= nts. If any of the current line is in or at the end of a multi-line string, fill the string or the paragraph of it that point is in, preserving the string's indentation." (interactive "P") (or (fill-comment-paragraph justify) (save-excursion (end-of-line) (let* ((syntax (syntax-ppss)) (orig (point)) start end) (cond ((nth 4 syntax) ; comment. fixme: loses with trailing one (let (fill-paragraph-function) (fill-paragraph justify))) ;; The `paragraph-start' and `paragraph-separate' ;; variables don't allow us to delimit the last ;; paragraph in a multi-line string properly, so narrow ;; to the string and then fill around (the end of) the ;; current line. ((nth 3 syntax) ; in fenced string (goto-char (nth 8 syntax)) ; string start (setq start (line-beginning-position)) (setq end (condition-case () ; for unbalanced quotes (progn (forward-sexp) (- (point) 3)) (error (point-max))))) ((re-search-backward "\\s|\\s-*\\=3D" nil t) ; end of fenced string (forward-char) (setq end (point)) (condition-case () (progn (backward-sexp) (setq start (line-beginning-position))) (error nil)))) (when end (save-restriction (narrow-to-region start end) (goto-char orig) ;; Avoid losing leading and trailing newlines in doc ;; strings written like: ;; """ ;; ... ;; """ (let ((paragraph-separate ;; Note that the string could be part of an ;; expression, so it can have preceding and ;; trailing non-whitespace. (concat (rx (or ;; Opening triple quote without following text. (and (* nonl) (group (syntax string-delimiter)) (repeat 2 (backref 1)) ;; Fixme: Not sure about including ;; trailing whitespace. (* (any " \t")) eol) ;; Closing trailing quote without preceding text. (and (group (any ?\" ?')) (backref 2) (syntax string-delimiter)))) "\\(?:" paragraph-separate "\\)")) fill-paragraph-function) (fill-paragraph justify))))))) t) (defun python-shift-left (start end &optional count) "Shift lines in region COUNT (the prefix arg) columns to the left. COUNT defaults to `python-indent'. If region isn't active, just shift current line. The region shifted includes the lines in which START and END lie. It is an error if any lines in the region are indented less than COUNT columns." (interactive (if mark-active (list (region-beginning) (region-end) current-prefix-arg) (list (line-beginning-position) (line-end-position) current-prefix-arg= ))) (if count (setq count (prefix-numeric-value count)) (setq count python-indent)) (when (> count 0) (save-excursion (goto-char start) (while (< (point) end) (if (and (< (current-indentation) count) (not (looking-at "[ \t]*$"))) (error "Can't shift all lines enough")) (forward-line)) (indent-rigidly start end (- count))))) (add-to-list 'debug-ignored-errors "^Can't shift all lines enough") (defun python-shift-right (start end &optional count) "Shift lines in region COUNT (the prefix arg) columns to the right. COUNT defaults to `python-indent'. If region isn't active, just shift current line. The region shifted includes the lines in which START and END lie." (interactive (if mark-active (list (region-beginning) (region-end) current-prefix-arg) (list (line-beginning-position) (line-end-position) current-prefix-arg= ))) (if count (setq count (prefix-numeric-value count)) (setq count python-indent)) (indent-rigidly start end count)) (defun python-outline-level () "`outline-level' function for Python mode. The level is the number of `python-indent' steps of indentation of current line." (1+ (/ (current-indentation) python-indent))) ;; Fixme: Consider top-level assignments, imports, &c. (defun python-current-defun (&optional length-limit) "`add-log-current-defun-function' for Python." (save-excursion ;; Move up the tree of nested `class' and `def' blocks until we ;; get to zero indentation, accumulating the defined names. (let ((accum) (length -1)) (catch 'done (while (or (null length-limit) (null (cdr accum)) (< length length-limit)) (let ((started-from (point))) (python-beginning-of-block) (end-of-line) (beginning-of-defun) (when (=3D (point) started-from) (throw 'done nil))) (when (looking-at (rx (0+ space) (or "def" "class") (1+ space) (group (1+ (or word (syntax symbol)))))) (push (match-string 1) accum) (setq length (+ length 1 (length (car accum))))) (when (=3D (current-indentation) 0) (throw 'done nil)))) (when accum (when (and length-limit (> length length-limit)) (setcar accum "..")) (mapconcat 'identity accum "."))))) (defun python-mark-block () "Mark the block around point. Uses `python-beginning-of-block', `python-end-of-block'." (interactive) (push-mark) (python-beginning-of-block) (push-mark (point) nil t) (python-end-of-block) (exchange-point-and-mark)) ;; Fixme: Provide a find-function-like command to find source of a ;; definition (separate from BicycleRepairMan). Complicated by ;; finding the right qualified name. ;;;; Completion. ;; http://lists.gnu.org/archive/html/bug-gnu-emacs/2008-01/msg00076.html (defvar python-imports "None" "String of top-level import statements updated by `python-find-imports'.") (make-variable-buffer-local 'python-imports) ;; Fixme: Should font-lock try to run this when it deals with an import? ;; Maybe not a good idea if it gets run multiple times when the ;; statement is being edited, and is more likely to end up with ;; something syntactically incorrect. ;; However, what we should do is to trundle up the block tree from point ;; to extract imports that appear to be in scope, and add those. (defun python-find-imports () "Find top-level imports, updating `python-imports'." (interactive) (save-excursion (let (lines) (goto-char (point-min)) (while (re-search-forward "^import\\>\\|^from\\>" nil t) (unless (syntax-ppss-context (syntax-ppss)) (let ((start (line-beginning-position))) ;; Skip over continued lines. (while (and (eq ?\\ (char-before (line-end-position))) (=3D 0 (forward-line 1))) t) (push (buffer-substring start (line-beginning-position 2)) lines)))) (setq python-imports (if lines (apply #'concat ;; This is probably best left out since you're unlikely to need the ;; doc for a function in the buffer and the import will lose if the ;; Python sub-process' working directory isn't the same as the ;; buffer's. ;; (if buffer-file-name ;; (concat ;; "import " ;; (file-name-sans-extension ;; (file-name-nondirectory buffer-file-name)))) (nreverse lines)) "None")) (when lines (set-text-properties 0 (length python-imports) nil python-imports) ;; The output ends up in the wrong place if the string we ;; send contains newlines (from the imports). (setq python-imports (replace-regexp-in-string "\n" "\\n" (format "%S" python-imports) t t)))))) ;; Fixme: This fails the first time if the sub-process isn't already ;; running. Presumably a timing issue with i/o to the process. (defun python-symbol-completions (symbol) "Return a list of completions of the string SYMBOL from Python process. The list is sorted. Uses `python-imports' to load modules against which to complete." (when (stringp symbol) (let ((completions (condition-case () (car (read-from-string (python-send-receive (format "emacs.complete(%S,%s)" (substring-no-properties symbol) python-imports)))) (error nil)))) (sort ;; We can get duplicates from the above -- don't know why. (delete-dups completions) #'string<)))) (defun python-completion-at-point () (let ((end (point)) (start (save-excursion (and (re-search-backward (rx (or buffer-start (regexp "[^[:alnum:]._]")) (group (1+ (regexp "[[:alnum:]._]"))) point) nil t) (match-beginning 1))))) (when start (list start end (completion-table-dynamic 'python-symbol-completions))))) ;;;; FFAP support (defun python-module-path (module) "Function for `ffap-alist' to return path to MODULE." (python-send-receive (format "emacs.modpath (%S)" module))) (eval-after-load "ffap" '(push '(python-mode . python-module-path) ffap-alist)) ;;;; Find-function support ;; Fixme: key binding? (defun python-find-function (name) "Find source of definition of function NAME. Interactively, prompt for name." (interactive (let ((symbol (with-syntax-table python-dotty-syntax-table (current-word))) (enable-recursive-minibuffers t)) (list (read-string (if symbol (format "Find location of (default %s): " symbol) "Find location of: ") nil nil symbol)))) (unless python-imports (error "Not called from buffer visiting Python file")) (let* ((loc (python-send-receive (format "emacs.location_of (%S, %s)" name python-imports))) (loc (car (read-from-string loc))) (file (car loc)) (line (cdr loc))) (unless file (error "Don't know where `%s' is defined" name)) (pop-to-buffer (find-file-noselect file)) (when (integerp line) (goto-char (point-min)) (forward-line (1- line))))) ;;;; Skeletons (defcustom python-use-skeletons nil "Non-nil means template skeletons will be automagically inserted. This happens when pressing \"if\", for example, to prompt for the if condition." :type 'boolean :group 'python) (define-abbrev-table 'python-mode-abbrev-table () "Abbrev table for Python mode." :case-fixed t ;; Allow / inside abbrevs. :regexp "\\(?:^\\|[^/]\\)\\<\\([[:word:]/]+\\)\\W*" ;; Only expand in code. :enable-function (lambda () (not (python-in-string/comment)))) (eval-when-compile ;; Define a user-level skeleton and add it to the abbrev table. (defmacro def-python-skeleton (name &rest elements) (declare (indent 2)) (let* ((name (symbol-name name)) (function (intern (concat "python-insert-" name)))) `(progn ;; Usual technique for inserting a skeleton, but expand ;; to the original abbrev instead if in a comment or string. (when python-use-skeletons (define-abbrev python-mode-abbrev-table ,name "" ',function nil t)) ; system abbrev (define-skeleton ,function ,(format "Insert Python \"%s\" template." name) ,@elements))))) ;; From `skeleton-further-elements' set below: ;; `<': outdent a level; ;; `^': delete indentation on current line and also previous newline. ;; Not quite like `delete-indentation'. Assumes point is at ;; beginning of indentation. (def-python-skeleton if "Condition: " "if " str ":" \n > -1 ; Fixme: I don't understand the spurious space this removes. _ \n ("other condition, %s: " < ; Avoid wrong indentation after block opening. "elif " str ":" \n > _ \n nil) '(python-else) | ^) (define-skeleton python-else "Auxiliary skeleton." nil (unless (eq ?y (read-char "Add `else' clause? (y for yes or RET for no) "= )) (signal 'quit t)) < "else:" \n > _ \n) (def-python-skeleton while "Condition: " "while " str ":" \n > -1 _ \n '(python-else) | ^) (def-python-skeleton for "Target, %s: " "for " str " in " (skeleton-read "Expression, %s: ") ":" \n > -1 _ \n '(python-else) | ^) (def-python-skeleton try/except nil "try:" \n > -1 _ \n ("Exception, %s: " < "except " str '(python-target) ":" \n > _ \n nil) < "except:" \n > _ \n '(python-else) | ^) (define-skeleton python-target "Auxiliary skeleton." "Target, %s: " ", " str | -2) (def-python-skeleton try/finally nil "try:" \n > -1 _ \n < "finally:" \n > _ \n) (def-python-skeleton def "Name: " "def " str " (" ("Parameter, %s: " (unless (equal ?\( (char-before)) ", ") str) "):" \n "\"\"\"" - "\"\"\"" \n ; Fixme: extra space inserted -- why?). > _ \n) (def-python-skeleton class "Name: " "class " str " (" ("Inheritance, %s: " (unless (equal ?\( (char-before)) ", ") str) & ")" | -2 ; close list or remove opening ":" \n "\"\"\"" - "\"\"\"" \n > _ \n) (defvar python-default-template "if" "Default template to expand by `python-expand-template'. Updated on each expansion.") (defun python-expand-template (name) "Expand template named NAME. Interactively, prompt for the name with completion." (interactive (list (completing-read (format "Template to expand (default %s): " python-default-template) python-mode-abbrev-table nil t nil nil python-default-template))) (if (equal "" name) (setq name python-default-template) (setq python-default-template name)) (let ((sym (abbrev-symbol name python-mode-abbrev-table))) (if sym (abbrev-insert sym) (error "Undefined template: %s" name)))) ;;;; Modes. ;; pdb tracking is alert once this file is loaded, but takes no action if ;; `python-pdbtrack-do-tracking-p' is nil. (add-hook 'comint-output-filter-functions 'python-pdbtrack-track-stack-file) (defvar outline-heading-end-regexp) (defvar eldoc-documentation-function) (defvar python-mode-running) ;Dynamically scoped var. ;;;###autoload (define-derived-mode python-mode prog-mode "Python" "Major mode for editing Python files. Turns on Font Lock mode unconditionally since it is currently required for correct parsing of the source. See also `jython-mode', which is actually invoked if the buffer appears to contain Jython code. See also `run-python' and associated Python mode commands for running Python under Emacs. The Emacs commands which work with `defun's, e.g. \\[beginning-of-defun], d= eal with nested `def' and `class' blocks. They take the innermost one as current without distinguishing method and class definitions. Used multiple times, they move over others at the same indentation level until they reach the end of definitions at that level, when they move up a level. \\ Colon is electric: it outdents the line if appropriate, e.g. for an else statement. \\[python-backspace] at the beginning of an indented st= atement deletes a level of indentation to close the current block; otherwise it deletes a character backward. TAB indents the current line relative to the preceding code. Successive TABs, with no intervening command, cycle through the possibilities for indentation on the basis of enclosing blocks. \\[fill-paragraph] fills comments and multi-line strings appropriately, but= has no effect outside them. Supports Eldoc mode (only for functions, using a Python process), Info-Look and Imenu. In Outline minor mode, `class' and `def' lines count as headers. Symbol completion is available in the same way as in the Python shell using the `rlcompleter' module and this is added to the Hippie Expand functions locally if Hippie Expand mode is turned on. Completion of symbols of the form x.y only works if the components are literal module/attribute names, not variables. An abbrev table is set up with skeleton expansions for compound statement templates. \\{python-mode-map}" :group 'python (set (make-local-variable 'font-lock-defaults) '(python-font-lock-keywords nil nil nil nil ;; This probably isn't worth it. ;; (font-lock-syntactic-face-function ;; . python-font-lock-syntactic-face-function) )) (set (make-local-variable 'syntax-propertize-function) python-syntax-propertize-function) (set (make-local-variable 'parse-sexp-lookup-properties) t) (set (make-local-variable 'parse-sexp-ignore-comments) t) (set (make-local-variable 'comment-start) "# ") (set (make-local-variable 'indent-line-function) #'python-indent-line) (set (make-local-variable 'indent-region-function) #'python-indent-region) (set (make-local-variable 'paragraph-start) "\\s-*$") (set (make-local-variable 'fill-paragraph-function) 'python-fill-paragrap= h) (set (make-local-variable 'require-final-newline) mode-require-final-newl= ine) (set (make-local-variable 'add-log-current-defun-function) #'python-current-defun) (set (make-local-variable 'outline-regexp) (rx (* space) (or "class" "def" "elif" "else" "except" "finally" "for" "if" "try" "while" "with") symbol-end)) (set (make-local-variable 'outline-heading-end-regexp) ":\\s-*\n") (set (make-local-variable 'outline-level) #'python-outline-level) (set (make-local-variable 'open-paren-in-column-0-is-defun-start) nil) (set (make-local-variable 'beginning-of-defun-function) 'python-beginning-of-defun) (set (make-local-variable 'end-of-defun-function) 'python-end-of-defun) (add-hook 'which-func-functions 'python-which-func nil t) (setq imenu-create-index-function #'python-imenu-create-index) (set (make-local-variable 'eldoc-documentation-function) #'python-eldoc-function) (add-hook 'eldoc-mode-hook (lambda () (run-python nil t)) ; need it running nil t) (add-hook 'completion-at-point-functions 'python-completion-at-point nil 'local) (set (make-local-variable 'skeleton-further-elements) '((< '(backward-delete-char-untabify (min python-indent (current-column)))) (^ '(- (1+ (current-indentation)))))) ;; Python defines TABs as being 8-char wide. (set (make-local-variable 'tab-width) 8) (when python-guess-indent (python-guess-indent)) ;; Let's make it harder for the user to shoot himself in the foot. (unless (=3D tab-width python-indent) (setq indent-tabs-mode nil)) (set (make-local-variable 'python-command) python-python-command) (python-find-imports) (unless (boundp 'python-mode-running) ; kill the recursion from jython-mo= de (let ((python-mode-running t)) (python-maybe-jython)))) ;; Not done automatically in Emacs 21 or 22. (defcustom python-mode-hook nil "Hook run when entering Python mode." :group 'python :type 'hook) (custom-add-option 'python-mode-hook 'imenu-add-menubar-index) (custom-add-option 'python-mode-hook (lambda () "Turn off Indent Tabs mode." (setq indent-tabs-mode nil))) (custom-add-option 'python-mode-hook 'turn-on-eldoc-mode) (custom-add-option 'python-mode-hook 'abbrev-mode) ;;;###autoload (define-derived-mode jython-mode python-mode "Jython" "Major mode for editing Jython files. Like `python-mode', but sets up parameters for Jython subprocesses. Runs `jython-mode-hook' after `python-mode-hook'." :group 'python (set (make-local-variable 'python-command) python-jython-command)) ;; pdbtrack features (defun python-pdbtrack-overlay-arrow (activation) "Activate or deactivate arrow at beginning-of-line in current buffer." (if activation (progn (setq overlay-arrow-position (make-marker) overlay-arrow-string "=3D>" python-pdbtrack-is-tracking-p t) (set-marker overlay-arrow-position (line-beginning-position) (current-buffer))) (setq overlay-arrow-position nil python-pdbtrack-is-tracking-p nil))) (defun python-pdbtrack-track-stack-file (_text) "Show the file indicated by the pdb stack entry line, in a separate windo= w. Activity is disabled if the buffer-local variable `python-pdbtrack-do-tracking-p' is nil. We depend on the pdb input prompt being a match for `python-pdbtrack-input-prompt'. If the traceback target file path is invalid, we look for the most recently visited python-mode buffer which either has the name of the current function or class, or which defines the function or class. This is to provide for scripts not in the local file system (e.g., Zope's 'Script \(Python)', but it's not Zope specific). If you put a copy of the script in a buffer named for the script and activate python-mode, then pdbtrack will find it." ;; Instead of trying to piece things together from partial text ;; (which can be almost useless depending on Emacs version), we ;; monitor to the point where we have the next pdb prompt, and then ;; check all text from comint-last-input-end to process-mark. ;; ;; Also, we're very conservative about clearing the overlay arrow, ;; to minimize residue. This means, for instance, that executing ;; other pdb commands wipe out the highlight. You can always do a ;; 'where' (aka 'w') PDB command to reveal the overlay arrow. (let* ((origbuf (current-buffer)) (currproc (get-buffer-process origbuf))) (if (not (and currproc python-pdbtrack-do-tracking-p)) (python-pdbtrack-overlay-arrow nil) (let* ((procmark (process-mark currproc)) (block (buffer-substring (max comint-last-input-end (- procmark python-pdbtrack-track-range)) procmark)) target target_fname target_lineno target_buffer) (if (not (string-match (concat python-pdbtrack-input-prompt "$") bl= ock)) (python-pdbtrack-overlay-arrow nil) (setq block (ansi-color-filter-apply block)) (setq target (python-pdbtrack-get-source-buffer block)) (if (stringp target) (progn (python-pdbtrack-overlay-arrow nil) (message "pdbtrack: %s" target)) (setq target_lineno (car target) target_buffer (cadr target) target_fname (buffer-file-name target_buffer)) (switch-to-buffer-other-window target_buffer) (goto-char (point-min)) (forward-line (1- target_lineno)) (message "pdbtrack: line %s, file %s" target_lineno target_fnam= e) (python-pdbtrack-overlay-arrow t) (pop-to-buffer origbuf t) ;; in large shell buffers, above stuff may cause point to lag o= utput (goto-char procmark) ))))) ) (defun python-pdbtrack-get-source-buffer (block) "Return line number and buffer of code indicated by block's traceback tex= t. We look first to visit the file indicated in the trace. Failing that, we look for the most recently visited python-mode buffer with the same name or having the named function. If we're unable find the source code we return a string describing the problem." (if (not (string-match python-pdbtrack-stack-entry-regexp block)) "Traceback cue not found" (let* ((filename (match-string 1 block)) (lineno (string-to-number (match-string 2 block))) (funcname (match-string 3 block)) (msg (get-text-property 0 'compilation-message filename)) (loc (and msg (compilation--message->loc msg))) funcbuffer) (cond ((and loc (markerp (compilation--loc->marker loc))) (setq funcbuffer (marker-buffer (compilation--loc->marker loc)= )) (list (with-current-buffer funcbuffer (line-number-at-pos (compilation--loc->marker loc))) funcbuffer)) ((file-exists-p filename) (list lineno (find-file-noselect filename))) ((setq funcbuffer (python-pdbtrack-grub-for-buffer funcname lin= eno)) (if (string-match "/Script (Python)$" filename) ;; Add in number of lines for leading '##' comments: (setq lineno (+ lineno (with-current-buffer funcbuffer (if (equal (point-min)(point-max)) 0 (count-lines (point-min) (max (point-min) (string-match "^\\([^#]\\|#[^#]\\|#$\\)" (buffer-substring (point-min) (point-max))) ))))))) (list lineno funcbuffer)) ((=3D (elt filename 0) ?\<) (format "(Non-file source: '%s')" filename)) (t (format "Not found: %s(), %s" funcname filename)))))) (defun python-pdbtrack-grub-for-buffer (funcname _lineno) "Find recent Python mode buffer named, or having function named FUNCNAME." (let ((buffers (buffer-list)) buf got) (while (and buffers (not got)) (setq buf (car buffers) buffers (cdr buffers)) (if (and (with-current-buffer buf (string=3D major-mode "python-mode")) (or (string-match funcname (buffer-name buf)) (string-match (concat "^\\s-*\\(def\\|class\\)\\s-+" funcname "\\s-*(") (with-current-buffer buf (buffer-substring (point-min) (point-max)))))) (setq got buf))) got)) ;; Python subprocess utilities and filters (defun python-execute-file (proc filename) "Send to Python interpreter process PROC \"execfile('FILENAME')\". Make that process's buffer visible and force display. Also make comint believe the user typed this string so that `kill-output-from-shell' does The Right Thing." (let ((curbuf (current-buffer)) (procbuf (process-buffer proc)) ; (comint-scroll-to-bottom-on-output t) (msg (format "## working on region in file %s...\n" filename)) ;; add some comment, so that we can filter it out of history (cmd (format "execfile(r'%s') # PYTHON-MODE\n" filename))) (unwind-protect (with-current-buffer procbuf (goto-char (point-max)) (move-marker (process-mark proc) (point)) (funcall (process-filter proc) proc msg)) (set-buffer curbuf)) (process-send-string proc cmd))) (defun python-pdbtrack-toggle-stack-tracking (arg) (interactive "P") (if (not (get-buffer-process (current-buffer))) (error "No process associated with buffer '%s'" (current-buffer))) ;; missing or 0 is toggle, >0 turn on, <0 turn off (if (or (not arg) (zerop (setq arg (prefix-numeric-value arg)))) (setq python-pdbtrack-do-tracking-p (not python-pdbtrack-do-tracking-= p)) (setq python-pdbtrack-do-tracking-p (> arg 0))) (message "%sabled Python's pdbtrack" (if python-pdbtrack-do-tracking-p "En" "Dis"))) (defun turn-on-pdbtrack () (interactive) (python-pdbtrack-toggle-stack-tracking 1)) (defun turn-off-pdbtrack () (interactive) (python-pdbtrack-toggle-stack-tracking 0)) (defun python-sentinel (_proc _msg) (setq overlay-arrow-position nil)) (defun python-unload-function () "Unload the Python library." (remove-hook 'comint-output-filter-functions 'python-pdbtrack-track-stack= -file) (setq minor-mode-alist (assq-delete-all 'python-pdbtrack-is-tracking-p minor-mode-alist)) (dolist (error '("^No symbol" "^Can't shift all lines enough")) (setq debug-ignored-errors (delete error debug-ignored-errors))) ;; continue standard unloading nil) ;;;; Finish up ;; Fixme: should be in hideshow. This seems to be of limited use ;; since it isn't (can't be) indentation-based. Also hide-level ;; doesn't seem to work properly. (add-to-list 'hs-special-modes-alist `(python-mode "^\\s-*\\(?:def\\|class\\)\\>" nil "#" ,(lambda (_arg) (python-end-of-defun) (skip-chars-backward " \t\n")) nil)) (provide 'python) ;;; python.el ends here --=-=-=-- From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: John Shahid Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 23 Jun 2018 15:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Leo Liu Cc: 31793@debbugs.gnu.org, Eli Zaretskii Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.15297688411311 (code B ref 31793); Sat, 23 Jun 2018 15:48:02 +0000 Received: (at 31793) by debbugs.gnu.org; 23 Jun 2018 15:47:21 +0000 Received: from localhost ([127.0.0.1]:33363 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fWkkz-0000L5-2x for submit@debbugs.gnu.org; Sat, 23 Jun 2018 11:47:21 -0400 Received: from mail-qt0-f173.google.com ([209.85.216.173]:47085) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fWkkx-0000Kp-Ry for 31793@debbugs.gnu.org; Sat, 23 Jun 2018 11:47:20 -0400 Received: by mail-qt0-f173.google.com with SMTP id h5-v6so8538040qtm.13 for <31793@debbugs.gnu.org>; Sat, 23 Jun 2018 08:47:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=Za41SpfQ9PtegiNEfsziujxT/Dl0lVOCwg55jZdgKiQ=; b=uLGCQdh+IXF7kW8qm6udn+TdXaErwHUDLA18NixW2BMssw73yog1v61CkssC4JaxUX TVU8mMsxqQg6KEGDsJ0Ixl62ivDsHIU23jOpDHzJHAjgzCz866DD8HY0fMLeQO4Z0sMs Ue7rBl2K90ZuzJBoqOLXuxkW96pK9f39K8SiRkG5t4yu0LnvTORwJkSz9Oi3Gq+vJDvL oowHGqNJOPhhyGDMx/wDET/cFjOP2kyBqWhxR3+n9EE2TydnQCujdkccVjderRcm6aym 9zu5ZP2++eql5ZeaL4jV0rNz2MxlDXpY0bAtsSyRAAkY2wfwfRXK325PMOXMZzWWY/dx TxCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=Za41SpfQ9PtegiNEfsziujxT/Dl0lVOCwg55jZdgKiQ=; b=rnkC8xyMrSlj0BrqZ70Sic2KixtCv2FkKu0ak+yU1s5rm5qyxHSCn+6I3fojvB+v4A /c+wICV0LcA1zObp9ptgv0pHU5LrKYnMZqw8Ishn1yKV1OkbahjU2sBDJGJSDPBiKwm6 Dn7dtVLIKQEAX6yv8SHllbnUuxfbwu/p/16qpeNBAK1FQWPrrw76aW/pThFj8tJe88tV XneLEouLrFxABpJwz4oTz4hQv32G1Eq/vv9EjPB7BIdCVweYYAngTXcR/k5iSv0H6jdc zenyIvUaUnrgUKvTs4YAW3oAbZ7ACLboAVMz5Fcftg4GxdEmnM7Z+IbpbZHsUnWE9EG9 WV8w== X-Gm-Message-State: APt69E2UBLqBca7x9+Me3dCVWAa0VNEO+KNKz+lPQFu0wyJnUVqJ0BZ3 q+dyzyttAyhYw90gW7uMe9NGMMwL X-Google-Smtp-Source: ADUXVKKuoZ0UKtiA4fxCUwmFhSL0kC5OisHeQ/OM/OpEPFTQVREGBUZFzJ1xDMel3HAmI0gV6Slpzg== X-Received: by 2002:aed:2c63:: with SMTP id f90-v6mr3254493qtd.352.1529768833914; Sat, 23 Jun 2018 08:47:13 -0700 (PDT) Received: from 01d9722383d0 (cpe-184-152-55-93.nyc.res.rr.com. [184.152.55.93]) by smtp.gmail.com with ESMTPSA id g56-v6sm9467209qta.83.2018.06.23.08.47.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 23 Jun 2018 08:47:12 -0700 (PDT) From: John Shahid References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> Date: Sat, 23 Jun 2018 15:47:11 +0000 In-Reply-To: (Leo Liu's message of "Tue, 12 Jun 2018 16:46:11 +0800") Message-ID: <87k1qpsdxc.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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 (-) --=-=-= Content-Type: text/plain Leo Liu writes: > On 2018-06-12 08:21 +0300, Eli Zaretskii wrote: >> Ugh, macOS... This means no xbacktrace and no other GDB >> wizardry... > > Indeed. > >> Well, I think the most important thing is to produce a Lisp >> backtrace from the error. > > Turns out 26.1 cannot load a version of python.el (by dave love) that I > have in my site-lisp. > > 1. emacs -Q -l python.el > 2. M-x python-mode > > ,----[ error ] > | Variable binding depth exceeds max-specpdl-size > | Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Variable binding depth exceeds max-specpdl-size") > `---- > > Gnus was just loading python-mode to fontify some code in an article. double posting since I sent the email only to Leo. VVVV original email VVVV That seems to be a result of converting `global-eldoc-mode' to use `define-globalized-minor-mode' in 2349f. The recursive call seems to be a result of the following sequence of calls: 1. python-mode is enabled which adds an eldoc-mode-hook 2. eldoc-mode is turned on in the buffer triggering python's eldoc-mode-hook 3. python-mode hook will start an inferior process which in turn trigger ,MODE-enable-in-buffers 4. ,MODE-enable-in-buffers will go over the list again trying to enable eldoc-mode The problem is in step 4. The eldoc-global-mode buffer list isn't reset in step 2. Step 4 will try to enabe the mode for the same buffer and start a sequence of calls at 2. I was able to fix this problem by setting the buffer-list to nil inside ,MODE-enable-in-buffers. I attached a patch below. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-avoid-turning-on-the-global-minor-mode-recursively.patch >From 9f6bb1c2d9cac8ccea129242d6977bc848b3f715 Mon Sep 17 00:00:00 2001 From: John Shahid Date: Sat, 23 Jun 2018 11:12:44 -0400 Subject: [PATCH] avoid turning on the global-minor-mode recursively * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): reset the buffer-list inside ,MODE-enable-in-buffers to avoid enabling the mode recursively --- lisp/emacs-lisp/easy-mmode.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index a81b6fefb2..d363634236 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -457,7 +457,9 @@ define-globalized-minor-mode ;; The function that calls TURN-ON in each buffer. (defun ,MODE-enable-in-buffers () - (dolist (buf ,MODE-buffers) + (let ((buffers ,MODE-buffers)) + (setq ,MODE-buffers nil) + (dolist (buf buffers) (when (buffer-live-p buf) (with-current-buffer buf (unless ,MODE-set-explicitly @@ -467,12 +469,11 @@ define-globalized-minor-mode (,mode -1) (funcall #',turn-on)) (funcall #',turn-on)))) - (setq ,MODE-major-mode major-mode))))) + (setq ,MODE-major-mode major-mode)))))) (put ',MODE-enable-in-buffers 'definition-name ',global-mode) (defun ,MODE-check-buffers () (,MODE-enable-in-buffers) - (setq ,MODE-buffers nil) (remove-hook 'post-command-hook ',MODE-check-buffers)) (put ',MODE-check-buffers 'definition-name ',global-mode) -- 2.17.1 --=-=-=-- From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Leo Liu Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 24 Jun 2018 08:28:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: John Shahid Cc: 31793@debbugs.gnu.org Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.152982886210760 (code B ref 31793); Sun, 24 Jun 2018 08:28:02 +0000 Received: (at 31793) by debbugs.gnu.org; 24 Jun 2018 08:27:42 +0000 Received: from localhost ([127.0.0.1]:33639 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fX0N3-0002nT-Mu for submit@debbugs.gnu.org; Sun, 24 Jun 2018 04:27:41 -0400 Received: from mail-pf0-f182.google.com ([209.85.192.182]:42573) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fX0N0-0002nC-Bn for 31793@debbugs.gnu.org; Sun, 24 Jun 2018 04:27:38 -0400 Received: by mail-pf0-f182.google.com with SMTP id w7-v6so5072948pfn.9 for <31793@debbugs.gnu.org>; Sun, 24 Jun 2018 01:27:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:face:date:in-reply-to:message-id :user-agent:mime-version; bh=wQwXuz11i6PMq3fZxD6AGrUcy9WHNGzQT4zLZE4M/i0=; b=M+vj0aIrXB5yOzHLpWF7W1q8ssa8wJzhMwivNtiOfER28xHxivS+RZPcNcScwNEJBG UuSeuG2X+aVGUDGwxs4CbG5Ee3Nu0qM3jeHYj+cB9DZSd6KmhKMc078MrihuDNYylFPP D7Zwhn96meQ3LKxMDcFarzxHf+7m8e4V5nA8Lzhn95wpkwRulEBihiue0ak65sTN/Dhl SmrXuUwVG94h/TybsUufE5GNCtHJVJLss7Kha51gcvStmtfpsvPkHlxEylMkp5yZDgOQ HdNUsn1BrPO5b3dsjJSc1V1LXirQsJsFiYf1K4z0MettiJZZg6fj1vvH3Jl2cPx2MKca 1QhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:face:date :in-reply-to:message-id:user-agent:mime-version; bh=wQwXuz11i6PMq3fZxD6AGrUcy9WHNGzQT4zLZE4M/i0=; b=M3cOCnxjfJg41qWriawDXEczDXstzuvWG6uah86wHUEqyCxZw+fR/eqtDH5qtRHqRP h4NUq5k9KN0Vf2psIibmzaGRnEpsC+Qwri0tinMTCpM85R4G8a/d0dlKNbWOFB1Lwh06 cLE95ExXP/rKJlQDof1udAaekMkzhovRIGxyA0ig3npNnnz2iEORLRgSf6ozL/WGsvAC 23cYkrG6CPAQDo3o3x0TP26AXnZP3c42DShr+b/itb4wSEKnuQheEub1YoRyHpIxHfUW ecqzjWVyrpv4Kip3QBXa9zH7g/6hMo8wzoSg3BV6xpfAeCHTisTYMUPE8yiVtlmsi+5j LnIg== X-Gm-Message-State: APt69E0662shCPfW0AJozEsHSCf7mjSu1L/DBj7+GmOfOd/2SfYgCejz aX2mZTKq0DeKCX7g5EvdG/3hrA== X-Google-Smtp-Source: ADUXVKLz773NmAJ60QkkU5FQyN9f/AXPYTuJ4xtGpLukyJn+2eb1sCo9hR4yeOuf5pnybN4M8/NrzA== X-Received: by 2002:a62:18a:: with SMTP id 132-v6mr8396668pfb.62.1529828852573; Sun, 24 Jun 2018 01:27:32 -0700 (PDT) Received: from Zeuss-MacBook-Air.local ([110.54.223.149]) by smtp.gmail.com with ESMTPSA id g78-v6sm20675100pfe.39.2018.06.24.01.27.30 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 24 Jun 2018 01:27:31 -0700 (PDT) From: Leo Liu References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAGFBMVEUzRVhbQj4eZqO6SjnT eWpxnMetm5b6/PmidmqrAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1F B9cBBwMLBfKABCMAAAFoSURBVCjPtZI9a8MwEIaFoc7aYDdelQMna0Em3tsSr0XUeE2Q6a22a+v+ fk8fSSBkbDUI6dHpfe9OEvRgiD+ApqKPJgJeB6iUUXWESjUe/ig38AJrhqqvaU2nTIXbNvOQ40fe qdry4kyGoVWsfCQalXpHnJGM01wjWdYbMlXNFdsZDO69m9aqNqxEJqTEgbM5OF7wlEfIoll1Ked4 LbM5X2EdILLokEdmI8z7g5cKED0cuTC930TYhy7ZDekkXVGw/L60TguJePPxcJF48lpsSUWEA/Ju jGFNgJOXc4Hz7TmAdBeu5Ve4AEjOi2/2jfd3cAJZ+IbNrvdjgBZY01b+HTuG3cLws6BJZqVOj/pp T0OqVwx3rFq+QmJwx3loK5JSLEhDIt62+mtC2C+SrAUxEbV6C6v2BRbd6pILBKFpepKZJHgGgrKF sptSUUoczpwg2pQ7ZH1tgs0ou/917mzz6Cs2//C978cv5l07L02orIEAAAAASUVORK5CYII= Date: Sun, 24 Jun 2018 16:27:28 +0800 In-Reply-To: <87k1qpsdxc.fsf@gmail.com> (John Shahid's message of "Sat, 23 Jun 2018 15:47:11 +0000") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (macOS 10.12.6) MIME-Version: 1.0 Content-Type: text/plain 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 (-) On 2018-06-23 15:47 +0000, John Shahid wrote: > That seems to be a result of converting `global-eldoc-mode' to use > `define-globalized-minor-mode' in 2349f. Do you happen to know why post-command-hook doesn't protect itself from this error? ,----[ post-command-hook ] | If an unhandled error happens in running this hook, the function in | which the error occurred is unconditionally removed, since otherwise | the error might happen repeatedly and make Emacs nonfunctional. `---- This bug looks very serious because having to kill -9 emacs is serious. Leo From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: John Shahid Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 25 Jun 2018 14:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Leo Liu Cc: 31793@debbugs.gnu.org Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.152993516914329 (code B ref 31793); Mon, 25 Jun 2018 14:00:02 +0000 Received: (at 31793) by debbugs.gnu.org; 25 Jun 2018 13:59:29 +0000 Received: from localhost ([127.0.0.1]:35044 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fXS1h-0003j3-L1 for submit@debbugs.gnu.org; Mon, 25 Jun 2018 09:59:29 -0400 Received: from mail-qt0-f170.google.com ([209.85.216.170]:46375) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fXS1f-0003iq-7X for 31793@debbugs.gnu.org; Mon, 25 Jun 2018 09:59:27 -0400 Received: by mail-qt0-f170.google.com with SMTP id h5-v6so11960319qtm.13 for <31793@debbugs.gnu.org>; Mon, 25 Jun 2018 06:59:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=kpA9RdEIREmsPx+dMKOHXB51TIwzBm21nky3qiyWV78=; b=YaQ7Wu3LC1mdZLDxIsymtLLvgTH1/cURg2DsqijhMHa+FvPanvodAyeE9uuWMSOVsd l3VpjZ6ZVOMHu0TyRX6H5hFF+knbdp7KdgmodJimISp0LEGGKbNlHTOuhSXHV5m87BVN FGmFa8ARBtsmQW4gnQaCmYbmQ/Ab4lQmalTK2kCH+MnuBx1m4ZLwgcOObC/shWezH48B 2Hf/zCazjal09JR2bgcv95tMAwd54rg/i5rYglQMA8tBlbc++lekZ61yDT1erEGbNZig s3+HRgfivcStjRonJOxUtm4MwlBIwBxrRCHXakjHFMGwYS2hdJirMw9xJWuLIX2Ou67u w+iw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=kpA9RdEIREmsPx+dMKOHXB51TIwzBm21nky3qiyWV78=; b=JJddL+4Qv1i/XxJpsUvElVcfK4cPk98y87+thKNekrsGz0grJQwSAACzP+Py8p+Fe/ H6rWI8J8rpEDb8nst2fMWRuJvhZvm7JYFGwhMzBgYKve+2VWwTBhEDoRotcUjt7pQeAO b5Jq/eo6JYyYftRlMB9swjL99HrAafUg1u6T/RH8i394kAb+pKB/kcYFO1gSQE2Bh+9e gKncsUigvBtW4CfNfRF5dCS2eRQBLyzsQ3f4QZlY+O/0zKTLgwRWeFe9KgeqRkGzc9wk Hrdz9c45rZGWOT79ws1aThHN2ogLq8d+Hi6Kzm4hXGHu0qmde8pycFlkDyDrDo+qCkLh 5jAA== X-Gm-Message-State: APt69E37Jy+wJw+USENKsznIxWMpu7+kRtGmQH1GWRgjCw5rs34yncCV yDorNxQfpkZ9sdJ8jpKL/OoupkAk X-Google-Smtp-Source: AAOMgpdtRVT4jxMdKCQlthTZmWLebkWzt+nIuO/m3pOoF0WHky6OH0KyiSFRUe1Tl0XWiuUeNL1+xg== X-Received: by 2002:a0c:83e5:: with SMTP id k92-v6mr11051101qva.88.1529935160954; Mon, 25 Jun 2018 06:59:20 -0700 (PDT) Received: from 146f2c17b146 (cpe-184-152-55-93.nyc.res.rr.com. [184.152.55.93]) by smtp.gmail.com with ESMTPSA id u11-v6sm29869qki.41.2018.06.25.06.59.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Jun 2018 06:59:20 -0700 (PDT) References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> User-agent: mu4e 1.1.0; emacs 27.0.50 From: John Shahid In-reply-to: Date: Mon, 25 Jun 2018 13:59:13 +0000 Message-ID: <87tvprq85q.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain 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 (-) Leo Liu writes: > On 2018-06-23 15:47 +0000, John Shahid wrote: >> That seems to be a result of converting `global-eldoc-mode' to use >> `define-globalized-minor-mode' in 2349f. > > Do you happen to know why post-command-hook doesn't protect itself from > this error? This is due to the globalized minor mode re-adding itself to the `post-command-hook' in `,MODE-cmhh'. This only happens when the major-mode changes in some buffer. In other words, you will run into this only when trying to switch buffers or use the minibuffer. You can still navigate the file, i.e. `next-line' is usually fine for me. > This bug looks very serious because having to kill -9 emacs is > serious. I agree, but I can't think of a better way to avoid this problem aside from the patch I attached earlier. cheers, -js From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 25 Jun 2018 16:25:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Leo Liu Cc: 31793@debbugs.gnu.org, John Shahid Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.152994385427622 (code B ref 31793); Mon, 25 Jun 2018 16:25:01 +0000 Received: (at 31793) by debbugs.gnu.org; 25 Jun 2018 16:24:14 +0000 Received: from localhost ([127.0.0.1]:35123 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fXUHl-0007BS-SD for submit@debbugs.gnu.org; Mon, 25 Jun 2018 12:24:14 -0400 Received: from mail-oi0-f47.google.com ([209.85.218.47]:44350) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fXUHl-0007BG-2M for 31793@debbugs.gnu.org; Mon, 25 Jun 2018 12:24:13 -0400 Received: by mail-oi0-f47.google.com with SMTP id b5-v6so3930453oiy.11 for <31793@debbugs.gnu.org>; Mon, 25 Jun 2018 09:24:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=4KCGQQfaZ6+LFeTH1q5UXQ8UTPPXfpDpNPP4w/lt9c4=; b=hMXuHGZjB1nGaEQgsGCt/cyWM3ck9qIPJARgBLx6TlG6YaA7aDiUrIPPYQmFjjmVbI 484Qt3wJCF0umdSvKzU562f8YEXvn76ZtqXINQz/nDre4NjOxklAFno9TvfNEDI4yCxD GetSni/DZvDOJZsTxVYq+SfZ/FSrxCmXm6RzBm4HIr07QBo9vXGuImVW39r82ZXn1riL Biq0aDVusZZw7zIzkmMxtn+8yuzIYrsvtvy8tG1X4fPdqcXAV11KNntNfIfLVlAEL0vr Kjbg0nWjNPXIU2zQ6bfxaQc8L3f2FXhybWK7lHLbCzlXhw/J2nyBsjqVDR/mtee7SbQx mtzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=4KCGQQfaZ6+LFeTH1q5UXQ8UTPPXfpDpNPP4w/lt9c4=; b=ckAznBlb11E5+LwaEMQN3hfqb4DAG9bSCY8p3obJaNBhk5Hi0QuARjrCUkBBarOumM MIWuaElTuIOEk0zy691AAoGVTzaRPMMdQlnS2nkrmHQxTjfbD57flXPivmCzuayjHSu3 hzrMj0ApZ9TerRodt6m5CHDePlfDziRNEo2UP6602tpUIeA7N0hAYA/ffngGPWRkmDtm IrDsqGKuuhTePhdJy+mxePzzVWH21qO50mEOdnS/ZyHo3Jz6vXnrvCF9+0wXvVwcmBmW w6zTSBXg513mDqxTLROh0ImvNYPEMcCtXleuWlK1HfU85yvGmPlJ4G2lj+OBwfuknqIq pKNw== X-Gm-Message-State: APt69E1Yv33qtTGG6PcIanwCPT/3+Wy4Tr/G5SFPb6T9gI0BAo2PC9c5 5Fe7aA9IZdlPBiMP0JD0nnd0Kwitz2PCglRk3H8= X-Google-Smtp-Source: AAOMgpcuMBVkDSfVLvUHaiYtG6VlTvovgPb95hPYl1KpKescyHOvKJ5PSf0Wi01CQSGZ9cvnici0/pj6ZzCKSlF98Bg= X-Received: by 2002:aca:6a86:: with SMTP id f128-v6mr523744oic.330.1529943847346; Mon, 25 Jun 2018 09:24:07 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a4a:3b8d:0:0:0:0:0 with HTTP; Mon, 25 Jun 2018 09:24:06 -0700 (PDT) In-Reply-To: References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> From: Noam Postavsky Date: Mon, 25 Jun 2018 12:24:06 -0400 Message-ID: Content-Type: text/plain; charset="UTF-8" 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 (-) On 24 June 2018 at 04:27, Leo Liu wrote: > This bug looks very serious because having to kill -9 emacs is serious. I was able to recover by typing into the buffer "(fundamental-mode)" and then C-x C-e. From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: John Shahid Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 03 Jul 2018 16:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Leo Liu Cc: 31793@debbugs.gnu.org, Eli Zaretskii Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.153063623014034 (code B ref 31793); Tue, 03 Jul 2018 16:44:02 +0000 Received: (at 31793) by debbugs.gnu.org; 3 Jul 2018 16:43:50 +0000 Received: from localhost ([127.0.0.1]:45648 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1faOP7-0003eI-Nw for submit@debbugs.gnu.org; Tue, 03 Jul 2018 12:43:49 -0400 Received: from mail-qt0-f177.google.com ([209.85.216.177]:42559) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1faOP5-0003e5-Pd for 31793@debbugs.gnu.org; Tue, 03 Jul 2018 12:43:48 -0400 Received: by mail-qt0-f177.google.com with SMTP id y31-v6so2132133qty.9 for <31793@debbugs.gnu.org>; Tue, 03 Jul 2018 09:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=LiNhAFAsp6s78x1WRVrkbtCWJCMvjsvaosR1atHhczo=; b=Z43aNLvjT25Ll1HU/AUzkVQSRa7/93KOCu6uT0QjM0bXRzBKV7fhMiJn7S/OnAkISy LQ8c7Cer7hU8P50tTmJd9S2WpEW4VcL7YROWuxmX/pUTBFcGakswrNjjiImdUZJN+K56 4XVYLfRPFo9j9TfqgWkeb4CrX1XM4WxrhXMAkoc03aJC9iyTp/HwTgc3wcMQN8xPn5Jk iW376mCCQkvLbIm8dU6vysbqcWfgx6VbTz+x3TfCDEm3wjbG2lBegXc3lzJRYDzcBhNJ 7RJKMLCv1JVzUiUIU8rWFtMEojHrdNQ+ienU9tnzDbtihhJsEXQ2dY/3MfM5pipIGxzH k1fA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=LiNhAFAsp6s78x1WRVrkbtCWJCMvjsvaosR1atHhczo=; b=BhjPwHcRhzpdcgJ1Ej95cz9glzFLNMdy0dwlVuvwo0lcZz0tbpQUOIKad/VKzEcJer p841UtQIIbVaB4NrvBenFWsVgOrVUmW5HzDUyJA8Af1VeOATjyJFG6NdiGuS1u87O7zD 53hmXR/6aIJFSY+65eOUN2lYWh3Ml1gnty2PE+Xs1N311yt311gtr9/xOdfa2iF2zRNx BT8pY2QtP5eu+2FbEtXlUl2LfZ7R2C60WjHGhrORlQLvo6dwINQ1kl+eXWa9KwNk87Lx DB/XhpkWY+i6XT582O3ROYC+K+8htV1xHpgYJv4SFEukuGcUOvuPeZ83ZPMKqWZe78mN 6uAQ== X-Gm-Message-State: APt69E2/Gki63UcZN19KP3hNI0zJYnoWQ10bhyMqjUqlXeGHTr4nX/Gq wnApIYceJt1axVlryPlQifeDf6lc X-Google-Smtp-Source: AAOMgpc7GsiJBaABhrttfDoNwe5pXUFXNhl2uIIXlCBz5exM6zPqTaomAozg6JJBoExTzq6uyI162A== X-Received: by 2002:ac8:2485:: with SMTP id s5-v6mr27728926qts.350.1530636221841; Tue, 03 Jul 2018 09:43:41 -0700 (PDT) Received: from 9a50e8462956 ([142.154.219.2]) by smtp.gmail.com with ESMTPSA id t17-v6sm1191596qth.10.2018.07.03.09.43.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 03 Jul 2018 09:43:40 -0700 (PDT) References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> User-agent: mu4e 1.1.0; emacs 27.0.50 From: John Shahid In-reply-to: <87k1qpsdxc.fsf@gmail.com> Date: Tue, 03 Jul 2018 16:43:38 +0000 Message-ID: <87in5wxoat.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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 (-) --=-=-= Content-Type: text/plain John Shahid writes: > Leo Liu writes: > >> On 2018-06-12 08:21 +0300, Eli Zaretskii wrote: >>> Ugh, macOS... This means no xbacktrace and no other GDB >>> wizardry... >> >> Indeed. >> >>> Well, I think the most important thing is to produce a Lisp >>> backtrace from the error. >> >> Turns out 26.1 cannot load a version of python.el (by dave love) that I >> have in my site-lisp. >> >> 1. emacs -Q -l python.el >> 2. M-x python-mode >> >> ,----[ error ] >> | Variable binding depth exceeds max-specpdl-size >> | Error in post-command-hook (global-eldoc-mode-check-buffers): (error "Variable binding depth exceeds max-specpdl-size") >> `---- >> >> Gnus was just loading python-mode to fontify some code in an article. > > double posting since I sent the email only to Leo. > > VVVV original email VVVV > > That seems to be a result of converting `global-eldoc-mode' to use > `define-globalized-minor-mode' in 2349f. The recursive call seems to be > a result of the following sequence of calls: > > 1. python-mode is enabled which adds an eldoc-mode-hook > 2. eldoc-mode is turned on in the buffer triggering python's > eldoc-mode-hook > 3. python-mode hook will start an inferior process which in turn trigger > ,MODE-enable-in-buffers > 4. ,MODE-enable-in-buffers will go over the list again trying to enable > eldoc-mode > > The problem is in step 4. The eldoc-global-mode buffer list isn't reset > in step 2. Step 4 will try to enabe the mode for the same buffer and > start a sequence of calls at 2. I was able to fix this problem by > setting the buffer-list to nil inside ,MODE-enable-in-buffers. I > attached a patch below. Added the bug number to the changelog entry and attached a new patch. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Avoid-turning-on-the-global-minor-mode-recursively-B.patch >From 893e62ee7e3630c981adb3efa39ef409500d7657 Mon Sep 17 00:00:00 2001 From: John Shahid Date: Sat, 23 Jun 2018 11:12:44 -0400 Subject: [PATCH] Avoid turning on the global-minor-mode recursively (Bug#31793) * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Reset the buffer-list inside ,MODE-enable-in-buffers to avoid enabling the mode recursively --- lisp/emacs-lisp/easy-mmode.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index b83b53a8e5..648b88ca77 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -474,7 +474,9 @@ define-globalized-minor-mode ;; The function that calls TURN-ON in each buffer. (defun ,MODE-enable-in-buffers () - (dolist (buf ,MODE-buffers) + (let ((buffers ,MODE-buffers)) + (setq ,MODE-buffers nil) + (dolist (buf buffers) (when (buffer-live-p buf) (with-current-buffer buf (unless ,MODE-set-explicitly @@ -484,12 +486,11 @@ define-globalized-minor-mode (,mode -1) (funcall #',turn-on)) (funcall #',turn-on)))) - (setq ,MODE-major-mode major-mode))))) + (setq ,MODE-major-mode major-mode)))))) (put ',MODE-enable-in-buffers 'definition-name ',global-mode) (defun ,MODE-check-buffers () (,MODE-enable-in-buffers) - (setq ,MODE-buffers nil) (remove-hook 'post-command-hook ',MODE-check-buffers)) (put ',MODE-check-buffers 'definition-name ',global-mode) -- 2.18.0 --=-=-=-- From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 04 Jul 2018 22:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: John Shahid Cc: 31793@debbugs.gnu.org, Eli Zaretskii , Leo Liu Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.153074392914685 (code B ref 31793); Wed, 04 Jul 2018 22:39:01 +0000 Received: (at 31793) by debbugs.gnu.org; 4 Jul 2018 22:38:49 +0000 Received: from localhost ([127.0.0.1]:47062 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1faqQD-0003om-A3 for submit@debbugs.gnu.org; Wed, 04 Jul 2018 18:38:49 -0400 Received: from mail-it0-f45.google.com ([209.85.214.45]:54212) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1faqQB-0003oY-V9 for 31793@debbugs.gnu.org; Wed, 04 Jul 2018 18:38:48 -0400 Received: by mail-it0-f45.google.com with SMTP id a195-v6so9465221itd.3 for <31793@debbugs.gnu.org>; Wed, 04 Jul 2018 15:38:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=Hx8kiSPBsOJhtRtnXYAVLSvo/RZCdvy/KveEox+Vji8=; b=t6+5EqmhkUOyLLeD3KYDeYscr5WX/k+iVmPEjrR6CIlFhILFyP7BKA0txnPGQu2YnV Xp2rwa3Pb5lmMA0M0IRoLsUpx9+goCEcXYubNGXLd+BbAyZ6xK7g98x5v0LUQlzU6AWk E8nUASowZxSebYl9g3zBlguIPWvMaPGNL61gt9ZaPNkldcgRhDqtY/UKAiWZYevYwa7m hnZgOIu/lqSibg15ua4CLza8FBoouk8qN8dcVaHswSuHn0TZV9H8W2h38AFusr8QyDPW MMWjfaGo/P+lbNw7Y21kXnq3GzwHgT3AMCp6f1jn8CQbaS3AGQu51t8iS/I2eTbcQOOc sjbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=Hx8kiSPBsOJhtRtnXYAVLSvo/RZCdvy/KveEox+Vji8=; b=KpUtFUImdvVHzj3ozV61LEkwQIKkfa+oXspB7hfy3eaLC4mvHIDQlTeRkHCEwsH5Bz 1YYrxG8GHB8LSJH4gewzEBrKMGPpT4+1z1zInxnWO08B31lZ7a0050/IrfO+TYnwhkYR nQtMYsYSozdGo4nWHbBMST944F7rJUC/JiwFzq0YxbY4V1ZsFQcL6rgEZ0H1Zuh+LoyR 8+238BXbbutkfwkuUm8I81RhC0M/xzaRLO+DaMOyheNA4+bqpTZJ4YXEyDf0Fp7m4vh4 P0Az6FVUZyyBzRD6z6oYeDx8aN4Af1H9cnr15H0enz548ySzf5UIxeErFNfHj2i46DQP B/gQ== X-Gm-Message-State: APt69E3OJiyW4opgTzGeEVC1K1makB2dPwa05x7oHYtY3MiQR+W8xqwh IocL2vITZBArv8Yy4XsLhOQ= X-Google-Smtp-Source: AAOMgpd7oRm0FtQN5sWCz9aHnQeVSEZngadUdo1TkJlxN4KIbjPla7dr2juowdWRKHrLVLWQ5y81ZQ== X-Received: by 2002:a24:5004:: with SMTP id m4-v6mr3000450itb.38.1530743922470; Wed, 04 Jul 2018 15:38:42 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id k21-v6sm2474518itb.28.2018.07.04.15.38.41 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 04 Jul 2018 15:38:41 -0700 (PDT) From: Noam Postavsky References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> <87in5wxoat.fsf@gmail.com> Date: Wed, 04 Jul 2018 18:38:40 -0400 In-Reply-To: <87in5wxoat.fsf@gmail.com> (John Shahid's message of "Tue, 03 Jul 2018 16:43:38 +0000") Message-ID: <87h8lelj7z.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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 (-) John Shahid writes: >> That seems to be a result of converting `global-eldoc-mode' to use >> `define-globalized-minor-mode' in 2349f. The recursive call seems to be >> a result of the following sequence of calls: >> >> 1. python-mode is enabled which adds an eldoc-mode-hook >> 2. eldoc-mode is turned on in the buffer triggering python's >> eldoc-mode-hook >> 3. python-mode hook will start an inferior process which in turn trigger >> ,MODE-enable-in-buffers >> 4. ,MODE-enable-in-buffers will go over the list again trying to enable >> eldoc-mode >> >> The problem is in step 4. The eldoc-global-mode buffer list isn't reset >> in step 2. Step 4 will try to enabe the mode for the same buffer and >> start a sequence of calls at 2. I was able to fix this problem by >> setting the buffer-list to nil inside ,MODE-enable-in-buffers. I >> attached a patch below. Looks good to me. I guess there is some risk since we are modifying a macro which affects a lot of modes, but when balanced against the "risk" that we actually fix similar problems in those modes I think this should go to emacs-26. > Added the bug number to the changelog entry and attached a new patch. > >>>From 893e62ee7e3630c981adb3efa39ef409500d7657 Mon Sep 17 00:00:00 2001 > From: John Shahid > Date: Sat, 23 Jun 2018 11:12:44 -0400 > Subject: [PATCH] Avoid turning on the global-minor-mode recursively > (Bug#31793) > > * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Reset > the buffer-list inside ,MODE-enable-in-buffers to avoid enabling the > mode recursively I would drop that comma from the commit message though, it's not really part of the variable name, it's only meaningful in the context of a backquote (and you forgot the period at the end of the sentence). From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Jul 2018 14:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Noam Postavsky Cc: 31793@debbugs.gnu.org, jvshahid@gmail.com, sdl.web@gmail.com Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.153079915218134 (code B ref 31793); Thu, 05 Jul 2018 14:00:02 +0000 Received: (at 31793) by debbugs.gnu.org; 5 Jul 2018 13:59:12 +0000 Received: from localhost ([127.0.0.1]:47876 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fb4mu-0004iP-I7 for submit@debbugs.gnu.org; Thu, 05 Jul 2018 09:59:12 -0400 Received: from eggs.gnu.org ([208.118.235.92]:34828) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fb4ms-0004iD-JA for 31793@debbugs.gnu.org; Thu, 05 Jul 2018 09:59:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fb4mk-0003pr-6k for 31793@debbugs.gnu.org; Thu, 05 Jul 2018 09:59:05 -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.5 required=5.0 tests=BAYES_05 autolearn=disabled version=3.3.2 Received: from fencepost.gnu.org ([2001:4830:134:3::e]:57728) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fb4mk-0003pC-1z; Thu, 05 Jul 2018 09:59:02 -0400 Received: from [176.228.60.248] (port=3559 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1fb4mj-0003kZ-Ge; Thu, 05 Jul 2018 09:59:01 -0400 Date: Thu, 05 Jul 2018 16:59:01 +0300 Message-Id: <83tvpdn5qy.fsf@gnu.org> From: Eli Zaretskii In-reply-to: <87h8lelj7z.fsf@gmail.com> (message from Noam Postavsky on Wed, 04 Jul 2018 18:38:40 -0400) References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> <87in5wxoat.fsf@gmail.com> <87h8lelj7z.fsf@gmail.com> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2001:4830:134:3::e X-Spam-Score: -5.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: -6.0 (------) > From: Noam Postavsky > Cc: Leo Liu , 31793@debbugs.gnu.org, Eli Zaretskii > Date: Wed, 04 Jul 2018 18:38:40 -0400 > > >> The problem is in step 4. The eldoc-global-mode buffer list isn't reset > >> in step 2. Step 4 will try to enabe the mode for the same buffer and > >> start a sequence of calls at 2. I was able to fix this problem by > >> setting the buffer-list to nil inside ,MODE-enable-in-buffers. I > >> attached a patch below. > > Looks good to me. I guess there is some risk since we are modifying a > macro which affects a lot of modes, but when balanced against the "risk" > that we actually fix similar problems in those modes I think this should > go to emacs-26. OK, but please add a comment there explaining why we set the MODE-buffers to nil. > > Added the bug number to the changelog entry and attached a new patch. > > > >>From 893e62ee7e3630c981adb3efa39ef409500d7657 Mon Sep 17 00:00:00 2001 > > From: John Shahid > > Date: Sat, 23 Jun 2018 11:12:44 -0400 > > Subject: [PATCH] Avoid turning on the global-minor-mode recursively > > (Bug#31793) It is better to add the bug number to the body of the log message, not to the header, because the latter has only limited space. > > * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Reset > > the buffer-list inside ,MODE-enable-in-buffers to avoid enabling the > > mode recursively > > I would drop that comma from the commit message though, it's not really > part of the variable name, it's only meaningful in the context of a > backquote (and you forgot the period at the end of the sentence). Agreed. Thanks. From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: John Shahid Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 05 Jul 2018 16:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 31793@debbugs.gnu.org, Noam Postavsky , sdl.web@gmail.com Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.153080842832477 (code B ref 31793); Thu, 05 Jul 2018 16:34:02 +0000 Received: (at 31793) by debbugs.gnu.org; 5 Jul 2018 16:33:48 +0000 Received: from localhost ([127.0.0.1]:47950 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fb7CU-0008Ri-CD for submit@debbugs.gnu.org; Thu, 05 Jul 2018 12:33:48 -0400 Received: from mail-qt0-f181.google.com ([209.85.216.181]:46493) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fb7CT-0008RU-5g for 31793@debbugs.gnu.org; Thu, 05 Jul 2018 12:33:45 -0400 Received: by mail-qt0-f181.google.com with SMTP id h5-v6so7595685qtm.13 for <31793@debbugs.gnu.org>; Thu, 05 Jul 2018 09:33:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:cc:subject:in-reply-to:date :message-id:mime-version; bh=PCQAUyWmM/W/vWYh3OqYI7uxmCbt1dJgxDNYCcP84JM=; b=avNMaaMreCskO94Q4afJCUFnl1iW8szSzxtSxY9uE2tEsGtVbRZO9Tv6LjZTxqFT9+ aNiq7YhirtrVz/SNgvb5jAsRZeOk6+4Fjme/qC5sOnqosIwhr8fJznmH1jIgyU/rKr7E yrcK9karkm8dMW70GIUOtleWRWjBDeaoHpqeRCQJQ9NMOF1B5499pbWLqYkkBOVb6l1D Ib/7FPY2b+Lbdf9QJCDq9srcJnNJFD99oGSOweWmY8yZqtic2gc5L/Mn1Dz0UsQAh3I/ ldVy8+kCUxG9RTY4+n+kHFztVBd90B4nHNbZvdrLNL/jjuQXmiP9pyoBELA81NlaG3pR lA0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:cc:subject :in-reply-to:date:message-id:mime-version; bh=PCQAUyWmM/W/vWYh3OqYI7uxmCbt1dJgxDNYCcP84JM=; b=dvMDeF6KuWYQrC1EZyntz0QCToAOg/DiXjMOrjG8JDALjboQioJevlTUoL4ma2SZ98 2/5McGoiyDI7SWv2RDpzq9WCh2JKOCfyzFyHGYOntdbZ0n7SrxQhRDOZFPBuV/pOoLzA drqOYQnul9UBbcANWncYlikiJY0T3CyEtDV7Yd51JMY2AOk0NKxv1IMpmYZxjL+W9zPY UCxOtnNAboA/lBP4nKdkwqniVDa8pKZuK97XzrWLlvdSblXLZzwZGhej+jyUYYQz41Na xfxa9RieKfGVo5n3M9xfxcTCc6/yz4u9Ilc6u1G0bPXD9+GnUjSXlobVVBMA9PXWnPSt lO3Q== X-Gm-Message-State: APt69E3UIooRva5YJvV0tWbfBH05cQSPgw52htfUUrXxqpnP/IUad/7M MmG80ao56wyqkGCWuvUcngeuZOX+ X-Google-Smtp-Source: AAOMgpednGoSgvnWsdtv9qqpYIqnU6zuaFWAG6xMJMtC13mquyET+8NsuPyFyEl8foMDUjnkwnl7BQ== X-Received: by 2002:a0c:a991:: with SMTP id a17-v6mr5699772qvb.83.1530808419127; Thu, 05 Jul 2018 09:33:39 -0700 (PDT) Received: from 88a2f9d11b18 (cpe-184-152-55-93.nyc.res.rr.com. [184.152.55.93]) by smtp.gmail.com with ESMTPSA id q83-v6sm2596624qki.67.2018.07.05.09.33.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Jul 2018 09:33:38 -0700 (PDT) References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> <87in5wxoat.fsf@gmail.com> <87h8lelj7z.fsf@gmail.com> <83tvpdn5qy.fsf@gnu.org> User-agent: mu4e 1.1.0; emacs 27.0.50 From: John Shahid In-reply-to: <83tvpdn5qy.fsf@gnu.org> Date: Thu, 05 Jul 2018 16:33:29 +0000 Message-ID: <87lgaplk12.fsf@gmail.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" 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 (-) --=-=-= Content-Type: text/plain Eli Zaretskii writes: >> From: Noam Postavsky >> Cc: Leo Liu , 31793@debbugs.gnu.org, Eli Zaretskii >> Date: Wed, 04 Jul 2018 18:38:40 -0400 >> >> >> The problem is in step 4. The eldoc-global-mode buffer list isn't reset >> >> in step 2. Step 4 will try to enabe the mode for the same buffer and >> >> start a sequence of calls at 2. I was able to fix this problem by >> >> setting the buffer-list to nil inside ,MODE-enable-in-buffers. I >> >> attached a patch below. >> >> Looks good to me. I guess there is some risk since we are modifying a >> macro which affects a lot of modes, but when balanced against the "risk" >> that we actually fix similar problems in those modes I think this should >> go to emacs-26. > > OK, but please add a comment there explaining why we set the > MODE-buffers to nil. > >> > Added the bug number to the changelog entry and attached a new patch. >> > >> >>From 893e62ee7e3630c981adb3efa39ef409500d7657 Mon Sep 17 00:00:00 2001 >> > From: John Shahid >> > Date: Sat, 23 Jun 2018 11:12:44 -0400 >> > Subject: [PATCH] Avoid turning on the global-minor-mode recursively >> > (Bug#31793) > > It is better to add the bug number to the body of the log message, > not to the header, because the latter has only limited space. > >> > * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Reset >> > the buffer-list inside ,MODE-enable-in-buffers to avoid enabling the >> > mode recursively >> >> I would drop that comma from the commit message though, it's not really >> part of the variable name, it's only meaningful in the context of a >> backquote (and you forgot the period at the end of the sentence). > > Agreed. Thanks for taking a look and reviewing the patch. Attached a new patch with the suggested changes. Cheers, --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Avoid-turning-on-the-global-minor-mode-recursively.patch >From b8de8143d74777f25c9ec6f867c040332de810c4 Mon Sep 17 00:00:00 2001 From: John Shahid Date: Sat, 23 Jun 2018 11:12:44 -0400 Subject: [PATCH] Avoid turning on the global-minor-mode recursively * lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Clear the buffer-list inside MODE-enable-in-buffers to avoid enabling the mode recursively. (Bug#31793) --- lisp/emacs-lisp/easy-mmode.el | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index b83b53a8e5..6bf657848c 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -474,7 +474,12 @@ define-globalized-minor-mode ;; The function that calls TURN-ON in each buffer. (defun ,MODE-enable-in-buffers () - (dolist (buf ,MODE-buffers) + (let ((buffers ,MODE-buffers)) + ;; Clear MODE-buffers to avoid scanning the same list of + ;; buffers in recursive calls to MODE-enable-in-buffers. + ;; Otherwise it could lead to infinite recursion. + (setq ,MODE-buffers nil) + (dolist (buf buffers) (when (buffer-live-p buf) (with-current-buffer buf (unless ,MODE-set-explicitly @@ -484,12 +489,11 @@ define-globalized-minor-mode (,mode -1) (funcall #',turn-on)) (funcall #',turn-on)))) - (setq ,MODE-major-mode major-mode))))) + (setq ,MODE-major-mode major-mode)))))) (put ',MODE-enable-in-buffers 'definition-name ',global-mode) (defun ,MODE-check-buffers () (,MODE-enable-in-buffers) - (setq ,MODE-buffers nil) (remove-hook 'post-command-hook ',MODE-check-buffers)) (put ',MODE-check-buffers 'definition-name ',global-mode) -- 2.18.0 --=-=-=-- From unknown Sat Aug 16 14:31:27 2025 X-Loop: help-debbugs@gnu.org Subject: bug#31793: 26.1; (error "Lisp nesting exceeds =?UTF-8?Q?=E2=80=98max-lisp-eval-depth=E2=80=99?=") Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 10 Jul 2018 12:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 31793 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: John Shahid Cc: 31793@debbugs.gnu.org, Eli Zaretskii , sdl.web@gmail.com Received: via spool by 31793-submit@debbugs.gnu.org id=B31793.153122507730131 (code B ref 31793); Tue, 10 Jul 2018 12:18:01 +0000 Received: (at 31793) by debbugs.gnu.org; 10 Jul 2018 12:17:57 +0000 Received: from localhost ([127.0.0.1]:53133 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fcraf-0007pp-Fq for submit@debbugs.gnu.org; Tue, 10 Jul 2018 08:17:57 -0400 Received: from mail-it0-f50.google.com ([209.85.214.50]:53793) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fcrab-0007pW-O9; Tue, 10 Jul 2018 08:17:54 -0400 Received: by mail-it0-f50.google.com with SMTP id a195-v6so30136152itd.3; Tue, 10 Jul 2018 05:17:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=zzFojy8Xaiw7FYMOSSAl+0QPKHatOS1LiHcvYwE+cYE=; b=VP5PW4WU+Gt/vK9k3pPQ3cBDgXc6Psy+JpI01EUGta6d7zlmJgrOXLkx83JEbN7j3O nsUKlGfjMhDYX05801aa4yPhbcZZBAEzVNx358Jj4VRT1jtoycPBr2uuSWZrjw3/Jbhc qUvzATNntz2wso11E29K2s/CJkoapxOiDltlTeDFdwPcgjfl6GFgS/jW8HC4z+s/4Nrz vhrVjf9f/dXYzJh921C+m8pRZR/hPDKUb4vVjajdKV8IaAupMV6wFlNjY4YXOx+9ZyIl T4iNw8l35wT4Hq7sL5DQ7VVQ6duvHj4R8Q7DoIi53vU8mSgYnv8AD9+VRBa82ANelZMK tPXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=zzFojy8Xaiw7FYMOSSAl+0QPKHatOS1LiHcvYwE+cYE=; b=jE5ddoLXmB+4k2Bn4v9A0OVhVo7gsdQuVg29ZFrEdPb7AaUQAjvLyaU6W1cRCLFwqV 8fW9vLbEer4oYPcpnQgEps95RQOkVkWwIvmHAkKxq+PKaR97SJ1ssfkx7GTG72IAhM5F 4ec/VrET6dCHcGicrrEKqlh5+VSZUCheMBloOEs/ejeUQpcR2lzTZ64dqJa06Z4jeGuA X1e1kXwaaRCHZ4UvFvK3qTXvZRUX0ZSrMygpzQ0pqlZj7+HnqUdWrKlpfuAUbhGnIfi7 f/Ose/9SZiixgZS+X0mGLDc65fSX+GHL1s2wfmnH0y2W6O0GczM7xqMgU6tisBIWNGV2 P/6Q== X-Gm-Message-State: APt69E0Hkl2FOBeL5oltjfvJDvLnIFpEoiWRfab7b1WlIzjTEaZu+3JG JFwX2h6s9serTRPbsLr2J+bezg== X-Google-Smtp-Source: AAOMgpdgiEInCBGakQpuPJDendRkOPCCLJ53h5tm+Z/azyxJvH4lrpelpY+kuhHn3o7vS8cmT9IVJA== X-Received: by 2002:a24:6302:: with SMTP id j2-v6mr12051048itc.8.1531225068174; Tue, 10 Jul 2018 05:17:48 -0700 (PDT) Received: from zebian (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.googlemail.com with ESMTPSA id 7-v6sm9935472itz.12.2018.07.10.05.17.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 10 Jul 2018 05:17:47 -0700 (PDT) From: Noam Postavsky References: <99D8E495-B396-4266-8BF1-BA0B609DEC3D@gnu.org> <87k1qpsdxc.fsf@gmail.com> <87in5wxoat.fsf@gmail.com> <87h8lelj7z.fsf@gmail.com> <83tvpdn5qy.fsf@gnu.org> <87lgaplk12.fsf@gmail.com> Date: Tue, 10 Jul 2018 08:17:45 -0400 In-Reply-To: <87lgaplk12.fsf@gmail.com> (John Shahid's message of "Thu, 05 Jul 2018 16:33:29 +0000") Message-ID: <874lh7cmja.fsf@gmail.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain 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 (-) tags 31793 fixed close 31793 26.2 quit John Shahid writes: > Thanks for taking a look and reviewing the patch. Attached a new patch > with the suggested changes. Pushed to emacs-26. [1: 35e0305dc2]: 2018-07-10 08:13:39 -0400 Avoid turning on the global-minor-mode recursively https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=35e0305dc2a57cea6fcb515db9e0b0f938daf53a