From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Anders Lindgren Newsgroups: gmane.emacs.bugs Subject: bug#22256: 25.0.50; multiline font-lock rules broken in C mode Date: Fri, 8 Jan 2016 22:34:09 +0100 Message-ID: References: <20151229210611.64245.qmail@mail.muc.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=001a11440176004c590528d95902 X-Trace: ger.gmane.org 1452288930 24933 80.91.229.3 (8 Jan 2016 21:35:30 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 8 Jan 2016 21:35:30 +0000 (UTC) Cc: 22256@debbugs.gnu.org To: Alan Mackenzie Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jan 08 22:35:22 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1aHego-0003sS-OM for geb-bug-gnu-emacs@m.gmane.org; Fri, 08 Jan 2016 22:35:19 +0100 Original-Received: from localhost ([::1]:38181 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aHegm-0002Sj-QQ for geb-bug-gnu-emacs@m.gmane.org; Fri, 08 Jan 2016 16:35:16 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52048) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aHegf-0002Lr-I4 for bug-gnu-emacs@gnu.org; Fri, 08 Jan 2016 16:35:12 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aHegd-0003JS-Bp for bug-gnu-emacs@gnu.org; Fri, 08 Jan 2016 16:35:09 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:55254) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aHegZ-0003IN-Cs; Fri, 08 Jan 2016 16:35:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84) (envelope-from ) id 1aHegZ-00048j-1P; Fri, 08 Jan 2016 16:35:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Anders Lindgren Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org, bug-cc-mode@gnu.org Resent-Date: Fri, 08 Jan 2016 21:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 22256 X-GNU-PR-Package: emacs,cc-mode X-GNU-PR-Keywords: Original-Received: via spool by 22256-submit@debbugs.gnu.org id=B22256.145228885815831 (code B ref 22256); Fri, 08 Jan 2016 21:35:02 +0000 Original-Received: (at 22256) by debbugs.gnu.org; 8 Jan 2016 21:34:18 +0000 Original-Received: from localhost ([127.0.0.1]:43470 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aHefp-00047G-My for submit@debbugs.gnu.org; Fri, 08 Jan 2016 16:34:18 -0500 Original-Received: from mail-vk0-f42.google.com ([209.85.213.42]:34005) by debbugs.gnu.org with esmtp (Exim 4.84) (envelope-from ) id 1aHefn-000470-5L for 22256@debbugs.gnu.org; Fri, 08 Jan 2016 16:34:16 -0500 Original-Received: by mail-vk0-f42.google.com with SMTP id a123so167833140vkh.1 for <22256@debbugs.gnu.org>; Fri, 08 Jan 2016 13:34:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=lEPa3M8EiGZxJGTRhnm2O+r4ihgxhnDUKW+HSvZ+CLQ=; b=HiAjSKiZNiv9F0Rv5iNGxL8g8yKv1ZTTq1TAR0Q/4ViIo6ABy0E8tQN3kg6XD80gNW hHerGnXir+YsEpb9LJ5nI5PiL77h2yegI5ecUyXwodLd8i0McNGG6WSX/JQXVeXcgoOm ggMRgR4iPmEUmM4c0kcgu7/nDPYc1EpR9uE6Wkddk8ElZUBdUhe6uD2lXVXdp9fbEaFA PoKGHqpIaJXu6Yvh53U0C4cZJ4J3DbBre9w2JeWWaMC56JDJu/5/SrTClO2sDauiB92M TwNU0nYQpP7Q8qGrdYyMHgkgZPcgn4hqW0hYWH6i6FhC+h3qR7YhlLd8cqMaLiI7N93c kCZQ== X-Received: by 10.31.10.199 with SMTP id 190mr81366726vkk.51.1452288849757; Fri, 08 Jan 2016 13:34:09 -0800 (PST) Original-Received: by 10.31.214.131 with HTTP; Fri, 8 Jan 2016 13:34:09 -0800 (PST) In-Reply-To: X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:111398 Archived-At: --001a11440176004c590528d95902 Content-Type: text/plain; charset=UTF-8 Hi Alan (and the list), I made a "git bisect" and found the culprit: -------- b31d359d182eb252a11f0468a7dc1ee1eafb28e9 is the first bad commit commit b31d359d182eb252a11f0468a7dc1ee1eafb28e9 Author: Alan Mackenzie Date: Sun Feb 1 21:20:35 2015 +0000 CC Mode: Stop Font Lock forcing fontification from BOL. Fixes debbugs#19669. cc-mode.el (c-font-lock-init): Setq font-lock-extend-region-functions to nil. -------- The reason this breaks multiline keywords is that `font-lock-extend-region-multiline' is normally part of `font-lock-extend-region-functions'. -- Anders On Wed, Dec 30, 2015 at 6:50 AM, Anders Lindgren wrote: > > > Hi! > > I just realized that I missed one vital thing in the example I posted. `font-lock-multiline' must be set. Also, I add code so that it works when `font-lock-flush' isn't defined. > > (defvar my-multiline-test-keywords > '(("^X" > ("^.+quot; > (progn (beginning-of-line) > (point-max)) > nil > (0 'highlight))))) > > (defun my-multiline-test-add () > (interactive) > (font-lock-add-keywords nil my-multiline-test-keywords) > (setq font-lock-multiline t) > (if (fboundp 'font-lock-flush) > (font-lock-flush) > (when font-lock-mode > (with-no-warnings > (font-lock-fontify-buffer))))) > > Recipe: > > emacs -Q > Eval the code above > C-x b test RET > Insert the text starting with an X (from the first mail) > M-x c-mode RET > M-x my-multiline-test-add RET > > Alternatively, use emacs-lisp-mode instead of C mode. > > When tested on Emacs 24.5 and Emacs 25, the only combination that doesn't work is Emacs 25 + C mode. > > There are a number of font-lock packages that utilize that this work, including my https://github.com/Lindydancer/preproc-font-lock package. > > -- Anders > > On Tue, Dec 29, 2015 at 10:06 PM, Alan Mackenzie wrote: > > > > Hello, Anders. > > > > In article you wrote: > > > [-- text/plain, encoding 7bit, charset: UTF-8, 143 lines --] > > > > > Hi! > > > > > In C and related modes, multiline font-lock rules no longer work as > > > expected. It looks like a few lines are highlighted, but not all of them. > > > > > For example: > > > Eval the following: > > > (defvar my-multiline-test-keywords > > > '(("^X" > > > ("^.+quot; > > > > (progn (beginning-of-line) > > > (point-max)) > > > nil > > > (0 'highlight))))) > > > > > (defun my-multiline-test-add () > > > (interactive) > > > (font-lock-add-keywords nil my-multiline-test-keywords) > > > (font-lock-flush)) > > > > > Insert the following in a new buffer: > > > > > X START OF A HIGHLIGHTED BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK > > > > > Do: > > > M-x c-mode RET > > > M-x my-multiline-test-add RET > > > > > I expect the entire buffer to be highlighted. However, only the first eight > > > lines are highlighted. When the block is edited, different parts of the > > > block is highlighted and unhighlighted. > > > > This is caused by the jit-lock mechanism. The first eight lines are 500 > > characters (jit-lock-chunk-size) rounded up to a whole number of lines. > > > > What happens is this: when the first jit-lock-chunk (8 lines) is > > fontified, the `fontified' property (the one the display engine uses) is > > set only on these 8 lines. The `face' property is then set on all the > > characters of the file, as requested by the my-multiline-test-keywords > > form. > > > > Next thing, jit-lock fontifies the next chunk of ~7 lines starting where > > the `fontified' property is nil. The first thing done is to set > > `fontified' on these ~7 lines, then the `face' property on them is > > erased. There is now no matching font lock pattern to apply any new > > faces to these ~7 lines, since the "X" is many lines back. The same > > thing happens with the next 500 byte chunk, and so on till the end of the > > buffer. > > > > If you set `font-lock-support-mode' to nil and restart font locking, the > > problem isn't apparent. (Then set the variable back to 'jit-lock-mode.) > > > > This is a fundamental problem with jit-lock-mode: the assumption that > > text to be fontified has no non-trivial context. This is a difficult > > problem to solve in general. CC Mode uses some ad-hoc tricks to catch, > > for example, long struct declarations. > > > > > As a contrast, when `emacs-lisp-mode' is used, the entire block is > > > highlighted, and editing does not change the highlighting. > > > > I do not see this in Emacs 24.5. For me, even in emacs-lisp-mode, I > > still see just the 8 lines being fontified. If you could give me a > > recipe (starting from emacs-24.5 -Q) to reproduce this, I'd be very > > interested. > > > > > This worked as intended in Emacs 24.5. > > > > > -- Anders Lindgren > > > > > In GNU Emacs 25.0.50.60 (x86_64-apple-darwin14.5.0, NS appkit-1348.17 > > > Version 10.10.5 (Build 14F27)) > > > of 2015-12-28 > > > Repository revision: e9916d8880561cc06b6cb73bafe7257b93ffbf4c > > > Windowing system distributor 'Apple', version 10.3.1348 > > > Configured using: > > > 'configure --without-dbus' > > > > > Configured features: > > > ACL ZLIB TOOLKIT_SCROLL_BARS NS > > > > > Important settings: > > > value of $LC_CTYPE: UTF-8 > > > locale-coding-system: utf-8-unix > > > > > Major mode: C/l > > > > > Minor modes in effect: > > > preproc-font-lock-global-mode: t > > > preproc-font-lock-mode: t > > > tooltip-mode: t > > > global-eldoc-mode: t > > > electric-indent-mode: t > > > mouse-wheel-mode: t > > > tool-bar-mode: t > > > menu-bar-mode: t > > > file-name-shadow-mode: t > > > global-font-lock-mode: t > > > font-lock-mode: t > > > blink-cursor-mode: t > > > auto-composition-mode: t > > > auto-encryption-mode: t > > > auto-compression-mode: t > > > line-number-mode: t > > > transient-mark-mode: t > > > abbrev-mode: t > > > > [ .... ] > > > > -- > > Alan Mackenzie (Nuremberg, Germany). > > --001a11440176004c590528d95902 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Alan (and the list),

I made a "git bisect&q= uot; and found the culprit:

--------
b31d359d182eb252a11f0468a7dc= 1ee1eafb28e9 is the first bad commit
commit b31d359d182eb252a11f0468a7dc= 1ee1eafb28e9
Author: Alan Mackenzie <ac= m@muc.de>
Date: =C2=A0 Sun Feb 1 21:20:35 2015 +0000

=C2= =A0 =C2=A0 CC Mode: Stop Font Lock forcing fontification from BOL.=C2=A0 Fi= xes debbugs#19669.
=C2=A0 =C2=A0 cc-mode.el (c-font-lock-init): Setq fon= t-lock-extend-region-functions to=C2=A0nil.
--------

The reason t= his breaks multiline keywords is that `font-lock-extend-region-multiline= 9; is normally part of `font-lock-extend-region-functions'.

=C2=A0 =C2=A0 -- Anders


On Wed, Dec 30, 2015 at 6:50 AM,= Anders Lindgren <andlind@gmail.com= > wrote:
>
>
> Hi!
>
> I just realized= that I missed one vital thing in the example I posted. `font-lock-multilin= e' must be set. Also, I add code so that it works when `font-lock-flush= ' isn't defined.
>
> (defvar my-multiline-test-keywords=
> =C2=A0'(("^X"
> =C2=A0 =C2=A0 =C2=A0("^.+= quot;
> =C2=A0 =C2=A0 =C2=A0 (pro= gn (beginning-of-line)
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0(point-max))
> =C2=A0 =C2=A0 =C2=A0 nil
> =C2=A0 =C2=A0 = =C2=A0 (0 'highlight)))))
>
> (defun my-multiline-test-add = ()
> =C2=A0 (interactive)
> =C2=A0 (font-lock-add-keywords nil = my-multiline-test-keywords)
> =C2=A0 (setq font-lock-multiline t)
= > =C2=A0 (if (fboundp 'font-lock-flush)
> =C2=A0 =C2=A0 =C2=A0= (font-lock-flush)
> =C2=A0 =C2=A0 (when font-lock-mode
> =C2= =A0 =C2=A0 =C2=A0 (with-no-warnings
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 (fo= nt-lock-fontify-buffer)))))
>
> Recipe:
>
> emacs -= Q
> Eval the code above
> C-x b test RET
> Insert the tex= t starting with an X (from the first mail)
> M-x c-mode RET
> M= -x my-multiline-test-add RET
>
> Alternatively, use emacs-lisp-= mode instead of C mode.
>
> When tested on Emacs 24.5 and Emacs= 25, the only combination that doesn't work is Emacs 25 + C mode.
&g= t;
> There are a number of font-lock packages that utilize that this = work, including my https://github.com/Lindydancer/preproc-font-lock package.
><= br>> =C2=A0 =C2=A0 -- Anders
>
> On Tue, Dec 29, 2015 at 10:= 06 PM, Alan Mackenzie <acm@muc.de> = wrote:
> >
> > Hello, Anders.
> >
> > I= n article <mailman.1133.1451298006.843.bug-gnu-emacs@gnu.org> you wrote= :
> > > [-- text/plain, encoding 7bit, charset: UTF-8, 143 line= s --]
> >
> > > Hi!
> >
> > > In = C and related modes, multiline font-lock rules no longer work as
> &g= t; > expected. It looks like a few lines are highlighted, but not all of= them.
> >
> > > For example:
> > > Eval t= he following:
> > > (defvar my-multiline-test-keywords
> = > > =C2=A0'(("^X"
> > > =C2=A0 =C2=A0 =C2= =A0("^.+quot;
>
> > > =C2=A0 =C2=A0 =C2=A0 (progn (b= eginning-of-line)
> > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0(point-max))
> > > =C2=A0 =C2=A0 =C2=A0 nil
> &= gt; > =C2=A0 =C2=A0 =C2=A0 (0 'highlight)))))
> >
> &= gt; > (defun my-multiline-test-add ()
> > > =C2=A0 (interact= ive)
> > > =C2=A0 (font-lock-add-keywords nil my-multiline-test= -keywords)
> > > =C2=A0 (font-lock-flush))
> >
>= > > Insert the following in a new buffer:
> >
> > = > X START OF A HIGHLIGHTED BLOCK
> > > LONG LINES IN THE BLO= CK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> > > LONG L= INES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> &= gt; > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE = BLOCK
> > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LON= G LINES IN THE BLOCK
> > > LONG LINES IN THE BLOCK LONG LINES I= N THE BLOCK LONG LINES IN THE BLOCK
> > > LONG LINES IN THE BLO= CK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> > > LONG L= INES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> &= gt; > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE = BLOCK
> > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LON= G LINES IN THE BLOCK
> > > LONG LINES IN THE BLOCK LONG LINES I= N THE BLOCK LONG LINES IN THE BLOCK
> > > LONG LINES IN THE BLO= CK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> > > LONG L= INES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> &= gt; > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE = BLOCK
> > > LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK LON= G LINES IN THE BLOCK
> > > LONG LINES IN THE BLOCK LONG LINES I= N THE BLOCK LONG LINES IN THE BLOCK
> > > LONG LINES IN THE BLO= CK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> > > LONG L= INES IN THE BLOCK LONG LINES IN THE BLOCK LONG LINES IN THE BLOCK
> &= gt;
> > > Do:
> > > M-x c-mode RET
> > >= ; M-x my-multiline-test-add RET
> >
> > > I expect the= entire buffer to be highlighted. However, only the first eight
> >= ; > lines are highlighted. When the block is edited, different parts of = the
> > > block is highlighted and unhighlighted.
> ><= br>> > This is caused by the jit-lock mechanism.=C2=A0 The first eigh= t lines are 500
> > characters (jit-lock-chunk-size) rounded up to= a whole number of lines.
> >
> > What happens is this: w= hen the first jit-lock-chunk (8 lines) is
> > fontified, the `font= ified' property (the one the display engine uses) is
> > set o= nly on these 8 lines.=C2=A0 The `face' property is then set on all the<= br>> > characters of the file, as requested by the my-multiline-test-= keywords
> > form.
> >
> > Next thing, jit-lock = fontifies the next chunk of ~7 lines starting where
> > the `fonti= fied' property is nil.=C2=A0 The first thing done is to set
> >= ; `fontified' on these ~7 lines, then the `face' property on them i= s
> > erased.=C2=A0 There is now no matching font lock pattern to = apply any new
> > faces to these ~7 lines, since the "X"= is many lines back.=C2=A0 The same
> > thing happens with the nex= t 500 byte chunk, and so on till the end of the
> > buffer.
>= ; >
> > If you set `font-lock-support-mode' to nil and rest= art font locking, the
> > problem isn't apparent. =C2=A0(Then = set the variable back to 'jit-lock-mode.)
> >
> > Thi= s is a fundamental problem with jit-lock-mode: the assumption that
> = > text to be fontified has no non-trivial context.=C2=A0 This is a diffi= cult
> > problem to solve in general.=C2=A0 CC Mode uses some ad-h= oc tricks to catch,
> > for example, long struct declarations.
= > >
> > > As a contrast, when `emacs-lisp-mode' is us= ed, the entire block is
> > > highlighted, and editing does not= change the highlighting.
> >
> > I do not see this in Em= acs 24.5.=C2=A0 For me, even in emacs-lisp-mode, I
> > still see j= ust the 8 lines being fontified.=C2=A0 If you could give me a
> > = recipe (starting from emacs-24.5 -Q) to reproduce this, I'd be very
= > > interested.
> >
> > > This worked as intende= d in Emacs 24.5.
> >
> > > =C2=A0 =C2=A0 -- Anders Lin= dgren
> >
> > > In GNU Emacs 25.0.50.60 (x86_64-apple-= darwin14.5.0, NS appkit-1348.17
> > > Version 10.10.5 (Build 14= F27))
> > > =C2=A0of 2015-12-28
> > > Repository re= vision: e9916d8880561cc06b6cb73bafe7257b93ffbf4c
> > > Windowin= g system distributor 'Apple', version 10.3.1348
> > > C= onfigured using:
> > > =C2=A0'configure --without-dbus'=
> >
> > > Configured features:
> > > ACL = ZLIB TOOLKIT_SCROLL_BARS NS
> >
> > > Important settin= gs:
> > > =C2=A0 value of $LC_CTYPE: UTF-8
> > > = =C2=A0 locale-coding-system: utf-8-unix
> >
> > > Majo= r mode: C/l
> >
> > > Minor modes in effect:
> &= gt; > =C2=A0 preproc-font-lock-global-mode: t
> > > =C2=A0 p= reproc-font-lock-mode: t
> > > =C2=A0 tooltip-mode: t
> &= gt; > =C2=A0 global-eldoc-mode: t
> > > =C2=A0 electric-inde= nt-mode: t
> > > =C2=A0 mouse-wheel-mode: t
> > > = =C2=A0 tool-bar-mode: t
> > > =C2=A0 menu-bar-mode: t
> &= gt; > =C2=A0 file-name-shadow-mode: t
> > > =C2=A0 global-fo= nt-lock-mode: t
> > > =C2=A0 font-lock-mode: t
> > >= ; =C2=A0 blink-cursor-mode: t
> > > =C2=A0 auto-composition-mod= e: t
> > > =C2=A0 auto-encryption-mode: t
> > > =C2= =A0 auto-compression-mode: t
> > > =C2=A0 line-number-mode: t> > > =C2=A0 transient-mark-mode: t
> > > =C2=A0 abb= rev-mode: t
> >
> > [ .... ]
> >
> > --=
> > Alan Mackenzie (Nuremberg, Germany).
> >
--001a11440176004c590528d95902--