GNU bug report logs - #20674
linum-mode overwrites existing margin width

Previous Next

Package: emacs;

Reported by: "Paul W. Rankin" <hello <at> paulwrankin.com>

Date: Wed, 27 May 2015 15:37:02 UTC

Severity: minor

Tags: fixed

Fixed in version 26.1

Done: Noam Postavsky <npostavs <at> users.sourceforge.net>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 20674 in the body.
You can then email your comments to 20674 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#20674; Package emacs. (Wed, 27 May 2015 15:37:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Paul W. Rankin" <hello <at> paulwrankin.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 27 May 2015 15:37:03 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: "Paul W. Rankin" <hello <at> paulwrankin.com>
To: bug-gnu-emacs <at> gnu.org
Subject: linum-mode overwrites existing margin width
Date: Wed, 27 May 2015 17:56:03 +1000
I set the window left margin to 25 columns, then activated linum-mode,
which sets the left margin to 3 columns (to accommodate the number of
figures in the total line numbers).

Expected behaviour:

linum-mode should only expand left margin as needed, not
overwrite/shrink it.

Example steps to reproduce:

$ emacs -Q

;; in *scratch* buffer

M-: (set-window-margins (selected-window) N) ;; where N is any number > 1

;; window margins are set to N columns.

M-x linum-mode

;; left window margin is reduced to 1 column

Suggestions to remedy:

Either linum-mode.el ~ L167 should be changed to accommodate existing
margin width, setting width to the maximum of existing or calculated
value, or the function should test whether the calculated width exceeds
the current margin width, and only update the window if necessary.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20674; Package emacs. (Wed, 27 May 2015 15:51:02 GMT) Full text and rfc822 format available.

Message #8 received at 20674 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: "Paul W. Rankin" <hello <at> paulwrankin.com>
Cc: 20674 <at> debbugs.gnu.org
Subject: Re: bug#20674: linum-mode overwrites existing margin width
Date: Wed, 27 May 2015 18:50:02 +0300
> From: "Paul W. Rankin" <hello <at> paulwrankin.com>
> Date: Wed, 27 May 2015 17:56:03 +1000
> 
> I set the window left margin to 25 columns, then activated linum-mode,
> which sets the left margin to 3 columns (to accommodate the number of
> figures in the total line numbers).
> 
> Expected behaviour:
> 
> linum-mode should only expand left margin as needed, not
> overwrite/shrink it.

I think linum-mode is incompatible with any other means of putting
anything inside the display margins, because it actually writes
there.  The width of the margin is just the tip of the iceberg,
because at best you will have margins whose contents are overwritten
by linum-mode.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20674; Package emacs. (Thu, 28 May 2015 04:33:02 GMT) Full text and rfc822 format available.

Message #11 received at 20674 <at> debbugs.gnu.org (full text, mbox):

From: "Paul W. Rankin" <hello <at> paulwrankin.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 20674 <at> debbugs.gnu.org
Subject: Re: bug#20674: linum-mode overwrites existing margin width
Date: Thu, 28 May 2015 14:32:56 +1000
On Thu, 28 May 2015, at 01:50 AM, Eli Zaretskii wrote:
> I think linum-mode is incompatible with any other means of putting
> anything inside the display margins, because it actually writes
> there.  The width of the margin is just the tip of the iceberg,
> because at best you will have margins whose contents are overwritten
> by linum-mode.

The incompatibility was found in a minor mode I maintain called
olivetti.el, which only sets the window margin widths in order to centre
the text body, it does not display anything within the margins.

In theory, linum-mode.el should be compatible with because it should
only require increasing the margin width on an as-needed basis.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20674; Package emacs. (Thu, 28 May 2015 14:37:02 GMT) Full text and rfc822 format available.

Message #14 received at 20674 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: "Paul W. Rankin" <hello <at> paulwrankin.com>
Cc: 20674 <at> debbugs.gnu.org
Subject: Re: bug#20674: linum-mode overwrites existing margin width
Date: Thu, 28 May 2015 17:36:35 +0300
> From: "Paul W. Rankin" <hello <at> paulwrankin.com>
> Cc: 20674 <at> debbugs.gnu.org
> Date: Thu, 28 May 2015 14:32:56 +1000
> 
> > I think linum-mode is incompatible with any other means of putting
> > anything inside the display margins, because it actually writes
> > there.  The width of the margin is just the tip of the iceberg,
> > because at best you will have margins whose contents are overwritten
> > by linum-mode.
> 
> The incompatibility was found in a minor mode I maintain called
> olivetti.el, which only sets the window margin widths in order to centre
> the text body, it does not display anything within the margins.
> 
> In theory, linum-mode.el should be compatible with because it should
> only require increasing the margin width on an as-needed basis.

Linum-mode is evil: it wants total control of the left margin.  Not
only does it enlarge the margin width as it sees fit, it also makes it
smaller and even resets it back to zero upon certain events, such as
changing the buffer's major mode.

So making linum-mode compatible with other modes that change the
margin width would require to record, in every buffer (or maybe even
every window) the value of the margin width before linum-mode was
turned on, and then take that value in consideration when linum-mode
wants to make any change to the margin width.  And then we will no
doubt hear from someone who has linum-mode turned on by default, in
which case there's no opportunity to record the initial margin width,
and we will have to make set-window-margins be aware of linum-mode in
some way, so it could do what you want.

Is this hassle justified for covering only use cases like yours, where
the "other" mode puts nothing in the margins?  We are clearly talking
about making a subset of margin users somewhat less incompatible with
linum-mode, and we are building that on very shaky foundations.

And even if we decide these complications are worthwhile, there will
be problems when linum-mode wants a margin that is wider than what
your mode sets, because linum-mode only changes the left margin, so
your mode will then be unable to keep the text centered and of the
required width, right?  So your mode will be semi-broken by linum-mode
anyway.

Bottom line: this makes very little sense to me.

May I suggest that you switch olivetti.el to using other display
features, such as line-prefix and wrap-prefix, instead?  (You can keep
the right margin, if you want, since linum-mode does not try to usurp
that one.)  Or just declare that your mode is incompatible with
linum-mode.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20674; Package emacs. (Thu, 28 May 2015 18:31:03 GMT) Full text and rfc822 format available.

Message #17 received at 20674 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: "Paul W. Rankin" <hello <at> paulwrankin.com>
Cc: 20674 <at> debbugs.gnu.org
Subject: Re: bug#20674: linum-mode overwrites existing margin width
Date: Thu, 28 May 2015 14:30:19 -0400
> Either linum-mode.el ~ L167 should be changed to accommodate existing
> margin width, setting width to the maximum of existing or calculated
> value, or the function should test whether the calculated width exceeds
> the current margin width, and only update the window if necessary.

You might like to try the development version of nlinum.el where I've
implemented something like that.

http://git.savannah.gnu.org/cgit/emacs/elpa.git/plain/packages/nlinum/nlinum.el


        Stefan




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20674; Package emacs. (Tue, 17 Nov 2015 22:36:01 GMT) Full text and rfc822 format available.

Message #20 received at 20674 <at> debbugs.gnu.org (full text, mbox):

From: joaotavora <at> gmail.com (João Távora)
To: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
Cc: Eli Zaretskii <eliz <at> gnu.org>, 20674 <at> debbugs.gnu.org,
 "Paul W. Rankin" <hello <at> paulwrankin.com>
Subject: Re: PATCH: make linum.el play nicely with other margin-setting
 extensions
Date: Tue, 17 Nov 2015 22:35:39 +0000
Stefan Monnier <monnier <at> IRO.UMontreal.CA> writes:

>> YES In that case, unless someone objects (paging Stefan here), I'll be
>> pushing my original  linum.el solution soon.
>
> No objection here.

Done in b92307f6708f9abff0b2ac242fe4b668232a9153.

João







Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#20674; Package emacs. (Sat, 04 Nov 2017 14:43:01 GMT) Full text and rfc822 format available.

Message #23 received at 20674 <at> debbugs.gnu.org (full text, mbox):

From: Noam Postavsky <npostavs <at> users.sourceforge.net>
To: joaotavora <at> gmail.com (João Távora)
Cc: Eli Zaretskii <eliz <at> gnu.org>, Stefan Monnier <monnier <at> IRO.UMontreal.CA>,
 "Paul W. Rankin" <hello <at> paulwrankin.com>, 20674 <at> debbugs.gnu.org
Subject: Re: bug#20674: PATCH: make linum.el play nicely with other
 margin-setting extensions
Date: Sat, 04 Nov 2017 10:42:13 -0400
tags 20674 fixed
close 20674 26.1
quit

joaotavora <at> gmail.com (João Távora) writes:

> Stefan Monnier <monnier <at> IRO.UMontreal.CA> writes:
>
>>> YES In that case, unless someone objects (paging Stefan here), I'll be
>>> pushing my original  linum.el solution soon.
>>
>> No objection here.
>
> Done in b92307f6708f9abff0b2ac242fe4b668232a9153.
>
> João

Sounds like this is fixed, or at least as fixed as it's ever going to
get; closing.

[1: b92307f670]: 2015-11-17 22:24:53 +0000
  linum-mode plays more nicely with other margin-setting extensions
  https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=b92307f6708f9abff0b2ac242fe4b668232a9153




Added tag(s) fixed. Request was from Noam Postavsky <npostavs <at> users.sourceforge.net> to control <at> debbugs.gnu.org. (Sat, 04 Nov 2017 14:43:02 GMT) Full text and rfc822 format available.

bug marked as fixed in version 26.1, send any further explanations to 20674 <at> debbugs.gnu.org and "Paul W. Rankin" <hello <at> paulwrankin.com> Request was from Noam Postavsky <npostavs <at> users.sourceforge.net> to control <at> debbugs.gnu.org. (Sat, 04 Nov 2017 14:43:02 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 03 Dec 2017 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 6 years and 117 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.