[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Reopen bug 535: Problem with highlit regions on Linux virtual termin
From: |
Alan Mackenzie |
Subject: |
Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal |
Date: |
Tue, 7 Apr 2009 20:55:09 +0000 |
User-agent: |
Mutt/1.5.9i |
Hi, Miles!
On Mon, Apr 06, 2009 at 06:30:28PM +0900, Miles Bader wrote:
> Alan Mackenzie <address@hidden> writes:
> > When I start Emacs 23 -Q, all of my buffers (loaded by desktop) are
> > foghorned - I find Emacs in this state unusable.
> All of your buffers have activated regions when Emacs starts?
> If so, _that_ sounds like a bug (so please try to send a test case);
> needless to say, I think, I do not see this behavior.
In Emacs-22 -Q, enable desktop-save-mode, load some files, create a
region in each file. DO NOT enable transient-mark-mode (or anything
similar). Exit Emacs, creating .emacs.desktop.
Have a look at this .emacs.desktop. It will contain buffer entries like
this:
(desktop-create-buffer 206
"/home/acm/emacs/emacs.cvs/src/callint.c"
"callint.c"
'c-mode
'(abbrev-mode hi-lock-mode)
1
'(8314 t) ; <==============================================
nil
nil
'((buffer-file-coding-system . undecided-unix)))
The cons in the marked line is of the mark and the variable
`mark-active'. This variable doesn't have a coherent definition, but it
causes the region to be highlit. It is "defined" as
Non-nil means the mark and region are currently active in this
buffer.
As I have pointed out before, this is Humpty Dumpty language, liable to
cause bugs. The mark and the region are never "active" and cannot be
active - so to assert is a category error; they don't do anything, they
are never agents. I don't know what it means for a mark to be "active"
and for a region to be "active" - I don't think it's defined anywhere,
and there is certainly no entry in the Concept Index for "active". It
seems that the hacker who created `mark-active' had a different
understanding from the hacker who wrote desktop.el, hence this bug. As
it is, `mark-active' is meaningless unless transient-mark-mode is
enabled. Hence the arbitrariness of the `t' in (8314 t).
My suggestion for a fix:
(i) The variable `mark-active' should be renamed to what it actually
means, together with an alias. Other similarly named variables should
also be renamed as needed to make their names meaningful; all uses of
these variables should be checked.
(ii) The concept "active" should be defined in the Emacs manual.
(ii) desktop-mode.el should be enhanced to record the state of
`transient-mark-mode' in .emacs.desktop.
(iii) On loading the desktop, buffers' regions should not be highlit
unless `transient-mark-mode' is recorded with a non-nil state.
> -Miles
--
Alan Mackenzie (Nuremberg, Germany).
- Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Alan Mackenzie, 2009/04/05
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Miles Bader, 2009/04/05
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal,
Alan Mackenzie <=
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Stephen J. Turnbull, 2009/04/08
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Alan Mackenzie, 2009/04/08
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Eli Zaretskii, 2009/04/08
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Stephen J. Turnbull, 2009/04/08
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Alan Mackenzie, 2009/04/08
- Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Stephen J. Turnbull, 2009/04/08
Re: Reopen bug 535: Problem with highlit regions on Linux virtual terminal, Chong Yidong, 2009/04/05