From: joe-gg@zircon.seattle.wa.us (Joe Kelsey)
Subject: Re: eLisp fontlock with mmm-mode
Date: 5 Sep 2003 08:02:02 -0700 [thread overview]
Message-ID: <151bebc0.0309050702.b3a9555@posting.google.com> (raw)
In-Reply-To: 3F561EAE.3030506@yahoo.com
Kevin Rodgers <ihs_4664@yahoo.com> wrote in message news:<3F561EAE.3030506@yahoo.com>...
> Joe Kelsey wrote:
>
> > Aside from that, support for mixed-mode buffers suffers in Emacs due
> > to limitations on the ability of using syntax tables for multiple
> > purposes in a buffer. The design of syntax tables implies that a
> > single syntax table controls an entire buffer in a single style.
> > mmm-mode attempts to get around this by "dynamically" switching syntax
> > tables as the point moves through various areas of a buffer. One very
> > noticable side effect involves the fact that when you set up the
> > syntax table for a particular sub-buffer, it changes the entire buffer
> > view. Until someone comes up with a way to regionalize syntax tables,
> > you just have to live with the "bleeding" of syntax table-based
> > font-locks between buffer regions.
>
>
> I thought that had already been done; from the Special Properties node
> of the Emacs Lisp manual:
Text properties apply to portions of the buffer and constitute the
basis of font-lock mode. The interaction between the global
syntax-table and text properties allow font-lock to operate in a
specific buffer.
mmm-mode works by segregating the buffer into overlay sections. As
the cursor moves outof one overlay and into another, it switches the
global syntax-table.
The syntax-table text property works differently from the global
syntax table in that it applies to a specific section of the buffer.
However, applying a syntax-table property to a specific section of
text also involves a lot of extra overhead and thus it doesn't come
cheaply.
I have experimented in mmm-mode with using the syntax-table text
property to make inactive overlays have specific properties to try to
make indenting work better in multi-mode buffers. Basically, nothing
works perfectly. The global syntax-table doesn't work completely
satisfactorily in multi-mode buffers. Syntax-table text properties
involve enormous overhead and also do not work well enough.
The real problem involves resolving the dichotomy between linear
editing and the discontinuous nature of multi-mode files. I don't
really have a perfect solution right now.
/Joe
next prev parent reply other threads:[~2003-09-05 15:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.34.1062553939.18171.help-gnu-emacs@gnu.org>
2003-09-03 14:59 ` eLisp fontlock with mmm-mode Joe Kelsey
2003-09-03 17:02 ` Kevin Rodgers
2003-09-05 15:02 ` Joe Kelsey [this message]
2003-09-11 22:28 ` Alan Mackenzie
2003-09-12 15:46 ` Joe Kelsey
2003-09-12 21:55 ` Alan Mackenzie
2003-09-12 22:39 ` Stefan Monnier
2003-09-12 23:38 ` Bug in delete-char ???? (Emacs 21.2.2) Greg Hill
[not found] ` <mailman.228.1063410048.21628.bug-gnu-emacs@gnu.org>
2003-09-13 2:19 ` Johan Bockgård
2003-09-03 0:41 eLisp fontlock with mmm-mode Sam Vilain
-- strict thread matches above, loose matches on Subject: below --
2003-08-12 11:18 Sam Vilain
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=151bebc0.0309050702.b3a9555@posting.google.com \
--to=joe-gg@zircon.seattle.wa.us \
/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.