From: Dmitry Gutov <dgutov@yandex.ru>
To: Alan Mackenzie <acm@muc.de>
Cc: emacs-devel@gnu.org
Subject: Re: Several Major Modes.
Date: Sun, 17 Nov 2019 23:56:16 +0200 [thread overview]
Message-ID: <d70bd752-eb1c-d39e-a8d9-c897aa6ddb43@yandex.ru> (raw)
In-Reply-To: <20191117160326.GA11551@ACM>
On 17.11.2019 18:03, Alan Mackenzie wrote:
> Hello, Dmitry.
>
> On Sun, Nov 17, 2019 at 14:48:35 +0200, Dmitry Gutov wrote:
>> Hi Alan,
>
>> On 16.11.2019 15:10, Alan Mackenzie wrote:
>
>>>>> You also need to make sure narrowing is available for any purpose
>>>>> required by a major mode.
>
>>>> Eh, I think it's "available" already, but I'd have to see specific
>>>> examples.
>
>>> Oh good! I have to admit I haven't actually seen MMM Mode running,
>>> or at least I don't remember it.
>
>> I think we won't really know until there's a good change of CC Mode
>> working with MMM Mode, so then people could try and exercise various
>> features. And we'll see what works and what does not.
>
> Other than CC Mode's handling of syntax-table text properties, what
> precisely is hindering it working in MMM Mode? (That question's partly
> addressed at myself.)
>
> [ .... ]
Here's the email you missed. For some reason I can't find it in the
emacs-devel archive, but it was also addressed to you and Stefan, and
Stefan received it:
(quote begins)
By the way, I had a thought.
Like, normally font-lock does widen the buffer before fontifying
anything. So I was wondering, why doesn't this happen between steps iii
and iv somewhere?
Turns out, the (unless font-lock-dont-widen (widen)) calls are performed
inside the default values of font-lock-fontify-region-function and
font-lock-fontify-buffer-function.
But CC Mode sets font-lock-fontify-region-function to a different value,
and that specific function doesn't include this piece of code. Or
rather, didn't. The new commit added an unconditional (widen) call.
I think if you simply wrap it in (unless font-lock-dont-widen ...), it
will improve compatibility with mmm-mode already (without adverse
effects, I imagine). After that, you could audit if the other (widen)
calls spread across CC Mode are still necessary. Maybe they're used in
indentation code (that's also solvable). Maybe also by some other commands.
(quote ends)
This would be the first step. It really comes down to my original request:
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el
index 73160fc7a4..9b27ee79e9 100644
--- a/lisp/progmodes/cc-mode.el
+++ b/lisp/progmodes/cc-mode.el
@@ -2233,7 +2233,7 @@ c-font-lock-fontify-region
;; Type a space in the first blank line, and the fontification of
the next
;; line was fouled up by context fontification.
(save-restriction
- (widen)
+ (unless font-lock-dont-widen (widen))
(let (new-beg new-end new-region case-fold-search)
(if (and c-in-after-change-fontification
(< beg c-new-END) (> end c-new-BEG))
next prev parent reply other threads:[~2019-11-17 21:56 UTC|newest]
Thread overview: 55+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20191109144026.20810.76129@vcs0.savannah.gnu.org>
[not found] ` <20191109144027.DDC3720927@vcs0.savannah.gnu.org>
2019-11-11 16:52 ` master 7362554: Widen around c-font-lock-fontify-region. This fixes bug #38049 Dmitry Gutov
2019-11-11 20:34 ` Alan Mackenzie
2019-11-12 13:36 ` Dmitry Gutov
2019-11-13 21:19 ` Alan Mackenzie
2019-11-13 22:33 ` Dmitry Gutov
2019-11-14 13:42 ` Stefan Monnier
2019-11-14 14:05 ` Dmitry Gutov
2019-11-14 14:29 ` Eli Zaretskii
2019-11-14 14:35 ` Dmitry Gutov
2019-11-14 14:48 ` Eli Zaretskii
2019-11-14 14:50 ` Dmitry Gutov
2019-11-14 16:08 ` Eli Zaretskii
2019-11-14 21:07 ` Dmitry Gutov
2019-11-15 9:31 ` Eli Zaretskii
2019-11-15 10:24 ` Dmitry Gutov
2019-11-15 13:00 ` Eli Zaretskii
2019-11-14 13:49 ` Eli Zaretskii
2019-11-14 14:08 ` Dmitry Gutov
2019-11-14 14:37 ` Dmitry Gutov
2019-11-14 14:55 ` Stefan Monnier
2019-11-14 15:02 ` Dmitry Gutov
2019-11-14 15:33 ` Stefan Monnier
2019-11-14 16:12 ` Eli Zaretskii
2019-11-14 18:51 ` Stefan Monnier
2019-11-14 19:19 ` Eli Zaretskii
2019-11-14 19:48 ` Dmitry Gutov
2019-11-14 19:56 ` Eli Zaretskii
2019-11-14 19:59 ` Dmitry Gutov
2019-11-15 7:34 ` Eli Zaretskii
2019-11-15 7:52 ` Dmitry Gutov
2019-11-14 21:29 ` Stefan Monnier
2019-11-14 21:46 ` Dmitry Gutov
2019-11-15 9:36 ` Eli Zaretskii
2019-11-15 10:26 ` Dmitry Gutov
2019-11-15 23:27 ` Stefan Monnier
2019-11-16 8:02 ` Eli Zaretskii
2019-11-17 0:50 ` Stefan Monnier
2019-11-17 3:33 ` Eli Zaretskii
2019-11-17 7:36 ` Dmitry Gutov
2019-11-17 15:44 ` Eli Zaretskii
2019-11-17 17:59 ` Dmitry Gutov
2019-11-17 18:26 ` Eli Zaretskii
2019-11-17 18:35 ` Dmitry Gutov
2019-11-14 19:58 ` Dmitry Gutov
2019-11-14 21:24 ` Several Major Modes. [Was: master 7362554: Widen around c-font-lock-fontify-region. This fixes bug #38049.] Alan Mackenzie
2019-11-14 22:11 ` Dmitry Gutov
2019-11-15 20:10 ` Several Major Modes Alan Mackenzie
2019-11-15 21:45 ` Dmitry Gutov
2019-11-16 13:10 ` Alan Mackenzie
2019-11-17 12:48 ` Dmitry Gutov
2019-11-17 16:03 ` Alan Mackenzie
2019-11-17 21:56 ` Dmitry Gutov [this message]
2019-11-14 13:35 ` master 7362554: Widen around c-font-lock-fontify-region. This fixes bug #38049 Eli Zaretskii
2019-11-15 22:43 ` Dmitry Gutov
2019-11-14 12:02 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=d70bd752-eb1c-d39e-a8d9-c897aa6ddb43@yandex.ru \
--to=dgutov@yandex.ru \
--cc=acm@muc.de \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.