unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
Subject: RE: Split `simple.el'?
Date: Thu, 5 Apr 2018 14:56:01 -0700 (PDT)	[thread overview]
Message-ID: <f3c4773e-dea3-42e1-8033-ffafcbb700d2@default> (raw)
In-Reply-To: <jwv4lkpl70b.fsf-monnier+gmane.emacs.devel@gnu.org>

> > The frame-fitting code moves point through the buffer,
> > at eol (`end-of-line'), within a `save-excursion', to
> > get the longest line length.  That movement presumably
> > means that fonts are looked for to render the chars in
> > each line.
> 
> The movement doesn't care about the chars themselves (it's just looking
> for an end-of-line).  So it's probably the computation of the
> line-length which triggers it.  You can probably avoid the problem by
> using another way to compute the "length" (one which doesn't care about
> fonts).

So far, I've wanted to take the apparent (i.e., rendered)
char width into account.  I've just been counting columns,
to do that:

(while (not (eobp))
  (end-of-line)
  (setq max-win-width  (max (current-column) max-win-width))
  (when (zerop (forward-line 1))
    (setq max-win-height  (1+ max-win-height))))

(The file is here, if you want a bigger picture:
https://www.emacswiki.org/emacs/download/fit-frame.el)

`current-column' "is calculated by adding together the widths
of all the displayed representations of the character between
the start of the previous line and point (e.g., control
characters will have a width of 2 or 4, tabs will have a
variable width)."

That's TRT, I think: take into account rendered char widths.

But maybe I need an option, to calculate line width without
regard to rendering in some cases.  Even so, other than a
user choosing yes/no in general, I don't see a way for code
to tell whether or where it might makes sense to skip
requiring rendering.





  reply	other threads:[~2018-04-05 21:56 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-03 21:41 Split `simple.el'? Drew Adams
2018-04-03 22:25 ` Stefan Monnier
2018-04-03 22:43   ` Paul Eggert
2018-04-03 22:57     ` Drew Adams
2018-04-03 23:00       ` Davis Herring
2018-04-03 23:15         ` Drew Adams
2018-04-03 23:01       ` Drew Adams
2018-04-04  0:21     ` Stefan Monnier
2018-04-04  2:02       ` Paul Eggert
2018-04-04  2:57         ` Drew Adams
2018-04-04  3:19           ` Stefan Monnier
2018-04-04 23:43             ` Drew Adams
2018-04-05  0:54               ` Stefan Monnier
2018-04-04  6:50         ` Eli Zaretskii
2018-04-04 17:20           ` Paul Eggert
2018-04-04 19:08             ` Eli Zaretskii
2018-04-04 19:29               ` Paul Eggert
2018-04-04 19:37                 ` Eli Zaretskii
2018-04-04 19:59                   ` Paul Eggert
2018-04-05  5:55                     ` Eli Zaretskii
2018-04-05 16:01                       ` Paul Eggert
2018-04-04 23:44             ` Drew Adams
2018-04-05  0:04               ` Paul Eggert
2018-04-04  6:41       ` Eli Zaretskii
2018-04-04  8:19         ` Andreas Schwab
2018-04-04  8:55           ` Eli Zaretskii
     [not found]           ` <<838ta34agu.fsf@gnu.org>
2018-04-04 23:44             ` Drew Adams
2018-04-05  0:56               ` Stefan Monnier
2018-04-04  6:36     ` Eli Zaretskii
2018-04-04 13:14       ` Stefan Monnier
2018-04-04 14:02         ` Eli Zaretskii
2018-04-05  1:05           ` Stefan Monnier
2018-04-05  1:17             ` Drew Adams
2018-04-05  6:39               ` Eli Zaretskii
2018-04-05 17:25               ` Drew Adams
2018-04-05 17:51                 ` Eli Zaretskii
     [not found]                 ` <<83vad51r06.fsf@gnu.org>
2018-04-05 18:23                   ` Drew Adams
2018-04-05 20:53                     ` Stefan Monnier
2018-04-05 20:45                 ` Stefan Monnier
2018-04-05 21:56                   ` Drew Adams [this message]
2018-04-05 22:07                     ` Stefan Monnier
2018-04-06  6:22                       ` Andreas Schwab
2018-04-06  8:10                         ` Eli Zaretskii
     [not found]     ` <<83in974gwf.fsf@gnu.org>
2018-04-04 23:44       ` Drew Adams
2018-04-05  6:26         ` Eli Zaretskii
2018-04-05  6:36           ` Eli Zaretskii
2018-04-03 22:27 ` Clément Pit-Claudel
2018-04-03 22:49   ` Drew Adams
2018-04-04  6:12 ` Eli Zaretskii
2018-04-04 19:45   ` Juri Linkov
2018-04-05  6:02     ` Eli Zaretskii
2018-04-07 20:29       ` Juri Linkov
2018-04-08 13:51         ` Eli Zaretskii
2018-04-08 19:51           ` Juri Linkov
2018-04-09  2:23             ` Eli Zaretskii
2018-04-09 20:31               ` Juri Linkov
2018-04-10  2:38                 ` Eli Zaretskii
2018-04-04 22:13 ` John Wiegley
2018-04-04 22:31   ` Clément Pit-Claudel
2018-04-04 22:49     ` John Wiegley
2018-04-05  2:37       ` Clément Pit-Claudel
2018-04-05  6:33         ` Eli Zaretskii
2018-04-05 20:00           ` Clément Pit-Claudel
2018-04-05  8:12         ` Nick Helm
2018-04-05  6:44       ` Eli Zaretskii
2018-04-05  9:53         ` John Wiegley
2018-04-04 22:45   ` Jefferson Carpenter
2018-04-05  6:17     ` Eli Zaretskii
2018-04-05  8:17       ` Jefferson Carpenter
2018-04-05  9:47         ` Eli Zaretskii
2018-04-04 23:44   ` Drew Adams
2018-04-05 17:45   ` Achim Gratz
2018-04-05 20:52     ` Stefan Monnier
2018-04-05 21:56       ` Paul Eggert
2018-04-06  6:23       ` Andreas Schwab
2018-04-06  8:11         ` Eli Zaretskii
2018-04-06 12:52           ` Stefan Monnier
2018-04-06 13:15             ` Eli Zaretskii
2018-04-06 13:33               ` Eli Zaretskii
2018-04-06 18:18                 ` Stefan Monnier
2018-04-06 18:52                   ` Eli Zaretskii
2018-04-06 19:25                     ` Stefan Monnier
2018-04-06 19:45                       ` Eli Zaretskii
     [not found]               ` <<83bmew1mu5.fsf@gnu.org>
2018-04-06 15:52                 ` Drew Adams
2018-04-06 17:05                   ` Eli Zaretskii
2018-04-07  1:30               ` John Wiegley
2018-04-07 12:24                 ` Stefan Monnier
     [not found]             ` <<83efjs1nnc.fsf@gnu.org>
2018-04-06 15:46               ` Drew Adams
2018-04-07 20:32   ` Juri Linkov

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=f3c4773e-dea3-42e1-8033-ffafcbb700d2@default \
    --to=drew.adams@oracle.com \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    /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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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).