GNU bug report logs - #24048
25.0.95; syntax-ppss can be slow

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Aaron Jensen <aaronjensen@HIDDEN>; Keywords: moreinfo; dated Thu, 21 Jul 2016 14:31:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.
Added tag(s) moreinfo. Request was from Lars Ingebrigtsen <larsi@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at 24048 <at> debbugs.gnu.org:


Received: (at 24048) by debbugs.gnu.org; 1 Dec 2021 19:47:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 01 14:47:54 2021
Received: from localhost ([127.0.0.1]:45748 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1msVa6-0005ps-4h
	for submit <at> debbugs.gnu.org; Wed, 01 Dec 2021 14:47:54 -0500
Received: from quimby.gnus.org ([95.216.78.240]:57800)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1msVa4-0005pH-Qx
 for 24048 <at> debbugs.gnu.org; Wed, 01 Dec 2021 14:47:53 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=sGGWBEFOnaYcxOBM6Ih38MVEjOBqmkbwp4NTuIFK9H8=; b=A/V4pUMk5RHXulAAVSDK6SR1+M
 vWFCYHbjYA2iZipkWPeGjvZIyiXSyks+Jo8+PgMh4RME1ILW6kCA/thVaWPo5rjE6B/DSGP5ujXn8
 K9LeUAEhvIz/KOMLHXnTPOe9H1R3ceoj/qVqCnCTIMNdGTOVQ3190o6VGKYiDWr826q4=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1msVZw-00028B-LA; Wed, 01 Dec 2021 20:47:47 +0100
From: Lars Ingebrigtsen <larsi@HIDDEN>
To: Aaron Jensen <aaronjensen@HIDDEN>
Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow
References: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
 <db33bc47-1b75-acee-905a-8883a7520193@HIDDEN>
 <CAHyO48ywOJY8F7=bJbEPA9mcN1WnZx56fQzbzkFdWZLuACx9MQ@HIDDEN>
 <d001029a-32a6-a915-bc83-3c6701f415ac@HIDDEN>
 <CAHyO48xeXB3uQg95xwYcCNm57iA2XJ1jYRwE9o63FQ_W90BQAw@HIDDEN>
 <CAHyO48xKhjqvqNgEy6fTTNyh0yDjAvhf7KtZ9DDNzr9U_J=DKQ@HIDDEN>
X-Now-Playing: Hyd's _Hyd_: "The Look on Your Face"
Date: Wed, 01 Dec 2021 20:47:44 +0100
In-Reply-To: <CAHyO48xKhjqvqNgEy6fTTNyh0yDjAvhf7KtZ9DDNzr9U_J=DKQ@HIDDEN>
 (Aaron Jensen's message of "Fri, 30 Mar 2018 06:09:45 -0700")
Message-ID: <87o860f6ov.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Aaron Jensen <aaronjensen@HIDDEN> writes: > Ultimately,
 it seems like it may be worth reconsidering this condition: > > (and old-pos
 (< (- pos old-pos) > ;; The time to use syntax-begin-function and > ;; find
 PPSS is assumed to be about 2 * d [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 24048
Cc: 24048 <at> debbugs.gnu.org, Dmitry Gutov <dgutov@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Aaron Jensen <aaronjensen@HIDDEN> writes:

> Ultimately, it seems like it may be worth reconsidering this condition:
>
> (and old-pos (< (- pos old-pos)
>     ;; The time to use syntax-begin-function and
>     ;; find PPSS is assumed to be about 2 * distance.
>     (* 2 (/ (cdr (aref syntax-ppss-stats 5))
>     (1+ (car (aref syntax-ppss-stats 5)))))))

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

This bit is now:

	(if (and old-pos (< (- pos old-pos)
			    ;; The time to use syntax-begin-function and
			    ;; find PPSS is assumed to be about 2 * distance.
			    (let ((pair (aref syntax-ppss-stats 5)))
			      (/ (* 2 (cdr pair)) (car pair)))))

I.e., the last clause is gone.  I don't know whether this affects the
issue you were seeing, though.  Is syntax-ppss still mis-caching things
for you?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#24048; Package emacs. Full text available.

Message received at 24048 <at> debbugs.gnu.org:


Received: (at 24048) by debbugs.gnu.org; 30 Mar 2018 13:09:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Mar 30 09:09:53 2018
Received: from localhost ([127.0.0.1]:59550 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1f1tmz-00051v-64
	for submit <at> debbugs.gnu.org; Fri, 30 Mar 2018 09:09:53 -0400
Received: from mail-qk0-f181.google.com ([209.85.220.181]:45328)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <aaronjensen@HIDDEN>) id 1f1tmx-00051i-Hx
 for 24048 <at> debbugs.gnu.org; Fri, 30 Mar 2018 09:09:51 -0400
Received: by mail-qk0-f181.google.com with SMTP id s9so9025785qke.12
 for <24048 <at> debbugs.gnu.org>; Fri, 30 Mar 2018 06:09:51 -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
 :content-transfer-encoding;
 bh=3AIXvkpNrG5S8Kf7pWxAkrrgnmARnB1A66eYwOha3Tk=;
 b=mYArbIUq4U23IQ9MOezeGRBMvmpDEz/twqZAWDP31Ww+cXvlnbvNc6qVORko92zJZn
 FBXIc8Q1d0AkXnPAocSZRE1zlu7ZvbY5+dLsmqtqyJeA9VuidVahvihcO9pBa8xwArGP
 MSmh4ott0T4cUjcsgBTb0BNbYyIxk7z4qrkR4oEgk0kiqJl8grxSm+XKCvyvj9sv3Emb
 j4UcRMiBkh6MrlEs4MKOHMnY9L5dhD2XFFztk8Lyx5tGS7ReWsicyJpwJwpLHZ37pqwn
 zidXQwlnLe+jKOXeWkFZk1k10bGaEH1vhqNGqaune1lZbEGnd+9FhQjYTm/SW74Ag96w
 h3Sg==
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:content-transfer-encoding;
 bh=3AIXvkpNrG5S8Kf7pWxAkrrgnmARnB1A66eYwOha3Tk=;
 b=cSZimCO0juIO4Vp6Gg8vcEQF+lteIto0eIfqjpSt79qUY/7v2IRJ8qKuEVMmz3JzEL
 5lxoWsh4j5tgmVypFF3xEsfDmqrWV4INCMzej/5P2Ubb7CSQmerBB3jxTkctt26Dn09h
 WDFqvXJwaprr+WFPmIB5idTQwOLHyNkXjpz5KfEDs0Ayf2G9igMwf2aNzHIspt1XCLVz
 /UOi38PqsAG1gxdcdPTsKQj4pNkdeTv4q4nhayCssNLmSpjnjFJosgz3QsNfz8bosKZL
 yVZyiAEuOckqP7nsUNDtNhmhftrKUllYhIwx6CdDf0uESY/rpiqhvUjBtRJE1b6HYf+j
 xOxA==
X-Gm-Message-State: AElRT7HO/WPwAwKAgXaV3d+zm23GAeXyKL+fGh8kSmuccb0PFzfw9BGg
 mJ7o0pKawtmTQOys5qkonbDY/UV3M3H0F1qSI/E=
X-Google-Smtp-Source: AIpwx48iUppxfMr9bXJaRmOfxAvbB0Cmb04RJot7VB0aBXd5jh/mvA417md6LCl619nWkRwvFNEOQn8gcVC8SscEaJw=
X-Received: by 10.233.221.2 with SMTP id r2mr16581550qkf.259.1522415386197;
 Fri, 30 Mar 2018 06:09:46 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.237.60.76 with HTTP; Fri, 30 Mar 2018 06:09:45 -0700 (PDT)
In-Reply-To: <CAHyO48xeXB3uQg95xwYcCNm57iA2XJ1jYRwE9o63FQ_W90BQAw@HIDDEN>
References: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
 <db33bc47-1b75-acee-905a-8883a7520193@HIDDEN>
 <CAHyO48ywOJY8F7=bJbEPA9mcN1WnZx56fQzbzkFdWZLuACx9MQ@HIDDEN>
 <d001029a-32a6-a915-bc83-3c6701f415ac@HIDDEN>
 <CAHyO48xeXB3uQg95xwYcCNm57iA2XJ1jYRwE9o63FQ_W90BQAw@HIDDEN>
From: Aaron Jensen <aaronjensen@HIDDEN>
Date: Fri, 30 Mar 2018 06:09:45 -0700
Message-ID: <CAHyO48xKhjqvqNgEy6fTTNyh0yDjAvhf7KtZ9DDNzr9U_J=DKQ@HIDDEN>
Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow
To: Dmitry Gutov <dgutov@HIDDEN>, 24048 <at> debbugs.gnu.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 24048
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

On Mon, Jul 25, 2016 at 8:08 AM, Aaron Jensen <aaronjensen@HIDDEN> wrote=
:
> On Mon, Jul 25, 2016 at 5:42 AM Dmitry Gutov <dgutov@HIDDEN> wrote:
>>
>> Is 5.6ms really significant? You should be typing like 200 characters
>> per _second_ to really notice the difference.
>>
>> Even 12ms that I'm getting at the bottom of your example file doesn't
>> sound like it should have effect on the perceptible latency.
>
> Even if one can=E2=80=99t feel 5.6ms, it becomes another brick in the bag=
, i.e. if another minor mode did something similar and added another 5.6ms.=
 With enough of them most people could probably feel it.

Hey all, I'm trying to clean up bugs I've submitted. This one is still
an issue of sorts. I've fixed the downstream usage of syntax-ppss by
memoizing it, but that feels like it should be unnecessary given that
syntax-ppss is meant to do its own caching.

The problem here is that syntax-ppss will not update its cache if it
is "close enough" to the old position. In languages like Elixir (and
probably Ruby) the old position is often the beginning of the outer
module which spans most, if not all of the file. This means that the
further you get down the file, the further you get from the old
position and the more work syntax-ppss must do.

If a user of syntax-ppss is not careful (as was the case in
smartparens) then syntax-ppss can be called multiple times in
succession, which can add up to enough latency to be noticed.

Ultimately, it seems like it may be worth reconsidering this condition:

(and old-pos (< (- pos old-pos)
    ;; The time to use syntax-begin-function and
    ;; find PPSS is assumed to be about 2 * distance.
    (* 2 (/ (cdr (aref syntax-ppss-stats 5))
    (1+ (car (aref syntax-ppss-stats 5)))))))

But I do not know what other impacts that may have.

Does anybody have any new thoughts on this?

Thanks!




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#24048; Package emacs. Full text available.

Message received at 24048 <at> debbugs.gnu.org:


Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 15:08:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jul 25 11:08:29 2016
Received: from localhost ([127.0.0.1]:37093 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bRhUb-0000ac-8Q
	for submit <at> debbugs.gnu.org; Mon, 25 Jul 2016 11:08:29 -0400
Received: from mail-io0-f182.google.com ([209.85.223.182]:33305)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <aaronjensen@HIDDEN>) id 1bRhUZ-0000aP-Kt
 for 24048 <at> debbugs.gnu.org; Mon, 25 Jul 2016 11:08:28 -0400
Received: by mail-io0-f182.google.com with SMTP id 38so164021506iol.0
 for <24048 <at> debbugs.gnu.org>; Mon, 25 Jul 2016 08:08:27 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
 bh=OOuoPrKbwnO4zfKsObM+dlUl7sNVMihMzd4Xn46bW8E=;
 b=qXVfbXm98pkcNDpWmBl5sj0ktNBTAK84aGM72FR3DNh6BLROtnfMULPp6hzOET16jK
 8hyUo6cfEO9hykCE7vk6DQe5XvpAFo+VPXCwrNE19ZI9N8aIU5F3zjrRZ47pShxQpzRM
 +epfias1A6tGXX17HZHBLDBh7lCmCTp29kQmt0YBVF9XlRiI4ivZ0h7ThdE8aAQDRQbK
 m/2LgXJELNxVybFMV6AzV9kBS3CzWlKXPCtEOppkH8oeTffP7V1iWtjaccmgdJoqujTi
 wJXJD8EB/QgCesLEB53FYNRoevVcX77Od+RZLH5Y+Rvo1ONfHYafiv5QXAecQH9kbHbk
 FccQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to;
 bh=OOuoPrKbwnO4zfKsObM+dlUl7sNVMihMzd4Xn46bW8E=;
 b=Bqw9ytGXLuKynKluqjMIPJfOqPloyKz3ro+CMgvXK9L+wpO8vLk5J35ICTTmzaMr0K
 6JeL9fHpl8aEV5t8smd49Cw3SmujRj5rfXla1/x4vpFPFEZjMAxIqxaX85VLS+sdcjJG
 RFAIhRxhdrdE3Z48EpTwYfjYIdFNquetoHB5XAll6qyZhfkHw8ZzYunvVIRvSOGNx6HP
 9U2dct4pg9msTF7iQ4iyQfz1XyjSbq6xATHKOmro5ugpd04gj2Bq7Gewf9wDBY0xN97r
 3xwEokqbgA5x+WT4M9m7J7fiJ0RlAfnsgS00mWA99bsWAu+37f3RgOSPTlSPe48PfF/e
 PY1A==
X-Gm-Message-State: AEkoousVtt5wYss1WwTiu70hOoTxBd8G1nO2iQzAzRky7iSY7LrcW8wj4XVx++wPu6ucY7HuAXfsm1OnVPCyAQ==
X-Received: by 10.107.175.27 with SMTP id y27mr22876521ioe.137.1469459301883; 
 Mon, 25 Jul 2016 08:08:21 -0700 (PDT)
MIME-Version: 1.0
References: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
 <db33bc47-1b75-acee-905a-8883a7520193@HIDDEN>
 <CAHyO48ywOJY8F7=bJbEPA9mcN1WnZx56fQzbzkFdWZLuACx9MQ@HIDDEN>
 <d001029a-32a6-a915-bc83-3c6701f415ac@HIDDEN>
In-Reply-To: <d001029a-32a6-a915-bc83-3c6701f415ac@HIDDEN>
From: Aaron Jensen <aaronjensen@HIDDEN>
Date: Mon, 25 Jul 2016 15:08:11 +0000
Message-ID: <CAHyO48xeXB3uQg95xwYcCNm57iA2XJ1jYRwE9o63FQ_W90BQAw@HIDDEN>
Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow
To: Dmitry Gutov <dgutov@HIDDEN>, 24048 <at> debbugs.gnu.org
Content-Type: multipart/related; boundary=001a114644cab416cc0538772744
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 24048
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.0 (/)

--001a114644cab416cc0538772744
Content-Type: multipart/alternative; boundary=001a114644cab416c80538772743

--001a114644cab416c80538772743
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

On Mon, Jul 25, 2016 at 5:42 AM Dmitry Gutov <dgutov@HIDDEN> wrote:

> Is 5.6ms really significant? You should be typing like 200 characters
> per _second_ to really notice the difference.
>
> Even 12ms that I'm getting at the bottom of your example file doesn't
> sound like it should have effect on the perceptible latency.
>

That=E2=80=99s a totally fair question, but yes, I can feel the difference =
while
typing. Ever since switching to Emacs I could feel significant latency in
my setup so I=E2=80=99ve been on a quest to bring it down. That quest led m=
e to
smartparens and first to that case-fold-search binding issue and now here.

Even if one can=E2=80=99t feel 5.6ms, it becomes another brick in the bag, =
i.e. if
another minor mode did something similar and added another 5.6ms. With
enough of them most people could probably feel it.

If you haven=E2=80=99t read it, I recommend looking over
https://pavelfatin.com/typing-with-pleasure/

He has a tool on there for measuring typing latency. Here is a histogram of
the difference between typing at the bottom of the sample file, the top,
and the bottom with memoizing syntax-ppss in smartparens:

[image: Bottom VS Top VS Memoize Bottom.png]
<https://pavelfatin.com/typing-with-pleasure/>
--=20
Aaron

--001a114644cab416c80538772743
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><span style=3D"font-size:105%">On Mon, Jul 25, 2016 at 5:4=
2 AM Dmitry Gutov &lt;<a href=3D"mailto:dgutov@HIDDEN">dgutov@HIDDEN<=
/a>&gt; wrote:</span><br><div class=3D"gmail_quote"><blockquote class=3D"gm=
ail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-le=
ft:1ex">Is 5.6ms really significant? You should be typing like 200 characte=
rs<br>
per _second_ to really notice the difference.<br>
<br>
Even 12ms that I&#39;m getting at the bottom of your example file doesn&#39=
;t<br>
sound like it should have effect on the perceptible latency.<br></blockquot=
e><div><br></div><div>That=E2=80=99s a totally fair question, but yes, I ca=
n feel the difference while typing. Ever since switching to Emacs I could f=
eel significant latency in my setup so I=E2=80=99ve been on a quest to brin=
g it down. That quest led me to smartparens and first to that case-fold-sea=
rch binding issue and now here.=C2=A0</div><div><br></div><div>Even if one =
can=E2=80=99t feel 5.6ms, it becomes another brick in the bag, i.e. if anot=
her minor mode did something similar and added another 5.6ms. With enough o=
f them most people could probably feel it.</div><div><br></div><div>If you =
haven=E2=80=99t read it, I recommend looking over <a href=3D"https://pavelf=
atin.com/typing-with-pleasure/">https://pavelfatin.com/typing-with-pleasure=
/</a>=C2=A0</div><div><br></div><div>He has a tool on there for measuring t=
yping latency. Here is a histogram of the difference between typing at the =
bottom of the sample file, the top, and the bottom with memoizing syntax-pp=
ss in smartparens:</div><div><br></div><div><img src=3D"cid:1562297dbb9eb29=
b1d61" alt=3D"Bottom VS Top VS Memoize Bottom.png" class=3D"" style=3D"max-=
width: 100%; opacity: 1;"><br></div><a href=3D"https://pavelfatin.com/typin=
g-with-pleasure/"></a></div></div><div dir=3D"ltr">-- <br></div><div data-s=
martmail=3D"gmail_signature"><div dir=3D"ltr">Aaron</div></div>

--001a114644cab416c80538772743--

--001a114644cab416cc0538772744
Content-Type: image/png; name="Bottom VS Top VS Memoize Bottom.png"
Content-Disposition: inline; filename="Bottom VS Top VS Memoize Bottom.png"
Content-Transfer-Encoding: base64
Content-ID: <1562297dbb9eb29b1d61>
X-Attachment-Id: 1562297dbb9eb29b1d61

iVBORw0KGgoAAAANSUhEUgAAAcIAAAESCAIAAADhREI9AAAMMElEQVR42u3dUZLbthJAUa3PC0vN
frxA5sMfiUwRbAANECLPrdSr1DgWRUo6AjV67NcmSero5RBIEkYlCaOShFFJwqgkCaOShFFJwqgk
YVSS1Mno673CDyUJo58Z7fwPJAmjDJWkjJN6jEpSNaMFNBkqSfmM/iNpVr9//RT+cXw6G85oZCla
dT8k1VZm1PFZ/bNRjEoYVfVqtDaMShjFKEYljAqjEkaFUUkYxagkjGIUoxJGhVEJo8KoJIxiVBJG
MYpRCaPCqIRRYVTCKEYxKgmjGMWohFGMYlTCqMYxur/e6Ol0ZYxKGMXoG5ofSS1IilEJoxj9D0qM
ShhVPqPl83qMShjF6JuYH0/zMSphFKMnjB5NtfvIq6GskgHLBiyfLEtPf2g1KlmNWo2eMBr5thNG
JYxitDeMShjFKEYljAqjEkaFUUkYxagkjGIUoxJGhVEJo8KoJIxiVNJgRn+Kf+zoYVQSRjEqCaMY
xaiEUWFUwqgwKmEUoxiVhNGbM3o0RASjEkYxGjJ0P9IOoxJGtbVNBv24PsWohFGMYlTCqLIZPRqw
jFEJo4oyejRg+SOjhrJKiwxYLjPq6C0xYNlqVLIa1dY5YLn8tSeMSrdk1AX6GhltCKMSRjGKUQmj
GMWohFGMYlQSRjEqCaMYxaiEUYxiVMIoRjEqCaMYlYRRjGJUwihGMSphFKMYlTCKUYxKwihGMSph
FKMYlTCK0XRGP15XNHKxUYxKGMXoB1KDP8SohFGMYlTCKEaTGD2aZ+ekXsIoRq1GJYxidDFGDWWV
bj9gubxdA5atRiWrUavR1NWoLzxJGMVo2mq0NoxKGMUoRiWMYhSjEkYxilFJGMWoJIxiFKMSRjGK
UQmjGMWoJIxiVNKljBb/6m+MYlTCKEYx+l7PQy5hFKMYxaiEUYxiVMIoRjEqYRSjGJUwitG5jJYv
LTrteqMXMkpwYRSjaavRj1PtMCphFKMtjP75d4x6JQujGI0yul+KYhSjwihGo4x+NBSjGBVGMRpi
dG/l672/6BxR+SEfOmT1wk1L4wYs9zyxDViuY7S83rQatSCS1ajVaMUXnj4uSzEqYRSjo8KohFGM
YhSjwihGMYpRYRSjGMWohFGMYlTCKEYxilFhFKMY3Tfu2SZhFKMYxagwilGMYlQYxShGMSphFKMY
lTCKUYxiVBjFKEYxKoxiFKMYlTCKUYxKGH0Oo4XpyuXhoBiVMIrRw9F15Qs2Y1TCKEZLaEYMxaiE
UYyeMFo+o8eohFGMlhiNzFjGqIRRjJ6f1N9gwPK4ObSSAcsGLFczajUqWY1ajW778/f9d5tOv+2E
UQmjGO0NoxJGMTqP0Qstw6gwilGMYlQYxShGMSphFKMYlTCKUYxiVBjFKEYxKoxiFKMYlTCKUYxK
GMUoRjEqjKZuF6MYxagwilGMYlQYxShGMSphFKMYlTCKUYxiVBjFaDOj6dcbxageWOezC6NfzOiI
q99jVBjFKEYxKmEUo07qMSqMYtRqFKPCKEa/mNFvnHJswLKuqvPZteaA5fJ2nztg2WrUalRWo1aj
PhvFqDCK0ZUYjYRRCaMYxShGhVGMYhSjwihGMYpRYRSjGMWohFGMYhSjwuh128UoRvXEhj67MIpR
jAqjGMUoRiWMYhSjGBVGMYpRjAqjGMUoRoVRjGIUoxJGMYpRjAqjGMUoRoVRjK7PqOuNYlQYxWg7
o65+j1FhFKMYxagwilGMLs9o+dm27Gv7gZz13PKFpmAUo09/077rEqk5ptjlzl0e+gSbx6iRuZLu
0fetRnO7atN22S7b5Qfu8ipfePJss8t22S4/i1GH3i7bZbtslzFql+2yXbbLazMqSU8Io5KEUUnC
qCRhtHLDx9+XKvz89FtWPZs+uv3X/0rfbuGWX+91bnd/I6M3/fEWTm828VAXNl3Y6/nbLT/txz3K
KQe8vN1BG408l0Yzcj2jf/ah6qkc/M5/86aDt9nzbNv/9fJO5T7Sf91m/Him3I3gEz3rUT7d5arn
5NBdzhK87VFO1uR9u5F1UvqjPIeRhU7qj15FE/a/wNkgRk+3uyajg57lCzKa/9IKP6DjBJ/8BAu+
rEYzOo0RjL4+bnf0uqz5pH7QU20Oo/F10P9f/+mbnnBm3bwUHQpK4QOl3I8y4gcz9wO6o5fzExkt
rxpGM3q6ZhkByswz64ZNTzb0r8dixJvWgrtctVhufp8u/9GEp/f8c47nMlpYL0w7qR/6EdJVjLYd
z0GQjf4Yuud4jrP79DceKavC9OfANzI6jZFFT+ovXI3O+QjpEkbbjueNDR3HaM/Nzn/buCWjk3f5
Skbb3jHSvyRRvvHg+9uc7U7e5SxG99s9+uGgj8yONj3/UW572WftcuH1NeLrdOVHeZv+haf0TS+0
GpWkG4RRScKoJGFUkjAqSRiVJGFUkjAqSRiVJIxKkjAqSRiVpG9n9Pevn8I/DqIkjCYzmn7Z9iWO
VPdVcI4OUWT41zoHoTw3LXKFugt3p2ekXe2zev/4Nl9EKjKX4X6vOIy2XEbzrs+AyLXcp03pmfC+
Ernm/Ap7VDV8ofY9NXKt1apLr8av5E/SmzNauBhi/GqY+1vIxe7oxvdTD6veA3rm/9S+3grHJ3iN
0R5Kgj8PbqI86GK/ymu7/7X3LYXRqgOOUYzW/XALjOUaMUamfOOdm55wXfT4LmzhSYqJ7wo9VBV2
oe2EpnxnUiYR5F6qOXiXGHorRhtWPSn/ccopXnnrKa/bQYzGj08zoz2TNZtPIxIZjcywzJom33AN
/OYD67NRq9F8Rl/FFmE0dzBR8GCeDpYYujtVgz8L78e5D8eI1WhkqZjCqJN6jD56NTqZ0cST+v5X
b9tJfRaj2+DPRjGKUYzOYDTrhG4FRtMNbWC0+YOCU+wGMTrow2iM3ofR8rcLg6+W4NzKFRgNft+w
dqzx6YTFnpP6wmeLkaHqtfvY8HlC8NDt96X2/h9B3Hz/4/My2w5C8/d2dRmjWusxu9dLJXNc+BVH
hlzyDGDod+/OtQsxhgqjkoRRScKoJGFUkjAqScKoJGFUkjAqSRiVJGFUktZg9Kd4bRIHURJGMxkN
Xib54t0eNubz9C+uc0BqL9cUORQr3P/IA137/EwZ8/ml42B15Wr0ls+D2jGNRz9f7eA0XHhwqaml
tQOT+6/12f+AfuM4WC3BaHne543HfLZdX/2SMZ9ZlxMuP/TjxnxGMEpndJsyolkYPZ/3ud16zGft
y+yqMZ+1J6rNq92sMZ9b/aXsa9+2Z475xChGWxhNf/ZcMhEksr6o+jAuvlS8ZMxn/8nshGnJiYu+
aWM+MYrRIYx+xZjPLXVgzuVjPgcxlD7m8+gtLf6mNXk+Xe5/JozeZzVaK2w/o0PHfKYzOmjMZ8rd
w6juwOg9piXfj9FEg0aM+bzkNzmdb//p42D1OEa3ub+pb2a0YUxj5OQ6Ph90W2PM5+k7QdVv1YeO
+Ww4jJF9LD9wbWM+I2+xJn3ekNGx9+DZTxQj6pY6MtgSRhn63btjzKcwKkkYlSRhVJIwKkkYlSSM
SpIwKkkYlSSMShJGJUlNjP4qXpvEQZSE0WRGey4MXnfv+272ltfRuWTo6bbYMMvI0NOVd+f0quSJ
oxamDT298WWrRjG6v6TY4uIExyht972ARfPQ061yzNQi7yunu7Pm0NPIfeu8qum4oad3fRFdw2j5
qqO1f2srXsuy/2KUH9+oO/elHztDT7e+KzePmI9SPhvLGnq69c19abjx3KGnGK04qd//b/n10DAI
s/wkaJgEtzVdar52X/pP9yIHKnfoaS6jVw09HfFSnzz0NL6U7hlmlbu8xeg8Rjt1i3tX/rAmhdFx
nwYsOK1v6xj+MX/oafrs6OBb+MzhibVvn4aefiWj5bObZkZrhzGMW422Ub7s0NPgayPI3ApDT3Nf
7dOGnjb8UcNDP3Ra3y1/tTD2N/Wd59fNujV8+HUVo+uvRhPHNaccQENPv5fR2/569h6Mtq2hMJr4
ImwD4oGMpgw9jX/G0vmJBEOvZzRyut1wonf0kVx5fGPwXGw7+P1+w71akNGeoadZJ+ArDD1t+Dho
kaGnwfsWfDhmDj298cRT/2dQDXtuGdi30pExsA+jYuh3746hpxiVJGFUkjAqSRiVJIxKkjAqSRiV
JIxKEkYlCaOSJIxKEkYlCaOS9Kz+BfZTgtX3gXq0AAAAAElFTkSuQmCC
--001a114644cab416cc0538772744--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#24048; Package emacs. Full text available.

Message received at 24048 <at> debbugs.gnu.org:


Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 12:42:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jul 25 08:42:31 2016
Received: from localhost ([127.0.0.1]:36370 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bRfDL-0005Rk-NH
	for submit <at> debbugs.gnu.org; Mon, 25 Jul 2016 08:42:31 -0400
Received: from mail-wm0-f45.google.com ([74.125.82.45]:37857)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1bRfDK-0005RX-Lk
 for 24048 <at> debbugs.gnu.org; Mon, 25 Jul 2016 08:42:31 -0400
Received: by mail-wm0-f45.google.com with SMTP id i5so154831130wmg.0
 for <24048 <at> debbugs.gnu.org>; Mon, 25 Jul 2016 05:42:30 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=sender:subject:to:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-transfer-encoding;
 bh=gwGtqI9wL4EXy5nInESWqICd6ZGutrxmAFdnXzBF0jI=;
 b=FnVbGYKOAx/2p5oJzs6cNB67kcx7H5/YimDvPPoX5pJKurylqnhC0ds+8tfoCLoogw
 Z5oOlYbCYRc42CaibxcHfPC1ukANgbn/DMdfXIRG5alEkPfTJtFidQbvwljnI9sLrPm+
 gL/+am4rgfwrXcwqaaGlVmNQK9RTOP5hO4PdXd3BntcftaFblQYcxq/vR7IMLHLzFYkL
 7j12xEpMgsFVdC1cUa4WqOXPSaxzUZouEwTxXWxH3unwxzjFcnJc0fF2fjbtI3ObNYT2
 /Y9MwzVpqnsjXD8Ys1EoTPfJRTxYrZ2Cklk0+bCUwJIdLO1ErSd4YJwJsw/4wS56wMZs
 nNqQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:sender:subject:to:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-transfer-encoding;
 bh=gwGtqI9wL4EXy5nInESWqICd6ZGutrxmAFdnXzBF0jI=;
 b=J3BFQ9m2Yw5W3xG2ZbE4T8HDlRHG5oFx9VisTDx8fyoDti3Fo1QfcUtkhfuNCiqL4m
 ABp3IObicHeB2UbUH6zXCiAE00PWo0d7Wy0jwox56nWdpmN3OVR1lOmh6EMDV1biCsv4
 +zOELSz0BDVE+sPZ9CVFIp6YXFkNoC0T6cEzjdSuC8jvEHqL4JgUMhk/TDwg9PA/JkKd
 kr7HXxYzT0DiO4SSb4Li3HZFKYkV3KSL9wTpwt1gYZjCmYyVZsDs+uex41nTD8failhg
 qUQ7GWQHGdsQqPJowN/bX9kzE0il5HMq0xffURnx6DExP9ZbV7MHH7kn89erj3Yh0TFA
 I/dg==
X-Gm-Message-State: AEkoouvXV+OgCVwGvaRAJpr+pZRJCUbPqomIU0wXOJscFwdVe4FlZjrmV3ju/4F9MXBYoA==
X-Received: by 10.194.127.37 with SMTP id nd5mr15177935wjb.156.1469450544988; 
 Mon, 25 Jul 2016 05:42:24 -0700 (PDT)
Received: from [192.168.0.185] (static-nbl2-118.cytanet.com.cy.
 [212.31.107.118]) by smtp.googlemail.com with ESMTPSA id
 t188sm27276254wme.19.2016.07.25.05.42.23
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Mon, 25 Jul 2016 05:42:24 -0700 (PDT)
Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow
To: Aaron Jensen <aaronjensen@HIDDEN>, 24048 <at> debbugs.gnu.org
References: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
 <db33bc47-1b75-acee-905a-8883a7520193@HIDDEN>
 <CAHyO48ywOJY8F7=bJbEPA9mcN1WnZx56fQzbzkFdWZLuACx9MQ@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <d001029a-32a6-a915-bc83-3c6701f415ac@HIDDEN>
Date: Mon, 25 Jul 2016 15:42:22 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:47.0) Gecko/20100101
 Thunderbird/47.0
MIME-Version: 1.0
In-Reply-To: <CAHyO48ywOJY8F7=bJbEPA9mcN1WnZx56fQzbzkFdWZLuACx9MQ@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 24048
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

On 07/25/2016 10:12 AM, Aaron Jensen wrote:

> Sure, just use elixir-mode and this
> file https://gist.githubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d/raw/b52440bb51b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex
>
> Then do: (benchmark 100 '(syntax-ppss)) at the top of the file and
> compare it to doing it within the `chunk_by` function at the bottom of
> the file. For me it’s 0.2ms at the top and 5.6ms at the bottom.
> Smartparens can do 50-100 syntax-ppss calls for every
> self-insert-command, and 5.6ms is significant latency to add on to every
> keypress.

Is 5.6ms really significant? You should be typing like 200 characters 
per _second_ to really notice the difference.

Even 12ms that I'm getting at the bottom of your example file doesn't 
sound like it should have effect on the perceptible latency.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#24048; Package emacs. Full text available.

Message received at 24048 <at> debbugs.gnu.org:


Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 07:13:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jul 25 03:13:00 2016
Received: from localhost ([127.0.0.1]:36258 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bRa4S-0004ai-3A
	for submit <at> debbugs.gnu.org; Mon, 25 Jul 2016 03:13:00 -0400
Received: from mail-it0-f48.google.com ([209.85.214.48]:35234)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <aaronjensen@HIDDEN>) id 1bRa4Q-0004aU-F3
 for 24048 <at> debbugs.gnu.org; Mon, 25 Jul 2016 03:12:58 -0400
Received: by mail-it0-f48.google.com with SMTP id u186so78804227ita.0
 for <24048 <at> debbugs.gnu.org>; Mon, 25 Jul 2016 00:12:58 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
 bh=9uFEWcn7modH+h2pBeP/bJN64C29CqKb7P1voQFkO7Y=;
 b=A9i3H/+yA/sfuXTo258r4BrhHAGjozKKBNEPtWqTFe+IbgtEwLZzUhBh8n82i61h8K
 Txl+ASnuxJ4W9+3Deig0VWjAeHJ+JqDBmneN1d76kKBx5GVOiCcbvNz8tkatYjjJO4om
 plo+RJ3x1pvgiNL0arJVmBrR1SLhqoZI1zqzHYiq/KMbnRYKkBd89IROS/xs3PreJoVU
 B9/dxQNzY+azp+e7W5KzfhNSMaD1u0eRPN6P0aILGE+UGJwL4T+j/PfDZhEtA87CujFw
 egfymvkYfZk6vo809qe7suY2yFlwZyliitVp04qV/cXrRPB04c/vhDcCKU4O0yIvshYl
 1hWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to;
 bh=9uFEWcn7modH+h2pBeP/bJN64C29CqKb7P1voQFkO7Y=;
 b=bnoAJvaYX4tbxznwi1FPuZ8jyj6WeMWuJ0sZsKNT9qDEmtlhBDzjh7sYxQw06svXN+
 6aksaMv83bxmE02zhudKh2XXwTArZL/ltt+v7JzimVTmRFst+wf7B+oIcIPraWahh8Gm
 wTAp7mBdAIJyu4i7l5UR8KHZPFjUgCRMb20FL/NSyudm40/5cpqjYqYo3W8lz9fiqHEN
 hpUq3QaWuZdmglFYHSWhyjbc4++igkPm89pKKAv+TBdUd8dV6EQNzpAvGKtE5Txv9wqa
 dnGfa03ZL9TdB5updj8FFcLIedL7pX+18FAhaG1CdI9ZZcWb9MDS6jIV4H01NqmemTO8
 /udw==
X-Gm-Message-State: AEkoouuGRYboaSbIHkSA9ZqBjagAgbRWcTgCNkaGcrUnJ0R0CHRI15L77Hf4821tPn3fsi0F+6AnUdlnLAS+TA==
X-Received: by 10.36.142.129 with SMTP id h123mr19432661ite.66.1469430772710; 
 Mon, 25 Jul 2016 00:12:52 -0700 (PDT)
MIME-Version: 1.0
References: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
 <db33bc47-1b75-acee-905a-8883a7520193@HIDDEN>
In-Reply-To: <db33bc47-1b75-acee-905a-8883a7520193@HIDDEN>
From: Aaron Jensen <aaronjensen@HIDDEN>
Date: Mon, 25 Jul 2016 07:12:42 +0000
Message-ID: <CAHyO48ywOJY8F7=bJbEPA9mcN1WnZx56fQzbzkFdWZLuACx9MQ@HIDDEN>
Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow
To: Dmitry Gutov <dgutov@HIDDEN>, 24048 <at> debbugs.gnu.org
Content-Type: multipart/alternative; boundary=94eb2c04a0d23acfc105387083cc
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 24048
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

--94eb2c04a0d23acfc105387083cc
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hi Dmitry,

On Sun, Jul 24, 2016 at 6:16 PM Dmitry Gutov <dgutov@HIDDEN> wrote:

> Is there a way to reproduce it more easier? Maybe without smartparens,
> just with elixir-mode, if it's sufficient to illustrate the performance
> problem (I recall you stating parse-partial-sexp is also unusually slow
> in that major mode, for some reason).
>

Sure, just use elixir-mode and this file
https://gist.githubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf6=
4a7d/raw/b52440bb51b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex

Then do: (benchmark 100 '(syntax-ppss)) at the top of the file and compare
it to doing it within the `chunk_by` function at the bottom of the file.
For me it=E2=80=99s 0.2ms at the top and 5.6ms at the bottom. Smartparens c=
an do
50-100 syntax-ppss calls for every self-insert-command, and 5.6ms is
significant latency to add on to every keypress.

I have a proposed pull to get smartparens to memoize syntax-ppss itself
https://github.com/Fuco1/smartparens/pull/629 but in theory it should be
redundant given syntax-ppss=E2=80=99s built in caching.

P.S. Please send a text email next time, we very much prefer them for
> various reasons, inability to sneak in a tracker like this among them:
>

Unfortunately, modern email clients don=E2=80=99t really offer this as an o=
ption
anymore. I started to set up mu4e but it just became too much work to set
up for the sole purpose of being able to send text emails to report emacs
bugs. This probably isn=E2=80=99t the place to debate the merits of easy fo=
r most
people to use bug reporting.

<img
> src=3D3D=3D22h=3Dttp://
> pixels.canarymail.io/tracking/07C7B5E0-9441-40AD-9CC3-D2A176741827.=3Dpng=
=3D22
> id=3D3D=3D22141121424AC1=3D466A74CBB8A45B347C37B=3D22 style=3D3D=3D22widt=
h: 1p=3Dx;
> height: 1px;=3D22>
>

Yeah, canary isn=E2=80=99t even the client I=E2=80=99m using anymore, it=E2=
=80=99s just what emacs
happened to open when I told it to open my email client to send the bug
report. Unless Inbox is doing its own weirdness this mail should be
tracking pixel free.
--=20
Aaron

--94eb2c04a0d23acfc105387083cc
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi Dmitry,<br><br><div class=3D"gmail_quote"><div dir=3D"l=
tr">On Sun, Jul 24, 2016 at 6:16 PM Dmitry Gutov &lt;<a href=3D"mailto:dgut=
ov@HIDDEN">dgutov@HIDDEN</a>&gt; wrote:<br></div><blockquote class=3D=
"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padding=
-left:1ex">Is there a way to reproduce it more easier? Maybe without smartp=
arens,<br>
just with elixir-mode, if it&#39;s sufficient to illustrate the performance=
<br>
problem (I recall you stating parse-partial-sexp is also unusually slow<br>
in that major mode, for some reason).<br></blockquote><div><br></div><div>S=
ure, just use elixir-mode and this file=C2=A0<a href=3D"https://gist.github=
usercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d/raw/b52440bb51=
b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex">https://gist.gith=
ubusercontent.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d/raw/b52440bb=
51b96193a365a7f4cc1c8733ba98476f/syntax-ppss-slow-repro.ex</a></div><div><b=
r></div><div>Then do:=C2=A0<span style=3D"font-size:105%">(benchmark 100 &#=
39;</span><span style=3D"font-size:105%">(syntax-ppss)) at the top of the f=
ile and compare it to doing it within the `chunk_by` function at the bottom=
 of the file. For me it</span>=E2=80=99s 0.2ms at the top and 5.6ms at the =
bottom. Smartparens can do 50-100 syntax-ppss calls for every self-insert-c=
ommand, and 5.6ms is significant latency to add on to every keypress.=C2=A0=
</div><div><br></div><div>I have a proposed pull to get smartparens to memo=
ize syntax-ppss itself=C2=A0<a href=3D"https://github.com/Fuco1/smartparens=
/pull/629">https://github.com/Fuco1/smartparens/pull/629</a>=C2=A0but in th=
eory it should be redundant given syntax-ppss=E2=80=99s built in caching.</=
div><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 =
.8ex;border-left:1px #ccc solid;padding-left:1ex">
P.S. Please send a text email next time, we very much prefer them for<br>
various reasons, inability to sneak in a tracker like this among them:<br><=
/blockquote><div><br></div><div>Unfortunately, modern email clients don=E2=
=80=99t really offer this as an option anymore. I started to set up mu4e bu=
t it just became too much work to set up for the sole purpose of being able=
 to send text emails to report emacs bugs. This probably isn=E2=80=99t the =
place to debate the merits of easy for most people to use bug reporting.</d=
iv><div><br></div><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .=
8ex;border-left:1px #ccc solid;padding-left:1ex">
&lt;img<br>
src=3D3D=3D22h=3Dttp://<a href=3D"http://pixels.canarymail.io/tracking/07C7=
B5E0-9441-40AD-9CC3-D2A176741827.=3Dpng=3D22" rel=3D"noreferrer" target=3D"=
_blank">pixels.canarymail.io/tracking/07C7B5E0-9441-40AD-9CC3-D2A176741827.=
=3Dpng=3D22</a><br>
id=3D3D=3D22141121424AC1=3D466A74CBB8A45B347C37B=3D22 style=3D3D=3D22width:=
 1p=3Dx;<br>
height: 1px;=3D22&gt;<br></blockquote><div><br></div><div>Yeah, canary isn=
=E2=80=99t even the client I=E2=80=99m using anymore, it=E2=80=99s just wha=
t emacs happened to open when I told it to open my email client to send the=
 bug report. Unless Inbox is doing its own weirdness this mail should be tr=
acking pixel free.</div></div></div><div dir=3D"ltr">-- <br></div><div data=
-smartmail=3D"gmail_signature"><div dir=3D"ltr">Aaron</div></div>

--94eb2c04a0d23acfc105387083cc--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#24048; Package emacs. Full text available.

Message received at 24048 <at> debbugs.gnu.org:


Received: (at 24048) by debbugs.gnu.org; 25 Jul 2016 01:16:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 24 21:16:56 2016
Received: from localhost ([127.0.0.1]:36161 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bRUVs-0004Uc-4u
	for submit <at> debbugs.gnu.org; Sun, 24 Jul 2016 21:16:56 -0400
Received: from mail-wm0-f46.google.com ([74.125.82.46]:37574)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <raaahh@HIDDEN>) id 1bRUVo-0004UN-Tp
 for 24048 <at> debbugs.gnu.org; Sun, 24 Jul 2016 21:16:55 -0400
Received: by mail-wm0-f46.google.com with SMTP id i5so135020978wmg.0
 for <24048 <at> debbugs.gnu.org>; Sun, 24 Jul 2016 18:16:52 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=sender:subject:to:references:from:message-id:date:user-agent
 :mime-version:in-reply-to:content-transfer-encoding;
 bh=wD+cY2VeckXhORCtOKzUOIv3ZMaXpCWr/4s6ZQpnBjA=;
 b=qDGL11F+zY2jq+4S1hlhOVt86dVXC2rwXKXUg+W1+p5NPcZFadFbQC0PTZZ22exhSK
 nboB3r00/EHN3WgIqDZvfUkSJ+MQv6NCeWt5Mk4MUA/9SKK/Hm5IlF6Iat4X4fQhhNQT
 M/+Y1eWy4cKClAXDYaAGQCw8AEr/WSDyeYga9ufvkIv4oePTPZ2Ux33wIOIwNOszc3kW
 PI5iEiphkurlthFoLuwfgH5P5cXAieOZQkSP1bzFrn+TEeJ16if2XOtgTCC7OqnO+hpo
 mVHX//jpDUzjv8iFMWZeseHsd7W4GYQ0tP1nwZR6xd4THUcVqDjYP75uUvNBk6WnZ/Aq
 ExxQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:sender:subject:to:references:from:message-id
 :date:user-agent:mime-version:in-reply-to:content-transfer-encoding;
 bh=wD+cY2VeckXhORCtOKzUOIv3ZMaXpCWr/4s6ZQpnBjA=;
 b=Zdnoi34IDFqk4Rno6DCLAWMLnkqG8eFvFWV9TJYe0jZkYZb7C4ncjnKxSMfPUq3JKv
 d/APZjE1hkv3PV/nFNNikV1D6eSe+Dqofus/I5p+t7X92yVjMKGHHNIsgfwL7pIrSBPm
 kunqqB6dkSRqXLwhizlG37S5D+dJRQNiC7eFNLubsxTDAuG2Uy6MEpR4m39PN0XfB8Zk
 c6qEO/Q5bQmNXY9ll1STLt4wRWSwqQK7EbpgHRvhhVmj2PUMjeWVzJOCQERD26j01fk0
 zrY370tFe0OuZeWsaHH3v38YpuKZdrZD2xkXb/6jZsx1iTJK6MdNFjz9F8NKuL/VR45V
 zvlw==
X-Gm-Message-State: AEkoouuhtRctNR6PLdfvMmcb2otIPgW44Ln+2HG5ICKKoUxQUa5cioBMEgqLgB3cxy/GpQ==
X-Received: by 10.28.157.148 with SMTP id g142mr18060975wme.2.1469409407247;
 Sun, 24 Jul 2016 18:16:47 -0700 (PDT)
Received: from [192.168.1.2] ([185.105.173.135])
 by smtp.googlemail.com with ESMTPSA id iw1sm13032688wjb.20.2016.07.24.18.16.46
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 24 Jul 2016 18:16:46 -0700 (PDT)
Subject: Re: bug#24048: 25.0.95; syntax-ppss can be slow
To: Aaron Jensen <aaronjensen@HIDDEN>, 24048 <at> debbugs.gnu.org
References: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
From: Dmitry Gutov <dgutov@HIDDEN>
Message-ID: <db33bc47-1b75-acee-905a-8883a7520193@HIDDEN>
Date: Mon, 25 Jul 2016 04:16:45 +0300
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:47.0) Gecko/20100101
 Thunderbird/47.0
MIME-Version: 1.0
In-Reply-To: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 24048
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.7 (/)

Hi Aaron,

On 07/21/2016 05:29 PM, Aaron Jensen wrote:
>
> In certain situations, the caching of syntax-ppss can seem to be
> insufficient for good performance when syntax-ppss is invoked in a tight
> loop. smartparens is a popular package that currently invokes
> syntax-ppss in a tight loop (about 30-100 times depending on how many
> match pairs are configured). syntax-ppss has caching built in, but it is
> willing to use a cache from a further back position and do a
> `parse-partial-sexp` from the old position to the current. Afterwards,
> it does not set the cache with the current position. As such, in the
> pathological case, it can parse ~2000 characters 30-100 times in a tight
> loop. This is slow enough to show up in profiling and affect typing
> latency.
>
> To repro, install:
>
> smartparens (you can use
> https://github.com/aaronjensen/smartparens/tree/limit-binding-of-case-fold-search
> to alleviate a different performance issue which could distract in the
> profiling)
> elixir-mode

Is there a way to reproduce it more easier? Maybe without smartparens, 
just with elixir-mode, if it's sufficient to illustrate the performance 
problem (I recall you stating parse-partial-sexp is also unusually slow 
in that major mode, for some reason).

Here, I'm seeing some similar behavior with elisp-mode.el. I can open 
this file, evaluate

(benchmark 1000 '(syntax-ppss))

at line 10, then move to line 70 and do it there, and see the latter 
result to be much faster. They're still below 100ms usually (even with 
1000 repetitions), so that's hardly a good example of a performance 
problem, by itself.

P.S. Please send a text email next time, we very much prefer them for 
various reasons, inability to sneak in a tracker like this among them:

<img 
src=3D=22h=ttp://pixels.canarymail.io/tracking/07C7B5E0-9441-40AD-9CC3-D2A176741827.=png=22 
id=3D=22141121424AC1=466A74CBB8A45B347C37B=22 style=3D=22width: 1p=x; 
height: 1px;=22>




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#24048; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 21 Jul 2016 14:30:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jul 21 10:30:02 2016
Received: from localhost ([127.0.0.1]:60562 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1bQEz7-0000O7-TQ
	for submit <at> debbugs.gnu.org; Thu, 21 Jul 2016 10:30:01 -0400
Received: from eggs.gnu.org ([208.118.235.92]:47841)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <aaronjensen@HIDDEN>) id 1bQEz2-0000Nn-QD
 for submit <at> debbugs.gnu.org; Thu, 21 Jul 2016 10:29:56 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <aaronjensen@HIDDEN>) id 1bQEyr-0002pt-IQ
 for submit <at> debbugs.gnu.org; Thu, 21 Jul 2016 10:29:47 -0400
X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org
X-Spam-Level: 
X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM,
 HTML_MESSAGE,T_DKIM_INVALID autolearn=disabled version=3.3.2
Received: from lists.gnu.org ([2001:4830:134:3::11]:59498)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <aaronjensen@HIDDEN>) id 1bQEyr-0002p9-F4
 for submit <at> debbugs.gnu.org; Thu, 21 Jul 2016 10:29:41 -0400
Received: from eggs.gnu.org ([2001:4830:134:3::10]:38762)
 by lists.gnu.org with esmtp (Exim 4.71)
 (envelope-from <aaronjensen@HIDDEN>) id 1bQEyk-0000mW-3a
 for bug-gnu-emacs@HIDDEN; Thu, 21 Jul 2016 10:29:40 -0400
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
 (envelope-from <aaronjensen@HIDDEN>) id 1bQEye-0002ne-0d
 for bug-gnu-emacs@HIDDEN; Thu, 21 Jul 2016 10:29:34 -0400
Received: from mail-pf0-x236.google.com ([2607:f8b0:400e:c00::236]:34949)
 by eggs.gnu.org with esmtp (Exim 4.71)
 (envelope-from <aaronjensen@HIDDEN>) id 1bQEyd-0002nK-Aa
 for bug-gnu-emacs@HIDDEN; Thu, 21 Jul 2016 10:29:27 -0400
Received: by mail-pf0-x236.google.com with SMTP id x72so30983151pfd.2
 for <bug-gnu-emacs@HIDDEN>; Thu, 21 Jul 2016 07:29:26 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
 h=date:from:to:message-id:subject:mime-version;
 bh=laxjoxFplMCq9+8IalD0UdqT+YtI5uZEi2zUJvE0Tjg=;
 b=NIMY3ImTxpUPrqwe1ElwKvMgEnjAMHvvpQ8aNYRCbIPO4z2BDH4wi78XV1WMLr8KxD
 3odwTUhPcNIeGXrUtWoMJwfvGRvzFl+0MP3ilp/2njRra3bTs3izlecajdqnwE6Xl2Ca
 hksWdvdcK9j0nejj51qQRRj4kKgE+gIOL1zbhYX7RrxMWrumsP4RYxTyukhHo78E0qO2
 rMQs0X1XAbpyeQJmm51scqAqcR90MUJwD/e/efYWXtPsOB/DPDzFycxIFaf7CgXJFONH
 MRTnbWETYonQzIDc752Deii2mc5e3IhDBBG7mVTI0CkF08XXRV9hkCZ7qKzWNvRnjqGI
 n+rQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:date:from:to:message-id:subject:mime-version;
 bh=laxjoxFplMCq9+8IalD0UdqT+YtI5uZEi2zUJvE0Tjg=;
 b=DWVry4OH59tj3v/H1r/trdm5uSUmuDhK8zyPXrwXjlnzrVD9Nz7xdTYe+BIx8VFsXL
 +XXIL0Kb0gpjG5BJ4x2g5EXbOtsSr06k9DeAwGEYDZMW38OSw0SSNYP3kP5MPZTto+iC
 fubgeARa6WvJMyD8pF5pCbm4I627e/teXiHHzK36hn3xmWBhcT40P86ztc7y4uSDuuYU
 Aun1JXDBrUSizxWnwC89h5/nVgsNaW0g7Hkjm4/aYmKR6W1NwWILyGrI9IwAkgW99new
 /JCS748hv8Fgw0gSsIv3yI/1sCcp/J+xKRcgwihdxZMHEEw4weSKQoCBoHARc6d4KgvC
 ZeYQ==
X-Gm-Message-State: ALyK8tL7o3NJYi+3LWP8xbG46IwXEjtVlGDkCidoCDk+D08ah3LpiDPIZEVPLYbtikSIVw==
X-Received: by 10.98.77.65 with SMTP id a62mr73508276pfb.128.1469111364632;
 Thu, 21 Jul 2016 07:29:24 -0700 (PDT)
Received: from aaronmbp.local (c-76-28-156-232.hsd1.wa.comcast.net.
 [76.28.156.232])
 by smtp.gmail.com with ESMTPSA id t126sm12886926pfd.28.2016.07.21.07.29.22
 for <bug-gnu-emacs@HIDDEN>
 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 21 Jul 2016 07:29:22 -0700 (PDT)
Date: Thu, 21 Jul 2016 07:29:19 -0700
From: Aaron Jensen <aaronjensen@HIDDEN>
To: "=?utf-8?Q?bug-gnu-emacs=40gnu.org?=" <bug-gnu-emacs@HIDDEN>
Message-ID: <b343cf26-e76b-4758-84ac-c20c1dd185b0@HIDDEN>
Subject: 25.0.95; syntax-ppss can be slow
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="5790dc42_6b8b4567_66d0"
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: -4.0 (----)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -4.0 (----)

--5790dc42_6b8b4567_66d0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


In certain situations, the caching of syntax-ppss can seem to be
insufficient for good performance when syntax-ppss is invoked in a tight
loop. smartparens is a popular package that currently invokes
syntax-ppss in a tight loop (about 30-100 times depending on how many
match pairs are configured). syntax-ppss has caching built in, but it is
willing to use a cache from a further back position and do a
`parse-partial-sexp` from the old position to the current. Afterwards,
it does not set the cache with the current position. As such, in the
pathological case, it can parse ~2000 characters 30-100 times in a tight
loop. This is slow enough to show up in profiling and affect typing
latency.

To repro, install:

smartparens (you can use
https://github.com/aaronjensen/smartparens/tree/limit-binding-of-case-fold-search
to alleviate a different performance issue which could distract in the profiling)
elixir-mode

Load this file into a buffer, ensure elixir-mode is enabled: https://gist.github.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d

Go down to the chunk_by function and type inside of it. If you profile,
you'll see that syntax-ppss rises to the top. Here is an example
reversed profile:

+ redisplay 218 32%
- progn 120 18%
- if 120 18%
- condition-case 120 18%
- let 120 18%
+ syntax-ppss 120 18%
+ sit-for 101 15%
+ sp--looking-back 55 8%
+ font-lock-fontify-keywords-region 45 6%
+ alchemist-project-root 41 6%

For what it is worth, if the file is longer this tends to not happen as
syntax-ppss ends up executing for something (end of buffer it seems) outside of the "close"
heuristic which will ultimately cause the syntax-ppss-last to get set to
the current position for the tight loop. The issue is only when the
first branch of syntax-ppss is taken in a tight loop and pos - old-pos
is great enough.

Please see https://github.com/Fuco1/smartparens/pull/629 for additional
context and discussion.

Thanks!

Aaron

In GNU Emacs 25.0.95.1 (x86_64-apple-darwin15.5.0, NS appkit-1404.47 Version 10.11.5 (Build 15F34))
of 2016-06-10 built on aaronmbp.local
Windowing system distributor 'Apple', version 10.3.1404
Configured using:
'configure --disable-dependency-tracking --disable-silent-rules
--enable-locallisppath=/usr/local/share/emacs/site-lisp
--infodir=/usr/local/Cellar/emacs/25.0.95/share/info/emacs
--prefix=/usr/local/Cellar/emacs/25.0.95 --with-xml2 --without-dbus
--with-gnutls --with-rsvg --with-imagemagick --with-ns
--disable-ns-self-contained'

Configured features:
JPEG RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS
NS

Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix

Major mode: Elixir

Minor modes in effect:
alchemist-mode: t
goto-address-prog-mode: t
bug-reference-prog-mode: t
auto-highlight-symbol-mode: t
clean-aindent-mode: t
highlight-numbers-mode: t
highlight-parentheses-mode: t
rainbow-delimiters-mode: t
yas-global-mode: t
yas-minor-mode: t
projectile-global-mode: t
projectile-mode: t
recentf-mode: t
shackle-mode: t
global-hungry-delete-mode: t
hungry-delete-mode: t
evil-mc-mode: t
hl-todo-mode: t
global-spacemacs-whitespace-cleanup-mode: t
spacemacs-whitespace-cleanup-mode: t
ws-butler-global-mode: t
ws-butler-mode: t
winner-mode: t
window-numbering-mode: t
volatile-highlights-mode: t
global-vi-tilde-fringe-mode: t
vi-tilde-fringe-mode: t
spaceline-info-mode: t
spaceline-helm-mode: t
save-place-mode: t
savehist-mode: t
popwin-mode: t
persp-mode: t
Info-breadcrumbs-in-mode-line-mode: t
ido-vertical-mode: t
helm-mode: t
global-git-gutter+-mode: t
global-git-commit-mode: t
async-bytecomp-package-mode: t
shell-dirtrack-mode: t
flyspell-mode: t
global-flycheck-mode: t
flycheck-mode: t
flx-ido-mode: t
eyebrowse-mode: t
global-evil-surround-mode: t
evil-surround-mode: t
global-evil-search-highlight-persist: t
evil-search-highlight-persist: t
show-smartparens-global-mode: t
show-smartparens-mode: t
smartparens-mode: t
evil-escape-mode: t
global-anzu-mode: t
anzu-mode: t
eval-sexp-fu-flash-mode: t
diff-auto-refine-mode: t
company-mode: t
hybrid-mode: t
which-key-mode: t
override-global-mode: t
global-undo-tree-mode: t
undo-tree-mode: t
evil-mode: t
evil-local-mode: t
spacemacs-leader-override-mode: t
global-spacemacs-leader-override-mode: t
global-hl-line-mode: t
xterm-mouse-mode: t
global-auto-revert-mode: t
global-page-break-lines-mode: t
global-eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
abbrev-mode: t
hs-minor-mode: t

Recent messages:
20394 19299 [100 times]
20390 19299 [2 times]
20394 19299
syntax-ppss
No profiler stopped
CPU profiler started
CPU profiler stopped
CPU profiler started
Quit
Mark saved where search started [2 times]

Load-path shadows:
/Users/aaronjensen/.emacs.d/elpa/helm-20160718.746/helm-multi-match hides /Users/aaronjensen/.emacs.d/elpa/helm-core-20160718.746/helm-multi-match
/Users/aaronjensen/.emacs.d/elpa/ox-gfm-20160520.2040/ox-gfm hides /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-gfm
/Users/aaronjensen/.emacs.d/elpa/org-download-20160620.607/org-download hides /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-download
/Users/aaronjensen/.emacs.d/elpa/org-bullets-20140918.1137/org-bullets hides /Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bullets
/Users/aaronjensen/.emacs.d/elpa/ht-20150830.1115/ht hides ~/.emacs.d/core/libs/ht
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-texinfo hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-texinfo
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-publish hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-publish
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-org hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-org
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-odt hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-odt
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-md hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-md
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-man hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-man
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-latex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-latex
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-icalendar hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-icalendar
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-html hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-html
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-beamer hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-beamer
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-ascii hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-ascii
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-w3m hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-w3m
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-version hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-version
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-timer hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-timer
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-table hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-table
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-src hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-src
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-rmail hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-rmail
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-protocol hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-protocol
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-plot hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-plot
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-pcomplete hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-pcomplete
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mouse hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mouse
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mobile hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mobile
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mhe hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mhe
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-macs hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-macs
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-macro hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-macro
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-loaddefs hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-loaddefs
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-list hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-list
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-irc hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-irc
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-install hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-install
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-inlinetask hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-inlinetask
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-info hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-info
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-indent hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-indent
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-id hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-id
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-habit hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-habit
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-gnus hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-gnus
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-footnote hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-footnote
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-feed hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-feed
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-faces hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-faces
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-eshell hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-eshell
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-entities hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-entities
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-element hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-element
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-docview hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-docview
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-datetree hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-datetree
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-ctags hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-ctags
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-crypt hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-crypt
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-compat hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-compat
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-colview hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-colview
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-clock hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-clock
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-capture hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-capture
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bibtex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-bibtex
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bbdb hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-bbdb
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-attach hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-attach
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-archive hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-archive
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-agenda hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-agenda
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-tangle hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-tangle
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-table hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-table
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sqlite hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-sqlite
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sql hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-sql
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-shen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-shen
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-screen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-screen
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-scheme hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-scheme
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-scala hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-scala
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sass hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-sass
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ruby hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ruby
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ref hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ref
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-R hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-R
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-python hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-python
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-plantuml hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-plantuml
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-picolisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-picolisp
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-perl hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-perl
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-org hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-org
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-octave hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-octave
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ocaml hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ocaml
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-mscgen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-mscgen
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-maxima hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-maxima
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-matlab hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-matlab
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-makefile hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-makefile
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lob hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lob
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lisp
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lilypond hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lilypond
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ledger hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ledger
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-latex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-latex
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-keys hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-keys
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-js hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-js
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-java hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-java
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-io hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-io
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-haskell hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-haskell
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-gnuplot hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-gnuplot
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-fortran hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-fortran
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-exp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-exp
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-eval hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-eval
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-emacs-lisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-emacs-lisp
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-dot hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-dot
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ditaa hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ditaa
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-css hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-css
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-core hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-core
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-comint hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-comint
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-clojure hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-clojure
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-calc hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-calc
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-C hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-C
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-awk hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-awk
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-asymptote hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-asymptote
/Users/aaronjensen/.emacs.d/elpa/seq-2.16/seq hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/emacs-lisp/seq

Features:
(shadow sort mail-extr emacsbug evil-nerd-commenter
evil-nerd-commenter-operator tabify helm-command helm-elisp helm-eval
misearch multi-isearch network-stream nsm starttls dockerfile-mode
alchemist alchemist-macroexpand alchemist-company alchemist-help
alchemist-complete alchemist-refcard alchemist-phoenix alchemist-compile
alchemist-iex alchemist-message alchemist-hooks alchemist-hex
alchemist-mix alchemist-info alchemist-goto alchemist-scope
alchemist-eval alchemist-interact alchemist-server alchemist-execute
alchemist-report alchemist-test-mode alchemist-project alchemist-file
alchemist-key alchemist-utils elixir-mode pkg-info epl elixir-smie
company-tern dash-functional js-doc iswitchb js2-imenu-extras
js2-refactor js2r-paredit js2r-conveniences js2r-conditionals
js2r-wrapping js2r-functions js2r-vars js2r-iife js2r-formatting
js2r-helpers skewer-mode cache-table simple-httpd tern cursor-sensor
js2-mode js cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs imenu flycheck-elm company-robe
evil-matchit robe url-handlers inf-ruby rubocop ruby-tools sh-script
executable yaml-mode auto-compile packed elisp-slime-nav
evil-cleverparens evil-cleverparens-text-objects evil-cleverparens-util
paredit lispy swiper ivy delsel iedit iedit-lib multiple-cursors-core
lispy-inline avy semantic/db eieio-base semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw mode-local
cedet evil-ediff ediff-merg ediff-wind ediff-diff ediff-mult ediff-help
ediff-init ediff-util ediff edebug lispy-tags goto-addr bug-reference
auto-highlight-symbol clean-aindent-mode highlight-numbers parent-mode
highlight-parentheses hideshow rainbow-delimiters company-files
company-keywords company-etags company-gtags company-template
company-dabbrev-code company-dabbrev company-capf org-eldoc evil-org
ob-shell org-bullets org-download url-http tls gnutls url-auth url-gw
toc-org ert debug clojure-snippets yasnippet image-file org-rmail
org-mhe org-irc org-info org-gnus org-docview org-bibtex bibtex org-bbdb
org-w3m mu4e-maildirs-extension org-mu4e mu4e mu4e-speedbar speedbar
sb-image ezimage dframe mu4e-main mu4e-context mu4e-view epa
mu4e-headers mu4e-compose mu4e-draft mu4e-actions rfc2368 smtpmail
sendmail mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils doc-view
jka-compr mu4e-lists mu4e-vars mu4e-meta ox-gfm ox-md ox-latex
ox-icalendar ox-html ox-ascii ox-publish ox org-element avl-tree org
org-macro org-footnote org-pcomplete org-list org-faces org-entities
org-version ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-src ob-keys ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs cal-menu calendar cal-loaddefs vc-git projectile grep
ibuf-ext ibuffer recentf tree-widget shackle hungry-delete
fill-or-unfill fix-autorevert-breaking-git eval-overlay
fix-bracketed-paste company-simple-complete init-terminal-cursor
evil-terminal-cursor-changer init-org init-magit init-elixir init-deft
evil-mc evil-mc-command-execute evil-mc-command-record
evil-mc-cursor-make evil-mc-region evil-mc-cursor-state evil-mc-undo
evil-mc-vars evil-mc-known-commands evil-mc-common hl-todo xterm-color
spacemacs-whitespace-cleanup ws-butler winner window-numbering etags
xref project volatile-highlights vi-tilde-fringe tmux spaceline-config
spaceline-segments spaceline powerline powerline-separators color
powerline-themes smartparens-config smartparens-ruby smartparens-html
saveplace savehist ruby-test-mode pcre2el rxt re-builder ruby-mode smie
popwin persp-mode osx-trash info+ image-mode ido-vertical-mode helm-mode
helm-files image-dired dired-x dired-aux ffap helm-buffers helm-elscreen
helm-tags helm-bookmark helm-adaptive helm-info bookmark pp helm-locate
helm-grep helm-regexp helm-external helm-net browse-url xml url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap helm-utils compile helm-help helm-types
git-gutter-fringe+ fringe-helper git-gutter+ git-commit with-editor
async-bytecomp async tramp-sh server log-edit message rfc822 mml mml-sec
epg mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
docker-tramp tramp-cache tramp tramp-compat tramp-loaddefs trampver
shell pcomplete comint ansi-color flyspell-correct-helm helm helm-source
helm-multi-match helm-lib dired flyspell-correct flyspell ispell
flycheck find-func flx-ido flx ido eyebrowse format-spec
exec-path-from-shell evil-unimpaired f s evil-surround
evil-search-highlight-persist evil-numbers evil-lisp-state smartparens
evil-indent-plus evil-exchange evil-escape evil-args evil-anzu anzu
cider-eval-sexp-fu eval-sexp-fu rx highlight noutline outline diff-hl
vc-dir ewoc vc vc-dispatcher diff-mode company-web dash company-css
company web-completion-data adaptive-wrap hybrid-mode
evil-evilified-state which-key use-package diminish bind-key hydra lv
cus-edit cus-start cus-load evil evil-integration undo-tree diff
evil-maps evil-commands evil-jumps evil-command-window evil-types
evil-search evil-ex evil-macros evil-repeat evil-states evil-core
evil-common windmove thingatpt rect evil-digraphs evil-vars ring info
bind-map quelpa url-parse auth-source gnus-util password-cache url-vars
package-build mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047
rfc2045 ietf-drums mm-util help-fns mail-prsvr json map lisp-mnt hl-line
xt-mouse autorevert filenotify disp-table wid-edit monokai-theme
finder-inf init-html init-javascript sgml-mode init-evil
core-configuration-layer eieio-compat cl-seq ht cl warnings package
epg-config seq eieio byte-opt bytecomp byte-compile cl-extra help-mode
cconv eieio-core core-spacemacs core-use-package-ext
core-transient-state core-micro-state core-toggle core-keybindings
core-fonts-support core-spacemacs-buffer derived edmacro kmacro
core-funcs cl-macs gv core-themes-support core-display-init
core-auto-completion core-release-management core-dotspacemacs
core-command-line core-debug advice profiler easymenu cl-loaddefs cl-lib
page-break-lines easy-mmode subr-x pcase time-date mule-util tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
ns-win ucs-normalize term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cl-generic cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese charscript case-table epa-hook
jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote kqueue cocoa ns multi-tty
make-network-process emacs)

Memory information:
((conses 16 1068122 891337)
(symbols 48 82031 35)
(miscs 40 6570 10733)
(strings 32 209973 395364)
(string-bytes 1 7368564)
(vectors 16 130382)
(vector-slots 8 2505920 346982)
(floats 8 1994 3740)
(intervals 56 13720 14404)
(buffers 976 61))

Aaron


--5790dc42_6b8b4567_66d0
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<html xmlns=3D=22http://www.w3.org/1999/xhtml=22><head></head><body style=
=3D=22word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break=
: after-white-space;=22><div>                                            =
                  <title></title>                                        =
                      <div id=3D=22template=22 style=3D=22font-family:Hel=
vetica;color:=23000000;font-size:14px;=22><div><br></div><div>In certain =
situations, the caching of syntax-ppss can seem to be<br></div><div>insuf=
ficient for good performance when syntax-ppss is invoked in a tight<br></=
div><div>loop. smartparens is a popular package that currently invokes<br=
></div><div>syntax-ppss in a tight loop (about 30-100 times depending on =
how many<br></div><div>match pairs are configured). syntax-ppss has cachi=
ng built in, but it is<br></div><div>willing to use a cache from a furthe=
r back position and do a<br></div><div>=60parse-partial-sexp=60 from the =
old position to the current. Afterwards,<br></div><div>it does not set th=
e cache with the current position. As such, in the<br></div><div>patholog=
ical case, it can parse =7E2000 characters 30-100 times in a tight<br></d=
iv><div>loop. This is slow enough to show up in profiling and affect typi=
ng<br></div><div>latency.<br></div><div><br></div><div>To repro, install:=
<br></div><div><br></div><div>smartparens (you can use<br></div><div>http=
s://github.com/aaronjensen/smartparens/tree/limit-binding-of-case-fold-se=
arch<br></div><div>to alleviate a different performance issue which could=
 distract in the profiling)<br></div><div>elixir-mode<br></div><div><br><=
/div><div>Load this file into a buffer, ensure elixir-mode is enabled: ht=
tps://gist.github.com/aaronjensen/d4cd40347a916dd36c8239afecf64a7d<br></d=
iv><div><br></div><div>Go down to the chunk=5Fby function and type inside=
 of it. If you profile,<br></div><div>you'll see that syntax-ppss rises t=
o the top. Here is an example<br></div><div>reversed profile:<br></div><d=
iv><br></div><div>+ redisplay                                            =
           218  32%<br></div><div>- progn                                =
                           120  18%<br></div><div> - if                  =
                                           120  18%<br></div><div>  - con=
dition-case                                                120  18%<br></=
div><div>   - let                                                        =
  120  18%<br></div><div>    + syntax-ppss                               =
                  120  18%<br></div><div>+ sit-for                       =
                                  101  15%<br></div><div>+ sp--looking-ba=
ck                                                 55   8%<br></div><div>=
+ font-lock-fontify-keywords-region                                45   6=
%<br></div><div>+ alchemist-project-root                                 =
          41   6%<br></div><div><br></div><div><br></div><div>=46or what =
it is worth, if the file is longer this tends to not happen as<br></div><=
div>syntax-ppss ends up executing for something (end of buffer it seems) =
outside of the =22close=22<br></div><div>heuristic which will ultimately =
cause the syntax-ppss-last to get set to<br></div><div>the current positi=
on for the tight loop. The issue is only when the<br></div><div>first bra=
nch of syntax-ppss is taken in a tight loop and pos - old-pos<br></div><d=
iv>is great enough.<br></div><div><br></div><div>Please see https://githu=
b.com/=46uco1/smartparens/pull/629 for additional<br></div><div>context a=
nd discussion.<br></div><div><br></div><div>Thanks=21<br></div><div><br><=
/div><div>Aaron<br></div><div><br></div><div><br></div><div><br></div><di=
v>In GNU Emacs 25.0.95.1 (x86=5F64-apple-darwin15.5.0, NS appkit-1404.47 =
Version 10.11.5 (Build 15=4634))<br></div><div> of 2016-06-10 built on aa=
ronmbp.local<br></div><div>Windowing system distributor 'Apple', version =
10.3.1404<br></div><div>Configured using:<br></div><div> 'configure --dis=
able-dependency-tracking --disable-silent-rules<br></div><div> --enable-l=
ocallisppath=3D/usr/local/share/emacs/site-lisp<br></div><div> --infodir=3D=
/usr/local/Cellar/emacs/25.0.95/share/info/emacs<br></div><div> --prefix=3D=
/usr/local/Cellar/emacs/25.0.95 --with-xml2 --without-dbus<br></div><div>=
 --with-gnutls --with-rsvg --with-imagemagick --with-ns<br></div><div> --=
disable-ns-self-contained'<br></div><div><br></div><div>Configured featur=
es:<br></div><div>JPEG RSVG IMAGEMAGICK NOTI=46Y ACL GNUTLS LIBXML2 ZLIB =
TOOLKIT=5FSCROLL=5FBARS<br></div><div>NS<br></div><div><br></div><div>Imp=
ortant settings:<br></div><div>  value of =24LANG: en=5FUS.UT=46-8<br></d=
iv><div>  locale-coding-system: utf-8-unix<br></div><div><br></div><div>M=
ajor mode: Elixir<br></div><div><br></div><div>Minor modes in effect:<br>=
</div><div>  alchemist-mode: t<br></div><div>  goto-address-prog-mode: t<=
br></div><div>  bug-reference-prog-mode: t<br></div><div>  auto-highlight=
-symbol-mode: t<br></div><div>  clean-aindent-mode: t<br></div><div>  hig=
hlight-numbers-mode: t<br></div><div>  highlight-parentheses-mode: t<br><=
/div><div>  rainbow-delimiters-mode: t<br></div><div>  yas-global-mode: t=
<br></div><div>  yas-minor-mode: t<br></div><div>  projectile-global-mode=
: t<br></div><div>  projectile-mode: t<br></div><div>  recentf-mode: t<br=
></div><div>  shackle-mode: t<br></div><div>  global-hungry-delete-mode: =
t<br></div><div>  hungry-delete-mode: t<br></div><div>  evil-mc-mode: t<b=
r></div><div>  hl-todo-mode: t<br></div><div>  global-spacemacs-whitespac=
e-cleanup-mode: t<br></div><div>  spacemacs-whitespace-cleanup-mode: t<br=
></div><div>  ws-butler-global-mode: t<br></div><div>  ws-butler-mode: t<=
br></div><div>  winner-mode: t<br></div><div>  window-numbering-mode: t<b=
r></div><div>  volatile-highlights-mode: t<br></div><div>  global-vi-tild=
e-fringe-mode: t<br></div><div>  vi-tilde-fringe-mode: t<br></div><div>  =
spaceline-info-mode: t<br></div><div>  spaceline-helm-mode: t<br></div><d=
iv>  save-place-mode: t<br></div><div>  savehist-mode: t<br></div><div>  =
popwin-mode: t<br></div><div>  persp-mode: t<br></div><div>  Info-breadcr=
umbs-in-mode-line-mode: t<br></div><div>  ido-vertical-mode: t<br></div><=
div>  helm-mode: t<br></div><div>  global-git-gutter+-mode: t<br></div><d=
iv>  global-git-commit-mode: t<br></div><div>  async-bytecomp-package-mod=
e: t<br></div><div>  shell-dirtrack-mode: t<br></div><div>  flyspell-mode=
: t<br></div><div>  global-flycheck-mode: t<br></div><div>  flycheck-mode=
: t<br></div><div>  flx-ido-mode: t<br></div><div>  eyebrowse-mode: t<br>=
</div><div>  global-evil-surround-mode: t<br></div><div>  evil-surround-m=
ode: t<br></div><div>  global-evil-search-highlight-persist: t<br></div><=
div>  evil-search-highlight-persist: t<br></div><div>  show-smartparens-g=
lobal-mode: t<br></div><div>  show-smartparens-mode: t<br></div><div>  sm=
artparens-mode: t<br></div><div>  evil-escape-mode: t<br></div><div>  glo=
bal-anzu-mode: t<br></div><div>  anzu-mode: t<br></div><div>  eval-sexp-f=
u-flash-mode: t<br></div><div>  diff-auto-refine-mode: t<br></div><div>  =
company-mode: t<br></div><div>  hybrid-mode: t<br></div><div>  which-key-=
mode: t<br></div><div>  override-global-mode: t<br></div><div>  global-un=
do-tree-mode: t<br></div><div>  undo-tree-mode: t<br></div><div>  evil-mo=
de: t<br></div><div>  evil-local-mode: t<br></div><div>  spacemacs-leader=
-override-mode: t<br></div><div>  global-spacemacs-leader-override-mode: =
t<br></div><div>  global-hl-line-mode: t<br></div><div>  xterm-mouse-mode=
: t<br></div><div>  global-auto-revert-mode: t<br></div><div>  global-pag=
e-break-lines-mode: t<br></div><div>  global-eldoc-mode: t<br></div><div>=
  electric-indent-mode: t<br></div><div>  mouse-wheel-mode: t<br></div><d=
iv>  menu-bar-mode: t<br></div><div>  file-name-shadow-mode: t<br></div><=
div>  global-font-lock-mode: t<br></div><div>  font-lock-mode: t<br></div=
><div>  auto-composition-mode: t<br></div><div>  auto-encryption-mode: t<=
br></div><div>  auto-compression-mode: t<br></div><div>  column-number-mo=
de: t<br></div><div>  line-number-mode: t<br></div><div>  transient-mark-=
mode: t<br></div><div>  abbrev-mode: t<br></div><div>  hs-minor-mode: t<b=
r></div><div><br></div><div>Recent messages:<br></div><div>20394 19299 =5B=
100 times=5D<br></div><div>20390 19299 =5B2 times=5D<br></div><div>20394 =
19299<br></div><div>syntax-ppss<br></div><div>No profiler stopped<br></di=
v><div>CPU profiler started<br></div><div>CPU profiler stopped<br></div><=
div>CPU profiler started<br></div><div>Quit<br></div><div>Mark saved wher=
e search started =5B2 times=5D<br></div><div><br></div><div>Load-path sha=
dows:<br></div><div>/Users/aaronjensen/.emacs.d/elpa/helm-20160718.746/he=
lm-multi-match hides /Users/aaronjensen/.emacs.d/elpa/helm-core-20160718.=
746/helm-multi-match<br></div><div>/Users/aaronjensen/.emacs.d/elpa/ox-gf=
m-20160520.2040/ox-gfm hides /Users/aaronjensen/.emacs.d/elpa/org-plus-co=
ntrib-20160718/ox-gfm<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-=
download-20160620.607/org-download hides /Users/aaronjensen/.emacs.d/elpa=
/org-plus-contrib-20160718/org-download<br></div><div>/Users/aaronjensen/=
.emacs.d/elpa/org-bullets-20140918.1137/org-bullets hides /Users/aaronjen=
sen/.emacs.d/elpa/org-plus-contrib-20160718/org-bullets<br></div><div>/Us=
ers/aaronjensen/.emacs.d/elpa/ht-20150830.1115/ht hides =7E/.emacs.d/core=
/libs/ht<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-=
20160718/ox hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lis=
p/org/ox<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-=
20160718/ox-texinfo hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.=
0.95/lisp/org/ox-texinfo<br></div><div>/Users/aaronjensen/.emacs.d/elpa/o=
rg-plus-contrib-20160718/ox-publish hides /usr/local/Cellar/emacs/25.0.95=
/share/emacs/25.0.95/lisp/org/ox-publish<br></div><div>/Users/aaronjensen=
/.emacs.d/elpa/org-plus-contrib-20160718/ox-org hides /usr/local/Cellar/e=
macs/25.0.95/share/emacs/25.0.95/lisp/org/ox-org<br></div><div>/Users/aar=
onjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-odt hides /usr/local/=
Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-odt<br></div><div>/U=
sers/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-md hides /usr=
/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-md<br></div><=
div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-man hid=
es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-man<br=
></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox=
-latex hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org=
/ox-latex<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib=
-20160718/ox-icalendar hides /usr/local/Cellar/emacs/25.0.95/share/emacs/=
25.0.95/lisp/org/ox-icalendar<br></div><div>/Users/aaronjensen/.emacs.d/e=
lpa/org-plus-contrib-20160718/ox-html hides /usr/local/Cellar/emacs/25.0.=
95/share/emacs/25.0.95/lisp/org/ox-html<br></div><div>/Users/aaronjensen/=
.emacs.d/elpa/org-plus-contrib-20160718/ox-beamer hides /usr/local/Cellar=
/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-beamer<br></div><div>/User=
s/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ox-ascii hides /usr=
/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ox-ascii<br></di=
v><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org hid=
es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org<br></=
div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-w=
3m hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org=
-w3m<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2016=
0718/org-version hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.9=
5/lisp/org/org-version<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org=
-plus-contrib-20160718/org-timer hides /usr/local/Cellar/emacs/25.0.95/sh=
are/emacs/25.0.95/lisp/org/org-timer<br></div><div>/Users/aaronjensen/.em=
acs.d/elpa/org-plus-contrib-20160718/org-table hides /usr/local/Cellar/em=
acs/25.0.95/share/emacs/25.0.95/lisp/org/org-table<br></div><div>/Users/a=
aronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-src hides /usr/loc=
al/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-src<br></div><di=
v>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-rmail hi=
des /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-rmai=
l<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2016071=
8/org-protocol hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/=
lisp/org/org-protocol<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-=
plus-contrib-20160718/org-plot hides /usr/local/Cellar/emacs/25.0.95/shar=
e/emacs/25.0.95/lisp/org/org-plot<br></div><div>/Users/aaronjensen/.emacs=
.d/elpa/org-plus-contrib-20160718/org-pcomplete hides /usr/local/Cellar/e=
macs/25.0.95/share/emacs/25.0.95/lisp/org/org-pcomplete<br></div><div>/Us=
ers/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-mouse hides /=
usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-mouse<br>=
</div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org=
-mobile hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/or=
g/org-mobile<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-cont=
rib-20160718/org-mhe hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25=
.0.95/lisp/org/org-mhe<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org=
-plus-contrib-20160718/org-macs hides /usr/local/Cellar/emacs/25.0.95/sha=
re/emacs/25.0.95/lisp/org/org-macs<br></div><div>/Users/aaronjensen/.emac=
s.d/elpa/org-plus-contrib-20160718/org-macro hides /usr/local/Cellar/emac=
s/25.0.95/share/emacs/25.0.95/lisp/org/org-macro<br></div><div>/Users/aar=
onjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-loaddefs hides /usr/=
local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-loaddefs<br><=
/div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-=
list hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/o=
rg-list<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2=
0160718/org-irc hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95=
/lisp/org/org-irc<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus=
-contrib-20160718/org-install hides /usr/local/Cellar/emacs/25.0.95/share=
/emacs/25.0.95/lisp/org/org-install<br></div><div>/Users/aaronjensen/.ema=
cs.d/elpa/org-plus-contrib-20160718/org-inlinetask hides /usr/local/Cella=
r/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-inlinetask<br></div><div=
>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-info hide=
s /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-info<b=
r></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/o=
rg-indent hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/=
org/org-indent<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-co=
ntrib-20160718/org-id hides /usr/local/Cellar/emacs/25.0.95/share/emacs/2=
5.0.95/lisp/org/org-id<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org=
-plus-contrib-20160718/org-habit hides /usr/local/Cellar/emacs/25.0.95/sh=
are/emacs/25.0.95/lisp/org/org-habit<br></div><div>/Users/aaronjensen/.em=
acs.d/elpa/org-plus-contrib-20160718/org-gnus hides /usr/local/Cellar/ema=
cs/25.0.95/share/emacs/25.0.95/lisp/org/org-gnus<br></div><div>/Users/aar=
onjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-footnote hides /usr/=
local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-footnote<br><=
/div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-=
feed hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/o=
rg-feed<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2=
0160718/org-faces hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.=
95/lisp/org/org-faces<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-=
plus-contrib-20160718/org-eshell hides /usr/local/Cellar/emacs/25.0.95/sh=
are/emacs/25.0.95/lisp/org/org-eshell<br></div><div>/Users/aaronjensen/.e=
macs.d/elpa/org-plus-contrib-20160718/org-entities hides /usr/local/Cella=
r/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-entities<br></div><div>/=
Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-element hid=
es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-eleme=
nt<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-201607=
18/org-docview hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/=
lisp/org/org-docview<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-p=
lus-contrib-20160718/org-datetree hides /usr/local/Cellar/emacs/25.0.95/s=
hare/emacs/25.0.95/lisp/org/org-datetree<br></div><div>/Users/aaronjensen=
/.emacs.d/elpa/org-plus-contrib-20160718/org-ctags hides /usr/local/Cella=
r/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-ctags<br></div><div>/Use=
rs/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-crypt hides /u=
sr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-crypt<br><=
/div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-=
compat hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org=
/org-compat<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contr=
ib-20160718/org-colview hides /usr/local/Cellar/emacs/25.0.95/share/emacs=
/25.0.95/lisp/org/org-colview<br></div><div>/Users/aaronjensen/.emacs.d/e=
lpa/org-plus-contrib-20160718/org-clock hides /usr/local/Cellar/emacs/25.=
0.95/share/emacs/25.0.95/lisp/org/org-clock<br></div><div>/Users/aaronjen=
sen/.emacs.d/elpa/org-plus-contrib-20160718/org-capture hides /usr/local/=
Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-capture<br></div><d=
iv>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-bibtex =
hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-bi=
btex<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2016=
0718/org-bbdb hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/l=
isp/org/org-bbdb<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-=
contrib-20160718/org-attach hides /usr/local/Cellar/emacs/25.0.95/share/e=
macs/25.0.95/lisp/org/org-attach<br></div><div>/Users/aaronjensen/.emacs.=
d/elpa/org-plus-contrib-20160718/org-archive hides /usr/local/Cellar/emac=
s/25.0.95/share/emacs/25.0.95/lisp/org/org-archive<br></div><div>/Users/a=
aronjensen/.emacs.d/elpa/org-plus-contrib-20160718/org-agenda hides /usr/=
local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/org-agenda<br></d=
iv><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob hid=
es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob<br></d=
iv><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-tan=
gle hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob=
-tangle<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-2=
0160718/ob-table hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.9=
5/lisp/org/ob-table<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-pl=
us-contrib-20160718/ob-sqlite hides /usr/local/Cellar/emacs/25.0.95/share=
/emacs/25.0.95/lisp/org/ob-sqlite<br></div><div>/Users/aaronjensen/.emacs=
.d/elpa/org-plus-contrib-20160718/ob-sql hides /usr/local/Cellar/emacs/25=
.0.95/share/emacs/25.0.95/lisp/org/ob-sql<br></div><div>/Users/aaronjense=
n/.emacs.d/elpa/org-plus-contrib-20160718/ob-shen hides /usr/local/Cellar=
/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-shen<br></div><div>/Users/=
aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-screen hides /usr/=
local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-screen<br></di=
v><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-sche=
me hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-=
scheme<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20=
160718/ob-scala hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95=
/lisp/org/ob-scala<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plu=
s-contrib-20160718/ob-sass hides /usr/local/Cellar/emacs/25.0.95/share/em=
acs/25.0.95/lisp/org/ob-sass<br></div><div>/Users/aaronjensen/.emacs.d/el=
pa/org-plus-contrib-20160718/ob-ruby hides /usr/local/Cellar/emacs/25.0.9=
5/share/emacs/25.0.95/lisp/org/ob-ruby<br></div><div>/Users/aaronjensen/.=
emacs.d/elpa/org-plus-contrib-20160718/ob-ref hides /usr/local/Cellar/ema=
cs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ref<br></div><div>/Users/aaron=
jensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-R hides /usr/local/Cell=
ar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-R<br></div><div>/Users/a=
aronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-python hides /usr/l=
ocal/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-python<br></div=
><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-plant=
uml hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob=
-plantuml<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib=
-20160718/ob-picolisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/2=
5.0.95/lisp/org/ob-picolisp<br></div><div>/Users/aaronjensen/.emacs.d/elp=
a/org-plus-contrib-20160718/ob-perl hides /usr/local/Cellar/emacs/25.0.95=
/share/emacs/25.0.95/lisp/org/ob-perl<br></div><div>/Users/aaronjensen/.e=
macs.d/elpa/org-plus-contrib-20160718/ob-org hides /usr/local/Cellar/emac=
s/25.0.95/share/emacs/25.0.95/lisp/org/ob-org<br></div><div>/Users/aaronj=
ensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-octave hides /usr/local/=
Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-octave<br></div><div=
>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-ocaml hide=
s /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-ocaml<b=
r></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/o=
b-mscgen hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/o=
rg/ob-mscgen<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-cont=
rib-20160718/ob-maxima hides /usr/local/Cellar/emacs/25.0.95/share/emacs/=
25.0.95/lisp/org/ob-maxima<br></div><div>/Users/aaronjensen/.emacs.d/elpa=
/org-plus-contrib-20160718/ob-matlab hides /usr/local/Cellar/emacs/25.0.9=
5/share/emacs/25.0.95/lisp/org/ob-matlab<br></div><div>/Users/aaronjensen=
/.emacs.d/elpa/org-plus-contrib-20160718/ob-makefile hides /usr/local/Cel=
lar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-makefile<br></div><div>=
/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lob hides /=
usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-lob<br></d=
iv><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-lis=
p hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-l=
isp<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160=
718/ob-lilypond hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95=
/lisp/org/ob-lilypond<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-=
plus-contrib-20160718/ob-ledger hides /usr/local/Cellar/emacs/25.0.95/sha=
re/emacs/25.0.95/lisp/org/ob-ledger<br></div><div>/Users/aaronjensen/.ema=
cs.d/elpa/org-plus-contrib-20160718/ob-latex hides /usr/local/Cellar/emac=
s/25.0.95/share/emacs/25.0.95/lisp/org/ob-latex<br></div><div>/Users/aaro=
njensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-keys hides /usr/local/=
Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-keys<br></div><div>/=
Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-js hides /us=
r/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-js<br></div>=
<div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-java h=
ides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-java=
<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718=
/ob-io hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org=
/ob-io<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20=
160718/ob-haskell hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.=
95/lisp/org/ob-haskell<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org=
-plus-contrib-20160718/ob-gnuplot hides /usr/local/Cellar/emacs/25.0.95/s=
hare/emacs/25.0.95/lisp/org/ob-gnuplot<br></div><div>/Users/aaronjensen/.=
emacs.d/elpa/org-plus-contrib-20160718/ob-fortran hides /usr/local/Cellar=
/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-fortran<br></div><div>/Use=
rs/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-exp hides /usr/=
local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-exp<br></div><=
div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-eval hi=
des /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-eval<=
br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/=
ob-emacs-lisp hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/l=
isp/org/ob-emacs-lisp<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-=
plus-contrib-20160718/ob-dot hides /usr/local/Cellar/emacs/25.0.95/share/=
emacs/25.0.95/lisp/org/ob-dot<br></div><div>/Users/aaronjensen/.emacs.d/e=
lpa/org-plus-contrib-20160718/ob-ditaa hides /usr/local/Cellar/emacs/25.0=
.95/share/emacs/25.0.95/lisp/org/ob-ditaa<br></div><div>/Users/aaronjense=
n/.emacs.d/elpa/org-plus-contrib-20160718/ob-css hides /usr/local/Cellar/=
emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-css<br></div><div>/Users/aa=
ronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-core hides /usr/loca=
l/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-core<br></div><div=
>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718/ob-comint hid=
es /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-comint=
<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-contrib-20160718=
/ob-clojure hides /usr/local/Cellar/emacs/25.0.95/share/emacs/25.0.95/lis=
p/org/ob-clojure<br></div><div>/Users/aaronjensen/.emacs.d/elpa/org-plus-=
contrib-20160718/ob-calc hides /usr/local/Cellar/emacs/25.0.95/share/emac=
s/25.0.95/lisp/org/ob-calc<br></div><div>/Users/aaronjensen/.emacs.d/elpa=
/org-plus-contrib-20160718/ob-C hides /usr/local/Cellar/emacs/25.0.95/sha=
re/emacs/25.0.95/lisp/org/ob-C<br></div><div>/Users/aaronjensen/.emacs.d/=
elpa/org-plus-contrib-20160718/ob-awk hides /usr/local/Cellar/emacs/25.0.=
95/share/emacs/25.0.95/lisp/org/ob-awk<br></div><div>/Users/aaronjensen/.=
emacs.d/elpa/org-plus-contrib-20160718/ob-asymptote hides /usr/local/Cell=
ar/emacs/25.0.95/share/emacs/25.0.95/lisp/org/ob-asymptote<br></div><div>=
/Users/aaronjensen/.emacs.d/elpa/seq-2.16/seq hides /usr/local/Cellar/ema=
cs/25.0.95/share/emacs/25.0.95/lisp/emacs-lisp/seq<br></div><div><br></di=
v><div>=46eatures:<br></div><div>(shadow sort mail-extr emacsbug evil-ner=
d-commenter<br></div><div>evil-nerd-commenter-operator tabify helm-comman=
d helm-elisp helm-eval<br></div><div>misearch multi-isearch network-strea=
m nsm starttls dockerfile-mode<br></div><div>alchemist alchemist-macroexp=
and alchemist-company alchemist-help<br></div><div>alchemist-complete alc=
hemist-refcard alchemist-phoenix alchemist-compile<br></div><div>alchemis=
t-iex alchemist-message alchemist-hooks alchemist-hex<br></div><div>alche=
mist-mix alchemist-info alchemist-goto alchemist-scope<br></div><div>alch=
emist-eval alchemist-interact alchemist-server alchemist-execute<br></div=
><div>alchemist-report alchemist-test-mode alchemist-project alchemist-fi=
le<br></div><div>alchemist-key alchemist-utils elixir-mode pkg-info epl e=
lixir-smie<br></div><div>company-tern dash-functional js-doc iswitchb js2=
-imenu-extras<br></div><div>js2-refactor js2r-paredit js2r-conveniences j=
s2r-conditionals<br></div><div>js2r-wrapping js2r-functions js2r-vars js2=
r-iife js2r-formatting<br></div><div>js2r-helpers skewer-mode cache-table=
 simple-httpd tern cursor-sensor<br></div><div>js2-mode js cc-mode cc-fon=
ts cc-guess cc-menus cc-cmds cc-styles<br></div><div>cc-align cc-engine c=
c-vars cc-defs imenu flycheck-elm company-robe<br></div><div>evil-matchit=
 robe url-handlers inf-ruby rubocop ruby-tools sh-script<br></div><div>ex=
ecutable yaml-mode auto-compile packed elisp-slime-nav<br></div><div>evil=
-cleverparens evil-cleverparens-text-objects evil-cleverparens-util<br></=
div><div>paredit lispy swiper ivy delsel iedit iedit-lib multiple-cursors=
-core<br></div><div>lispy-inline avy semantic/db eieio-base semantic/util=
-modes<br></div><div>semantic/util semantic semantic/tag semantic/lex sem=
antic/fw mode-local<br></div><div>cedet evil-ediff ediff-merg ediff-wind =
ediff-diff ediff-mult ediff-help<br></div><div>ediff-init ediff-util edif=
f edebug lispy-tags goto-addr bug-reference<br></div><div>auto-highlight-=
symbol clean-aindent-mode highlight-numbers parent-mode<br></div><div>hig=
hlight-parentheses hideshow rainbow-delimiters company-files<br></div><di=
v>company-keywords company-etags company-gtags company-template<br></div>=
<div>company-dabbrev-code company-dabbrev company-capf org-eldoc evil-org=
<br></div><div>ob-shell org-bullets org-download url-http tls gnutls url-=
auth url-gw<br></div><div>toc-org ert debug clojure-snippets yasnippet im=
age-file org-rmail<br></div><div>org-mhe org-irc org-info org-gnus org-do=
cview org-bibtex bibtex org-bbdb<br></div><div>org-w3m mu4e-maildirs-exte=
nsion org-mu4e mu4e mu4e-speedbar speedbar<br></div><div>sb-image ezimage=
 dframe mu4e-main mu4e-context mu4e-view epa<br></div><div>mu4e-headers m=
u4e-compose mu4e-draft mu4e-actions rfc2368 smtpmail<br></div><div>sendma=
il mu4e-mark mu4e-message html2text mu4e-proc mu4e-utils doc-view<br></di=
v><div>jka-compr mu4e-lists mu4e-vars mu4e-meta ox-gfm ox-md ox-latex<br>=
</div><div>ox-icalendar ox-html ox-ascii ox-publish ox org-element avl-tr=
ee org<br></div><div>org-macro org-footnote org-pcomplete org-list org-fa=
ces org-entities<br></div><div>org-version ob-emacs-lisp ob ob-tangle ob-=
ref ob-lob ob-table ob-exp<br></div><div>org-src ob-keys ob-comint ob-cor=
e ob-eval org-compat org-macs<br></div><div>org-loaddefs cal-menu calenda=
r cal-loaddefs vc-git projectile grep<br></div><div>ibuf-ext ibuffer rece=
ntf tree-widget shackle hungry-delete<br></div><div>fill-or-unfill fix-au=
torevert-breaking-git eval-overlay<br></div><div>fix-bracketed-paste comp=
any-simple-complete init-terminal-cursor<br></div><div>evil-terminal-curs=
or-changer init-org init-magit init-elixir init-deft<br></div><div>evil-m=
c evil-mc-command-execute evil-mc-command-record<br></div><div>evil-mc-cu=
rsor-make evil-mc-region evil-mc-cursor-state evil-mc-undo<br></div><div>=
evil-mc-vars evil-mc-known-commands evil-mc-common hl-todo xterm-color<br=
></div><div>spacemacs-whitespace-cleanup ws-butler winner window-numberin=
g etags<br></div><div>xref project volatile-highlights vi-tilde-fringe tm=
ux spaceline-config<br></div><div>spaceline-segments spaceline powerline =
powerline-separators color<br></div><div>powerline-themes smartparens-con=
fig smartparens-ruby smartparens-html<br></div><div>saveplace savehist ru=
by-test-mode pcre2el rxt re-builder ruby-mode smie<br></div><div>popwin p=
ersp-mode osx-trash info+ image-mode ido-vertical-mode helm-mode<br></div=
><div>helm-files image-dired dired-x dired-aux ffap helm-buffers helm-els=
creen<br></div><div>helm-tags helm-bookmark helm-adaptive helm-info bookm=
ark pp helm-locate<br></div><div>helm-grep helm-regexp helm-external helm=
-net browse-url xml url<br></div><div>url-proxy url-privacy url-expand ur=
l-methods url-history url-cookie<br></div><div>url-domsuf url-util mailca=
p helm-utils compile helm-help helm-types<br></div><div>git-gutter-fringe=
+ fringe-helper git-gutter+ git-commit with-editor<br></div><div>async-by=
tecomp async tramp-sh server log-edit message rfc822 mml mml-sec<br></div=
><div>epg mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log<br=
></div><div>docker-tramp tramp-cache tramp tramp-compat tramp-loaddefs tr=
ampver<br></div><div>shell pcomplete comint ansi-color flyspell-correct-h=
elm helm helm-source<br></div><div>helm-multi-match helm-lib dired flyspe=
ll-correct flyspell ispell<br></div><div>flycheck find-func flx-ido flx i=
do eyebrowse format-spec<br></div><div>exec-path-from-shell evil-unimpair=
ed f s evil-surround<br></div><div>evil-search-highlight-persist evil-num=
bers evil-lisp-state smartparens<br></div><div>evil-indent-plus evil-exch=
ange evil-escape evil-args evil-anzu anzu<br></div><div>cider-eval-sexp-f=
u eval-sexp-fu rx highlight noutline outline diff-hl<br></div><div>vc-dir=
 ewoc vc vc-dispatcher diff-mode company-web dash company-css<br></div><d=
iv>company web-completion-data adaptive-wrap hybrid-mode<br></div><div>ev=
il-evilified-state which-key use-package diminish bind-key hydra lv<br></=
div><div>cus-edit cus-start cus-load evil evil-integration undo-tree diff=
<br></div><div>evil-maps evil-commands evil-jumps evil-command-window evi=
l-types<br></div><div>evil-search evil-ex evil-macros evil-repeat evil-st=
ates evil-core<br></div><div>evil-common windmove thingatpt rect evil-dig=
raphs evil-vars ring info<br></div><div>bind-map quelpa url-parse auth-so=
urce gnus-util password-cache url-vars<br></div><div>package-build mm-dec=
ode mm-bodies mm-encode mail-parse rfc2231 rfc2047<br></div><div>rfc2045 =
ietf-drums mm-util help-fns mail-prsvr json map lisp-mnt hl-line<br></div=
><div>xt-mouse autorevert filenotify disp-table wid-edit monokai-theme<br=
></div><div>finder-inf init-html init-javascript sgml-mode init-evil<br><=
/div><div>core-configuration-layer eieio-compat cl-seq ht cl warnings pac=
kage<br></div><div>epg-config seq eieio byte-opt bytecomp byte-compile cl=
-extra help-mode<br></div><div>cconv eieio-core core-spacemacs core-use-p=
ackage-ext<br></div><div>core-transient-state core-micro-state core-toggl=
e core-keybindings<br></div><div>core-fonts-support core-spacemacs-buffer=
 derived edmacro kmacro<br></div><div>core-funcs cl-macs gv core-themes-s=
upport core-display-init<br></div><div>core-auto-completion core-release-=
management core-dotspacemacs<br></div><div>core-command-line core-debug a=
dvice profiler easymenu cl-loaddefs cl-lib<br></div><div>page-break-lines=
 easy-mmode subr-x pcase time-date mule-util tooltip<br></div><div>eldoc =
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel<br></div><di=
v>ns-win ucs-normalize term/common-win tool-bar dnd fontset image<br></di=
v><div>regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode<b=
r></div><div>prog-mode register page menu-bar rfn-eshadow timer select sc=
roll-bar<br></div><div>mouse jit-lock font-lock syntax facemenu font-core=
 frame cl-generic cham<br></div><div>georgian utf-8-lang misc-lang vietna=
mese tibetan thai tai-viet lao<br></div><div>korean japanese eucjp-ms cp5=
1932 hebrew greek romanian slovak czech<br></div><div>european ethiopic i=
ndian cyrillic chinese charscript case-table epa-hook<br></div><div>jka-c=
mpr-hook help simple abbrev minibuffer cl-preloaded nadvice<br></div><div=
>loaddefs button faces cus-face macroexp files text-properties overlay<br=
></div><div>sha1 md5 base64 format env code-pages mule custom widget<br><=
/div><div>hashtable-print-readable backquote kqueue cocoa ns multi-tty<br=
></div><div>make-network-process emacs)<br></div><div><br></div><div>Memo=
ry information:<br></div><div>((conses 16 1068122 891337)<br></div><div> =
(symbols 48 82031 35)<br></div><div> (miscs 40 6570 10733)<br></div><div>=
 (strings 32 209973 395364)<br></div><div> (string-bytes 1 7368564)<br></=
div><div> (vectors 16 130382)<br></div><div> (vector-slots 8 2505920 3469=
82)<br></div><div> (floats 8 1994 3740)<br></div><div> (intervals 56 1372=
0 14404)<br></div><div> (buffers 976 61))<br></div><div><br></div><br></d=
iv><div id=3D=22CanarySignature=22><div><br></div>Aaron<=21--CanarySignat=
ure--></div><div><br><div id=3D=22CanaryDropbox=22></div></div>          =
                                                    </div><img src=3D=22h=
ttp://pixels.canarymail.io/tracking/07C7B5E0-9441-40AD-9CC3-D2A176741827.=
png=22 id=3D=22141121424AC1=466A74CBB8A45B347C37B=22 style=3D=22width: 1p=
x; height: 1px;=22></body></html>
--5790dc42_6b8b4567_66d0--





Acknowledgement sent to Aaron Jensen <aaronjensen@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#24048; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Wed, 1 Dec 2021 20:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.