[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#37213: Execute set-window-margins. left-margin-width remains 0.
From: |
Alan Mackenzie |
Subject: |
bug#37213: Execute set-window-margins. left-margin-width remains 0. |
Date: |
Sat, 31 Aug 2019 11:59:11 +0000 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
Hello, Eli.
On Thu, Aug 29, 2019 at 09:42:17 +0300, Eli Zaretskii wrote:
> > Date: Wed, 28 Aug 2019 19:57:06 +0000
> > Cc: 37213@debbugs.gnu.org
> > From: Alan Mackenzie <acm@muc.de>
> > > I don't think this is a bug. This variable is for _setting_ the
> > > margin width, not for _returning_ its width as set "by other means".
> > > See its documentation.
> > The documentation says "This variable specifies the width of the left
> > margin". As best, this is unclear. What you're saying is that the
> > variable ceases to specify that width, should the margin be altered by
> > other means.
> > I maintain that this is either a bug in the documentation, or in the
> > code.
> I'm okay with clarifying the documentation, but let's first agree what
> needs clarifying there.
How about the following, purely pragmatic, patch?
diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi
index 7c0a56dcad..428fe9595a 100644
--- a/doc/lispref/display.texi
+++ b/doc/lispref/display.texi
@@ -5016,7 +5016,9 @@ Display Margins
Setting these variables does not immediately affect the window. These
variables are checked when a new buffer is displayed in the window.
Thus, you can make changes take effect by calling
-@code{set-window-buffer}.
+@code{set-window-buffer}. Do not use these variables to try to
+determine the current width of the left or right margin. Instead, use
+the function @code{window-margins}.
You can also set the margin widths immediately.
With this patch applied, I'd be happy for the bug to be closed.
> > If the former, it should explicitly state that the variable is
> > write-only, and its read value is undefined. It should say that the
> > function window-margins should be used instead.
> > But it might be easier just to amend the code. There appear to be just
> > two ways to set the width of the left margin (or the right margin), so
> > if it gets set the second way, why not just set that variable? Could
> > this do any harm? (Note: I haven't looked at the code, yet.)
> Think about it: left-margin-width is a per-buffer variable. A buffer
> can be displayed in zero or more windows, and the margin is a window
> property. How can a single buffer-local variable reflect a value that
> can be different in different windows, and can even be meaningless if
> the buffer is not displayed in any window?
OK.
> What happens in the code is that when a buffer is displayed in a
> window, this variable is consulted, and the window's margin-width
> attribute set accordingly. The window margins can grow or shrink
> thereafter, and the function window-margins then returns this window
> attribute's value at any given moment for a specific window.
Thanks for the explanation.
--
Alan Mackenzie (Nurermberg, Germany).
bug#37213: Execute set-window-margins. left-margin-width remains 0., martin rudalics, 2019/08/29
Message not available