From: Eli Zaretskii <eliz@gnu.org>
To: Titus von der Malsburg <malsburg@posteo.de>
Cc: 19395@debbugs.gnu.org
Subject: bug#19395: 25.0.50; Setting left fringe to 0 messes up window-width
Date: Thu, 18 Dec 2014 18:15:36 +0200 [thread overview]
Message-ID: <837fxpue6v.fsf@gnu.org> (raw)
In-Reply-To: <87a92lmxy3.fsf@posteo.de>
> From: Titus von der Malsburg <malsburg@posteo.de>
> Cc: 19395@debbugs.gnu.org
> Date: Wed, 17 Dec 2014 19:36:04 -0800
>
> > But if we want this function to be more generally useful, it
> > shouldn't be limited to the frame's canonical character size, and
> > should at least take the face-remapping into account. Bonus points
> > for accepting a face as an argument and using that face's font
> > dimensions.
>
> This is more difficult than I thought. Below is a first sketch. Let me
> know if you think this is going in the right direction and I'll polish
> it and add the bonus feature.
>
> It appears that a font has to be rendered before Emacs can tell how wide
> a character is. That's why we need the temporary buffer. Not elegant,
> but I couldn't find a better way. `default-font-width' complements
> `default-font-height' in simple.el. The other function would go into
> window.el.
Given the changes I pushed in commit b197822, you will no longer need
all this complexity. Just
(aref (font-info (face-font 'default)) 11)
(For bullet-proof code, check that this is not zero, and if it is, use
the 10th member instead; see the docs.)
> (defun window-available-columns ()
> "Return the maximal number of characters that can be displayed
> on one line. This function is different from `window-body-width'
> in that it accounts for fringes (when at least one fringe has
> zero width, one column is reserved for continuation characters)
> and for the size of the default font (which may have been
> adjusted using, e.g., `text-scale-increase')."
> (let* ((window-width (window-body-width nil t))
> (font-width (default-font-width))
> (ncols (/ window-width font-width)))
> (if (and (not (featurep 'xemacs))
> (display-graphic-p)
> overflow-newline-into-fringe
> (/= (frame-parameter nil 'left-fringe) 0)
> (/= (frame-parameter nil 'right-fringe) 0))
> ncols
> (1- (ncols)))))
If we are going to put this in simple.el or subr.el, I don't think we
need to worry about XEmacs.
Thanks.
next prev parent reply other threads:[~2014-12-18 16:15 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-16 20:01 bug#19395: 25.0.50; Setting left fringe to 0 messes up window-width Titus von der Malsburg
2014-12-16 20:09 ` Eli Zaretskii
2014-12-16 20:36 ` Titus von der Malsburg
2014-12-16 20:58 ` Eli Zaretskii
2014-12-16 23:12 ` Stefan Monnier
2014-12-17 3:39 ` Eli Zaretskii
2014-12-17 14:16 ` Stefan Monnier
2014-12-17 15:47 ` Eli Zaretskii
2014-12-17 21:31 ` Stefan Monnier
2014-12-17 22:57 ` Drew Adams
2014-12-18 3:37 ` Eli Zaretskii
2014-12-18 14:24 ` Stefan Monnier
2014-12-18 15:51 ` Eli Zaretskii
2014-12-20 10:09 ` martin rudalics
2014-12-20 11:00 ` Eli Zaretskii
2014-12-17 3:46 ` Titus von der Malsburg
2014-12-17 15:29 ` Eli Zaretskii
2014-12-17 21:34 ` Stefan Monnier
2014-12-18 3:40 ` Eli Zaretskii
2014-12-18 14:25 ` Stefan Monnier
2014-12-18 15:52 ` Eli Zaretskii
2014-12-17 3:28 ` Titus von der Malsburg
2014-12-17 15:32 ` Eli Zaretskii
2014-12-17 17:18 ` Titus von der Malsburg
2014-12-17 18:21 ` Eli Zaretskii
2014-12-17 18:48 ` Titus von der Malsburg
2014-12-17 19:09 ` Eli Zaretskii
2014-12-18 3:36 ` Titus von der Malsburg
2014-12-18 16:15 ` Eli Zaretskii [this message]
2014-12-19 17:09 ` martin rudalics
2014-12-19 19:35 ` Eli Zaretskii
2014-12-20 10:09 ` martin rudalics
2014-12-20 10:59 ` Eli Zaretskii
2014-12-20 11:42 ` martin rudalics
2014-12-20 12:45 ` Eli Zaretskii
2014-12-20 14:51 ` martin rudalics
2014-12-20 16:36 ` Eli Zaretskii
2014-12-20 17:50 ` martin rudalics
2014-12-20 18:16 ` Eli Zaretskii
2014-12-20 18:58 ` martin rudalics
2014-12-20 19:52 ` Eli Zaretskii
2014-12-21 12:14 ` Titus von der Malsburg
2014-12-21 16:43 ` Eli Zaretskii
2014-12-20 14:51 ` Titus von der Malsburg
2014-12-20 15:06 ` martin rudalics
2014-12-20 15:21 ` Titus von der Malsburg
2014-12-20 16:03 ` martin rudalics
2014-12-20 16:40 ` Eli Zaretskii
2014-12-20 15:45 ` Titus von der Malsburg
2014-12-20 16:38 ` Eli Zaretskii
2014-12-20 17:51 ` martin rudalics
2014-12-20 18:19 ` Eli Zaretskii
2014-12-20 16:31 ` Eli Zaretskii
2014-12-21 22:04 ` Titus von der Malsburg
2014-12-22 16:00 ` Eli Zaretskii
2022-04-29 13:14 ` Lars Ingebrigtsen
2022-06-02 21:41 ` Jim Porter
[not found] ` <a54d35b0-7ed6-374c-2a14-e7d97cf6c0a2@gmail.com>
2022-06-03 3:21 ` Lars Ingebrigtsen
2014-12-18 17:16 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=837fxpue6v.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=19395@debbugs.gnu.org \
--cc=malsburg@posteo.de \
/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 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.