From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#19395: 25.0.50; Setting left fringe to 0 messes up window-width Date: Sat, 20 Dec 2014 16:06:21 +0100 Message-ID: <5495906D.7030800@gmx.at> References: <87vblbnz2u.fsf@posteo.de> <83k31rwe55.fsf@gnu.org> <87lhm772o2.fsf@posteo.de> <83h9wvwbux.fsf@gnu.org> <87bnn39cpe.fsf@posteo.de> <83a92mwau9.fsf@gnu.org> <874msu9out.fsf@posteo.de> <83vblauoh6.fsf@gnu.org> <87wq5q864m.fsf@posteo.de> <83tx0uum88.fsf@gnu.org> <87a92lmxy3.fsf@posteo.de> <837fxpue6v.fsf@gnu.org> <87oaqyz85s.fsf@posteo.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1419088048 15794 80.91.229.3 (20 Dec 2014 15:07:28 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 20 Dec 2014 15:07:28 +0000 (UTC) Cc: 19395@debbugs.gnu.org To: Titus von der Malsburg , Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Dec 20 16:07:21 2014 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Y2Lcm-0000cs-BK for geb-bug-gnu-emacs@m.gmane.org; Sat, 20 Dec 2014 16:07:20 +0100 Original-Received: from localhost ([::1]:34633 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y2Lcl-0002uO-MH for geb-bug-gnu-emacs@m.gmane.org; Sat, 20 Dec 2014 10:07:19 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36498) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y2Lcc-0002tP-5U for bug-gnu-emacs@gnu.org; Sat, 20 Dec 2014 10:07:17 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y2LcU-0002L0-Ls for bug-gnu-emacs@gnu.org; Sat, 20 Dec 2014 10:07:10 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:43706) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y2LcU-0002Kw-JH for bug-gnu-emacs@gnu.org; Sat, 20 Dec 2014 10:07:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Y2LcU-0008WL-9D for bug-gnu-emacs@gnu.org; Sat, 20 Dec 2014 10:07:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 20 Dec 2014 15:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19395 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 19395-submit@debbugs.gnu.org id=B19395.141908800332729 (code B ref 19395); Sat, 20 Dec 2014 15:07:02 +0000 Original-Received: (at 19395) by debbugs.gnu.org; 20 Dec 2014 15:06:43 +0000 Original-Received: from localhost ([127.0.0.1]:53072 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y2LcB-0008Vj-7W for submit@debbugs.gnu.org; Sat, 20 Dec 2014 10:06:43 -0500 Original-Received: from mout.gmx.net ([212.227.15.19]:62302) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y2Lc3-0008Vb-HC for 19395@debbugs.gnu.org; Sat, 20 Dec 2014 10:06:36 -0500 Original-Received: from [188.23.121.89] ([188.23.121.89]) by mail.gmx.com (mrgmx003) with ESMTPSA (Nemesis) id 0M0xbD-1Xm4To1ckR-00v7u0; Sat, 20 Dec 2014 16:06:31 +0100 In-Reply-To: <87oaqyz85s.fsf@posteo.de> X-Provags-ID: V03:K0:wI8fOUdZGNN9S49LyIsqerA7NUTvONTyOLrZQGfkoH3c3snshPL xuHS9UK7+L/6YnucYFCOytHrwPwHPxkT7Idp0f94rNKqhcouRTKEf0pYI0JBMdfggafsAVO 5mRqZp+vu8MjUd0nJKOhbObwhGJ/qoopctF2xp0pX5AKxve+vK14SKN6V+5jniANaLgLc37 0T+lMZzusce58dZcSfKog== X-UI-Out-Filterresults: notjunk:1; X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:97611 Archived-At: > (defun window-char-width (&optional window face) > "Return character width for WINDOW. > WINDOW must be a live window and defaults to the selected one. > > FACE is the face for which character width should be > returned. Buffer-local face remappings are applied. If nil, the > default face is used." > (with-selected-window (window-normalize-window window t) > (let* ((face (if face face 'default)) > (info (font-info (face-font face))) > (width (aref info 11))) > (if (> width 0) > width > (aref info 10))))) > > (defun window-max-characters-per-line (&optional window face) > "Return the number of characters that can be displayed > on one line. > WINDOW must be a live window and defaults to the selected one. > > FACE is the face whose character width should be used for the > calculation. Buffer-local face remappings are applied. If nil, > the default face is used. > > 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')." > (with-selected-window (window-normalize-window window t) > (let* ((window-width (window-body-width window t)) > (font-width (window-char-width window face)) > (ncols (/ window-width font-width))) > (if (and (display-graphic-p) > overflow-newline-into-fringe > (/= (frame-parameter nil 'left-fringe) 0) > (/= (frame-parameter nil 'right-fringe) 0)) > ncols > (1- ncols))))) > > Note that the first function is a variant of Martin's version which had > a bug: if the buffer in the specified window is displayed in two frames, > the returned character width was always the one used in the current > frame which is not necessarily the character width in the specified > window (the window may be in the other frame). This is a problem > because character width can be different, if the two frames use > different default fonts. So this what I've been trying to find out all the time. The faces apparently _get_ merged dependent on the buffer _and_ the frame. I need a corresponding `window-char-height' as well, probably also with a FACE argument. > For completeness, it probably also makes sense to include the following > function in simple.el, which already has a function > `default-font-height'. > > (defun default-font-width () > "Return the width in pixels of the current buffer's default face font. I profoundly dislike the "default-" prefix here. `buffer-font-height' and `buffer-font-width' would be much better IMHO. > I also added the bonus feature which lets you specify a specific face > that should be used for the calculations. So are you now sure that we don't need a specific character ("M") any more? martin