[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Several Major Modes.

From: Dmitry Gutov
Subject: Re: Several Major Modes.
Date: Fri, 15 Nov 2019 23:45:44 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0

Hi Alan,

On 15.11.2019 22:10, Alan Mackenzie wrote:

There are options. We'd have to decide on a suitable model, calling them
islands or whatever, but I think the first approximation is to either
make sure narrowing is available for this purpose ....

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.

The problem which triggered this discussion is that *something* called font-lock rules from a narrowed buffer directly. But that's not a "purpose required by a major mode".

Regarding "new type of local variable", mmm-mode already tracks
something like that.

I was envisaging something at the C level, where different regions of a
buffer would have different values of variables, without needing the
continual swapping at the Lisp level.  Maybe such a thing isn't needed.

I'd been told that even a C-based implementation is unlikely to make things much faster. Anyway, it would be a perf optimization, and we could get to it later.

It can't work if any external Lisp corrupts its syntax-table text
properties.  This is what syntax-ppss-flush-cache (on
before-change-functions for many modes) would do if there were a non-nil
syntax-propertize-function at the time.  This may be the biggest problem
to getting CC Mode integrated into MMM Mode.

mmm-mode sets its own syntax-propertize-function that calls major mode specific syntax-propertize-function's over their respective chunks/subregions. So, in principle, that should work fine. As long as nobody calls 'widen' unexpectedly.

Is it feasible to support embedded chunks? To support chunks with
incomplete pieces of code (which are e.g. included conditionally by the
surrounding template)?

Well CC Mode already supports preprocessor macros and (for C++) raw
strings, which are syntactically somewhat and very different from the
enclosing code.

I'm not sure it's the same. Like, would CC Mode cope with a region starting with closing brackets, etc. This might not be a frequent situation, but at least it shouldn't blow up.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]