From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: How the long-lines "optimisation" breaks font locking. Date: Wed, 3 Aug 2022 18:39:16 +0000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8127"; mail-complaints-to="usenet@ciao.gmane.io" To: emacs-devel@gnu.org, Gregory Heytings Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Aug 03 20:41:29 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oJJJB-0001wR-4I for ged-emacs-devel@m.gmane-mx.org; Wed, 03 Aug 2022 20:41:29 +0200 Original-Received: from localhost ([::1]:43708 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJJJ9-0002dH-Uk for ged-emacs-devel@m.gmane-mx.org; Wed, 03 Aug 2022 14:41:27 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:43206) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJJHL-0001qn-RT for emacs-devel@gnu.org; Wed, 03 Aug 2022 14:39:35 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:54313 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1oJJH7-00052f-N2 for emacs-devel@gnu.org; Wed, 03 Aug 2022 14:39:34 -0400 Original-Received: (qmail 3152 invoked by uid 3782); 3 Aug 2022 18:39:16 -0000 Original-Received: from acm.muc.de (p4fe15d21.dip0.t-ipconnect.de [79.225.93.33]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Wed, 03 Aug 2022 20:39:16 +0200 Original-Received: (qmail 7912 invoked by uid 1000); 3 Aug 2022 18:39:16 -0000 Content-Disposition: inline X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.1; envelope-from=acm@muc.de; helo=mail.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:293027 Archived-At: Hello Gregory and Emacs. In the current master, (i) start emacs -Q (ii) C-x C-f ~/long-line.cc (iii) Enter the following into the buffer (3 lines): char long_line[] = R"foo( )foo" (iv) Create a long line (> 10,000 characters) somehow and get it into the kill ring. (v) On the blank line 2 in long-line.cc, C-y inserting the long line. (vi) Note that there is now a long valid raw string in the buffer, correctly fontified. (vii) Put point on a "o" in the foo on L3. Delete the o (viii) Note that the opening delimiter of the raw string on L1 now has warning-face. This is correct. (ix) Undo this last change with C-_. (x) Note that the opening delimiter falsely retains the warning-face, although it is now the opener of a validly terminated raw string. This is a bug. (xi) Insert a LF (or several, if needed) into the long line, separating it into two or more lines, none of which is "long". (xii) Note that the raw string opener still has warning-face. A bug. (xiii) Do M-x c++-mode. This fails to initialise the fontification correctly, leaving the warning-face where it no longer belongs. This is a bug. (xiv) Note that in the foregoing operations, sometimes an error message appears in the echo area about the lack of an expected syntax-table text property. This is a bug. I don't think it is improbable that a C++ hacker will create a long line in a raw string. That this can cause permanent damage to the buffer's fontification doesn't seem a good thing. That it is the recent "optimisation" for long lines which causes it can be seen by repeating the above steps, but with a line less than 10,000 characters long. The fontification then behaves correctly. -- Alan Mackenzie (Nuremberg, Germany).