* bug#1355: suggestion on the modeline
@ 2008-11-16 1:09 xah lee
2008-11-17 2:57 ` Richard M. Stallman
2020-09-19 21:59 ` Lars Ingebrigtsen
0 siblings, 2 replies; 10+ messages in thread
From: xah lee @ 2008-11-16 1:09 UTC (permalink / raw
To: bug-gnu-emacs
Dear emacs developers,
Recently there's a question in gnu.help.emacs about how to disable
the buffer switching behavior of mouse clicking on the buffer name in
mode line. Out of this discussion i wrote a little essay on
suggestions on the emacs mode line.
The essay is here:
http://xahlee.org/emacs/modernization_mode_line.html
I think this would make emacs more easier for the average programer
or writer but does not subtract its power. Here's what i think, for
what its worth.
Thanks.
---------------------------------------------
Emacs's Mode Line Modernization Suggestions
Xah Lee, 2008-12
This article gives some suggestions on improving emacs's “mode
line”, so that it is more intuitive and useful.
I think the mode line is one of emacs's problem in usability.
emacs mode line
above: Emacs's mode line.
Here's what i think are better default:
• The start of the mode line, displaying the coding system used such
as “-u”, “-uuu”, and displaying the modification status like
“:**”, “%%”, “%*” are quite cryptic. Having used emacs for
10 years, these are still not burned into my brain. And it's not easy
to look them up what they are unless you are emacs diehard. (e.g.
you'll have to know it's technically called “mode line”, then
you'll have to know about emacs-index-search, and in general familiar
with info and emacs)
It'd better to instead say “Read Only” instead of “%*”, and
show “Modified” instead of the “**”. (don't show anything when
it's “--”)
• The coding system shown in mode line should be removed. Because,
for vast majority of programers, he rarely deals with different file
coding systems or coding system change, perhaps just few times a
year. It is not something programers encounter on a daily basis.
Also, 3 letter-code is cryptic for conveying file coding system,
especially today because there are lots of them. The current coding
system should be shown perhaps in the menu somewhere, and allow users
to change thru menu. For programers who deals with different file
systems or coding systems hourly and need it be displayed on the mode
line, perhaps emacs can introduce a customization feature so that the
full coding system is displayed in modeline.
• The cursor location percentage should by default not shown if
emacs is running in GUI with scroll bar. (this is sometimes shown as
“Top” or “Bot”) GUI scroll bar gives intuitive indication of
where cursor are in relation to the whole buffer, and also gives a
indication of the screen display size in relation to the buffer size,
and conveys these info faster.
• When emacs is running in a terminal, the special indicator
“Top” and “Bot” should be shown as percentage as usual,
because for someone uninitiated, consistent changing of percentage as
he moves the cursor is more intuitive. The code “Top” and
“Bot” could mean many things
• Minor mode should not be displayed in mode line. It's confusing.
For one reason, it by default selectively display only some of the
minor modes currently on, and the selective process is not something
people who intuitively understands. For the other reason, Emacs's
technical concept of Minor mode is somewhat confusing. Most minor
modes in practice can be thought of as Preferences settings (Mac-
speak) or Options (Windows-speak and Linux Desktops).
• Line number mode should be on by default. So that, the line number
shows in the mode line. How to show line number is a frequently asked
question.
• Clicking on the file name should not switch buffer. It could do
contextual menu listing user buffers instead. (user buffer here are
those not starting with “*”)
• Clicking on the major mode name should pop up a contextual menu to
let user switch to popular major modes. (e.g. C, C++, java, perl,
php, bash, javascript, html/xml, python, text, LaTeX, elisp.)
Summary
I think the mode line should be like this:
‹buffer name› ‹major mode name› ‹line num›
‹status›-------------------
where the status is Modified or Read Only.
Here's a example of such actual display:
elisp_basics.html html-mode L19 Modified-------------------
Also, when editing as root, it'd be nice to indicate it in mode line.
Possibly making the mode line's background red, or add a word
“(root)” on the right. Some indication of being root is a
frequently requested feature.
If running in a GUI, clicking on the buffer name should show menu
list of user buffers, those not starting with a “*”.
Clicking on the major mode name should show a menu of commonly used
major modes, allowing user a easy way to switch. (currently, emacs
has no intuitive way for user to switch a mode or know what modes are
available. This is also a FAQ item.)
Clicking on linePos/charPos show a menu that allow user to turn on/
off line number mode or char number mode.
Clicking on the Read Only or “Modified”, should show a menu
allowing user to toggle Read Only.
Clicking the rest of the mode line displaying “--------”, can show
all the useful info about the current buffer. For example: modified/
read status, mode settings, minor modes, encoding used. This can be
done as a new split window much like describe-function would. In the
result pane, it can show status of other buffer local vars that are
related to text editing (such as case sensitive search, how lines are
wrapped, length for truncation, margin ... ). With links or active
text that lets user toggle or set new vals easily (similar to the UI
of the customize function).
All these clicking should be Right Click, which is more standard
behavior of clicking on things for contextual menu. (e.g. in Windows,
Mac, Linux, system wide, and in Firefox and other browsers.)
• The term “mode line” could be changed to “status bar” in
the manuals. “Status bar” is more understandable to modern users.
Xah
∑ http://xahlee.org/
☄
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-16 1:09 bug#1355: suggestion on the modeline xah lee
@ 2008-11-17 2:57 ` Richard M. Stallman
2008-11-17 23:26 ` Alan Mackenzie
2020-09-19 21:59 ` Lars Ingebrigtsen
1 sibling, 1 reply; 10+ messages in thread
From: Richard M. Stallman @ 2008-11-17 2:57 UTC (permalink / raw
To: xah lee, 1355; +Cc: bug-gnu-emacs, bug-submit-list
It'd better to instead say Read Only instead of %* , and
show Modified instead of the ** . (don't show anything when
it's -- )
If the mode line were infinitely long, I would agree with you.
But there's no room for that.
The coding system shown in mode line should be removed. Because,
for vast majority of programers, he rarely deals with different file
coding systems or coding system change, perhaps just few times a
year.
You're probably right. I would guess that only a few experts
know what these mean, and it's only useful once in a while,
not often enough to be worth mentioning in the mode line.
However, having the unibyte/multibyte indicator in the mode line
is useful.
The cursor location percentage should by default not shown if
emacs is running in GUI with scroll bar.
Maybe so.
When emacs is running in a terminal, the special indicator
Top and Bot should be shown as percentage as usual,
"Top" is equivalent to 00%, and showing "00%" instead would
be just as good. However, "Bot" gives you other information:
that the bottom of the buffer is on the screen.
Minor mode should not be displayed in mode line. It's confusing.
For one reason, it by default selectively display only some of the
minor modes currently on, and the selective process is not something
people who intuitively understands. For the other reason, Emacs's
technical concept of Minor mode is somewhat confusing. Most minor
modes in practice can be thought of as Preferences settings (Mac-
speak) or Options (Windows-speak and Linux Desktops).
The aim is to show those that are useful to see.
Line number mode should be on by default. So that, the line number
shows in the mode line.
Isn't it enabled by default, nowadays?
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-17 2:57 ` Richard M. Stallman
@ 2008-11-17 23:26 ` Alan Mackenzie
2008-11-18 3:47 ` Stefan Monnier
2008-11-18 18:17 ` James Cloos
0 siblings, 2 replies; 10+ messages in thread
From: Alan Mackenzie @ 2008-11-17 23:26 UTC (permalink / raw
To: rms, 1355; +Cc: xah lee, bug-gnu-emacs, bug-submit-list
Hi, R and X!
On Sun, Nov 16, 2008 at 09:57:21PM -0500, Richard M. Stallman wrote:
> The cursor location percentage should by default not shown if
> emacs is running in GUI with scroll bar.
> Maybe so.
> When emacs is running in a terminal, the special indicator
> Top and Bot should be shown as percentage as usual,
> "Top" is equivalent to 00%, and showing "00%" instead would
> be just as good. However, "Bot" gives you other information:
> that the bottom of the buffer is on the screen.
Incidentally, I think the wrong percentage is displayed. Assuming that
the window shows part of the buffer, there's stuff above, stuff below,
like this:
a ^
a |
a |
a |
W | ^
W | |
W | |
W buffer window
W | |
W | |
W | v
b |
b |
b |
b v
, the percentage currently displayed is a / (a + W + b). So, although in
the picture, the window is showing the middle of the buffer, the
percentage displayed is 22%, rather than 50%. This is particularly
jarring when scrolling through, perhaps, an info page. You see 47%, then
two lines later, Bot.
A better calculation would be a / (a + b), the degree of "travel" of the
windown through the buffer. This approaches 100% as the window reaches
the bottom of the buffer.
I've been using this for many years now. Here's how:
[ Emacs 22.3 ]
*** xdisp.orig.c 2008-08-26 15:45:44.000000000 +0000
--- xdisp.c 2008-09-12 13:59:17.000000000 +0000
***************
*** 18033,18041 ****
case 'p':
{
int pos = marker_position (w->start);
! int total = BUF_ZV (b) - BUF_BEGV (b);
! if (XFASTINT (w->window_end_pos) <= BUF_Z (b) - BUF_ZV (b))
{
if (pos <= BUF_BEGV (b))
return "All";
--- 18033,18043 ----
case 'p':
{
int pos = marker_position (w->start);
! int bottpos = BUF_Z (b) - XFASTINT (w->window_end_pos); /* ACM */
! int totnotdisp = BUF_ZV (b) - BUF_BEGV (b) - (bottpos - pos); /* ACM */
! int total ;
! if ((bottpos >= BUF_ZV (b)) || (totnotdisp <= 0)) /* ACM */
{
if (pos <= BUF_BEGV (b))
return "All";
***************
*** 18046,18056 ****
return "Top";
else
{
! if (total > 1000000)
/* Do it differently for a large value, to avoid overflow. */
! total = ((pos - BUF_BEGV (b)) + (total / 100) - 1) / (total / 100);
else
! total = ((pos - BUF_BEGV (b)) * 100 + total - 1) / total;
/* We can't normally display a 3-digit number,
so get us a 2-digit number that is close. */
if (total == 100)
--- 18048,18060 ----
return "Top";
else
{
! if (totnotdisp > 1000000)
/* Do it differently for a large value, to avoid overflow. */
! total = ((pos - BUF_BEGV (b)) + (totnotdisp / 100) - 1)
! / (totnotdisp / 100); /* ACM */
else
! total = ((pos - BUF_BEGV (b)) * 100 + totnotdisp - 1)
! / totnotdisp ; /* ACM */
/* We can't normally display a 3-digit number,
so get us a 2-digit number that is close. */
if (total == 100)
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-17 23:26 ` Alan Mackenzie
@ 2008-11-18 3:47 ` Stefan Monnier
2008-11-18 9:42 ` Juanma Barranquero
2008-11-18 18:17 ` James Cloos
1 sibling, 1 reply; 10+ messages in thread
From: Stefan Monnier @ 2008-11-18 3:47 UTC (permalink / raw
To: Alan Mackenzie; +Cc: xah lee, bug-gnu-emacs, bug-submit-list, 1355, rms
> , the percentage currently displayed is a / (a + W + b). So, although in
> the picture, the window is showing the middle of the buffer, the
> percentage displayed is 22%, rather than 50%. This is particularly
> jarring when scrolling through, perhaps, an info page. You see 47%, then
> two lines later, Bot.
> A better calculation would be a / (a + b), the degree of "travel" of the
> windown through the buffer. This approaches 100% as the window reaches
> the bottom of the buffer.
I'd tend to agree, tho I don't have any strong feeling about it.
Stefan
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-18 3:47 ` Stefan Monnier
@ 2008-11-18 9:42 ` Juanma Barranquero
2008-11-18 10:37 ` Alan Mackenzie
0 siblings, 1 reply; 10+ messages in thread
From: Juanma Barranquero @ 2008-11-18 9:42 UTC (permalink / raw
To: Alan Mackenzie; +Cc: 1355
On Tue, Nov 18, 2008 at 04:47, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>> A better calculation would be a / (a + b), the degree of "travel" of the
>> windown through the buffer. This approaches 100% as the window reaches
>> the bottom of the buffer.
>
> I'd tend to agree, tho I don't have any strong feeling about it.
I like the effect much more than the original, but it contradicts the
"above" bit of the documentation:
%p -- print percent of buffer above top of window, or Top, Bot or All.
Also, the same change should be done to %P, shouldn't it?
Juanma
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-18 10:37 ` Alan Mackenzie
@ 2008-11-18 10:37 ` Juanma Barranquero
2008-11-18 16:30 ` Stefan Monnier
1 sibling, 0 replies; 10+ messages in thread
From: Juanma Barranquero @ 2008-11-18 10:37 UTC (permalink / raw
To: Alan Mackenzie; +Cc: 1355
On Tue, Nov 18, 2008 at 11:37, Alan Mackenzie <acm@muc.de> wrote:
> How about:
>
> %p -- print Top, Bot, All, or how far through the buffer the window
> is (in percent). This is 100 * A / (A + B), where A is the number
> bytes above the window, B the number below it.
Too much information; the second sentence is not really needed IMO.
But anyway, my point was exactly what you're addressing here:
> So, for backwards compatibility, %p and %P should
> remain unchanged, and 100 * A / (A + B) should be attached to a new
> %-construct, say %v. (Why %v? Why not? It's reminiscent of C-v, and
> %M-v.)
I'd like to see that added. Let's hear what Stefan and Chong have to say.
Juanma
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-18 9:42 ` Juanma Barranquero
@ 2008-11-18 10:37 ` Alan Mackenzie
2008-11-18 10:37 ` Juanma Barranquero
2008-11-18 16:30 ` Stefan Monnier
0 siblings, 2 replies; 10+ messages in thread
From: Alan Mackenzie @ 2008-11-18 10:37 UTC (permalink / raw
To: Juanma Barranquero; +Cc: 1355
Hi, Juanma!
On Tue, Nov 18, 2008 at 10:42:09AM +0100, Juanma Barranquero wrote:
> On Tue, Nov 18, 2008 at 04:47, Stefan Monnier <monnier@iro.umontreal.ca> wrote:
> >> A better calculation would be a / (a + b), the degree of "travel" of the
> >> windown through the buffer. This approaches 100% as the window reaches
> >> the bottom of the buffer.
> > I'd tend to agree, tho I don't have any strong feeling about it.
> I like the effect much more than the original, but it contradicts the
> "above" bit of the documentation:
> %p -- print percent of buffer above top of window, or Top, Bot or All.
How about:
%p -- print Top, Bot, All, or how far through the buffer the window
is (in percent). This is 100 * A / (A + B), where A is the number
bytes above the window, B the number below it.
> Also, the same change should be done to %P, shouldn't it?
Hmmm. :-) If so, than %p + %P = 100% (modulo rounding errors), and %P
is kind of redundant. So, for backwards compatibility, %p and %P should
remain unchanged, and 100 * A / (A + B) should be attached to a new
%-construct, say %v. (Why %v? Why not? It's reminiscent of C-v, and
%M-v.)
> Juanma
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-18 10:37 ` Alan Mackenzie
2008-11-18 10:37 ` Juanma Barranquero
@ 2008-11-18 16:30 ` Stefan Monnier
1 sibling, 0 replies; 10+ messages in thread
From: Stefan Monnier @ 2008-11-18 16:30 UTC (permalink / raw
To: Alan Mackenzie; +Cc: Juanma Barranquero, 1355
>> %p -- print percent of buffer above top of window, or Top, Bot or All.
> How about:
> %p -- print Top, Bot, All, or how far through the buffer the window
> is (in percent). This is 100 * A / (A + B), where A is the number
> bytes above the window, B the number below it.
>> Also, the same change should be done to %P, shouldn't it?
> Hmmm. :-) If so, than %p + %P = 100% (modulo rounding errors), and %P
> is kind of redundant. So, for backwards compatibility, %p and %P should
> remain unchanged, and 100 * A / (A + B) should be attached to a new
> %-construct, say %v. (Why %v? Why not? It's reminiscent of C-v, and
> %M-v.)
You'd have to ask people who use %P: how do they use it? Why (or what for)?
Maybe it's OK to have %P represent B/(A+B), or maybe a better solution
would be to offer access to A/(A+B) as well as (TOTAL-A-B)/TOTAL
(i.e. percentage of buffer shown).
I don't think it's urgent, so we should take the time to try and figure
out what %P users want.
Stefan
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-17 23:26 ` Alan Mackenzie
2008-11-18 3:47 ` Stefan Monnier
@ 2008-11-18 18:17 ` James Cloos
1 sibling, 0 replies; 10+ messages in thread
From: James Cloos @ 2008-11-18 18:17 UTC (permalink / raw
To: 1355
I just noticed this one.
I have to say that: "Top" is indeed better than "0%" or "00%"; "Bot",
as RMS wrote, gives more info and should remain as is; and I use that
info even in a GUI with a scroll bar -- it is often more informative
than the bar can be.
I hope the default at least remains as is.
-JimC
--
James Cloos <cloos@jhcloos.com> OpenPGP: 1024D/ED7DAEA6
^ permalink raw reply [flat|nested] 10+ messages in thread
* bug#1355: suggestion on the modeline
2008-11-16 1:09 bug#1355: suggestion on the modeline xah lee
2008-11-17 2:57 ` Richard M. Stallman
@ 2020-09-19 21:59 ` Lars Ingebrigtsen
1 sibling, 0 replies; 10+ messages in thread
From: Lars Ingebrigtsen @ 2020-09-19 21:59 UTC (permalink / raw
To: xah lee; +Cc: 1355
xah lee <xah@xahlee.org> writes:
> Recently there's a question in gnu.help.emacs about how to disable the
> buffer switching behavior of mouse clicking on the buffer name in mode
> line. Out of this discussion i wrote a little essay on suggestions on
> the emacs mode line.
Some discussion followed, but there didn't seem to be much enthusiasm
for the new defaults proposed by the patch. So I'm closing this bug
report.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2020-09-19 21:59 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-16 1:09 bug#1355: suggestion on the modeline xah lee
2008-11-17 2:57 ` Richard M. Stallman
2008-11-17 23:26 ` Alan Mackenzie
2008-11-18 3:47 ` Stefan Monnier
2008-11-18 9:42 ` Juanma Barranquero
2008-11-18 10:37 ` Alan Mackenzie
2008-11-18 10:37 ` Juanma Barranquero
2008-11-18 16:30 ` Stefan Monnier
2008-11-18 18:17 ` James Cloos
2020-09-19 21:59 ` Lars Ingebrigtsen
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.