From: Eli Zaretskii <eliz@gnu.org>
To: help-gnu-emacs@gnu.org
Subject: Re: Using :align-to with non-spaces
Date: Tue, 10 Oct 2017 23:01:55 +0300 [thread overview]
Message-ID: <83bmlepya4.fsf@gnu.org> (raw)
In-Reply-To: <87fuaqdd6n.fsf@gmail.com> (message from Alex on Tue, 10 Oct 2017 13:18:24 -0600)
> From: Alex <agrambot@gmail.com>
> Cc: help-gnu-emacs@gnu.org
> Date: Tue, 10 Oct 2017 13:18:24 -0600
>
> > :align-to doesn't align the space, it produces a stretch of white
> > space that _ends_ at the place which :align-to defines. That's why it
> > makes sense to put this property on a SPC character: it makes that SPC
> > character's width on display be as you need it.
>
> Right, I misspoke. What would be nice is to have the above 'align-to
> display property prepend a stretch space that ends at an :align-to
> expression.
Then the stretch would have no buffer/string position on it, and the
code which processes glyphs would become more complex. IMO, the gain
is too small to justify the complexity.
> I believe it makes the code a bit neater when using other text
> properties on the string.
If it does, then only slightly so, IMO. Prepending a space is not a
big deal.
> > It doesn't because neither does that happen with line-prefix or
> > wrap-prefix. IOW, :align-to measures from the edges of the window's
> > text area.
>
> I would consider it not recognizing {line,wrap}-prefix to be a bug as
> well (either in behaviour or documentation).
Everything in the text area counts: images, stretches, line numbers,
etc. This was always so, since Emacs 21.
> > The "text area" is everything inside the fringes/display margins
> > (whichever comes last), so it includes the space used for the
> > line-number display.
>
> >From a user perspective, I don't think the prefix/line-numbers should be
> considered as part of the text area. At the very least, not the
> line-numbers.
That's your linum-mode experience talking ;-) It takes time to get
used to a different view of this.
> > The solution I can suggest is to use the value returned by
> > line-number-display-width.
>
> Right, but shouldn't it be recomputed at the same times that the other
> element's widths are (i.e., toggling display-line-numbers should
> automatically change the display width of relevant :align-to/:width
> spaces)?
We discussed that briefly on emacs-devel, and decided not to, mainly
due to the line/wrap-prefix precedent. I still don't see any reason
to revise that decision, the few problems that are caused for that
were solved relatively easily.
> So even if `left' doesn't mean column 0 (I find this poor behaviour,
> though), then one can use `(:align-to (+ left prefix)' or something of
> the sort to always mean column 0, even if there are
> prefixes/line-numbers displayed.
I think you underestimate the number of different "things" that could
precede the leftmost text character. We have so many display features
that can put stuff to the left of the leftmost character that we will
have hard time deciding what should and shouldn't be considered
'prefix'. It is easier to write a function that computes their
summary width, if that's what you need.
More generally, doing layout in Lisp (which is what I think you are
trying) isn't easy, and was never supposed to be. It is better to
extend the display engine to do layout for you, if that makes sense.
next prev parent reply other threads:[~2017-10-10 20:01 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-09 5:22 Using :align-to with non-spaces Alex
2017-10-10 6:40 ` Eli Zaretskii
2017-10-10 18:09 ` Alex
2017-10-10 18:27 ` Eli Zaretskii
2017-10-10 19:18 ` Alex
2017-10-10 20:01 ` Eli Zaretskii [this message]
2017-10-11 0:41 ` Alex
2017-10-11 10:38 ` Eli Zaretskii
2017-10-12 0:47 ` Stefan Monnier
2017-10-12 7:10 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83bmlepya4.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).