Subject: 24.4; Font size change doesn't update (window-total-width)

From: Joost Kremers <[email-masked]>
Date: Sun, 01 Mar 2015 03:31:05 +0100

After changing the font size (with `custom-push-theme' and
`face-spec-recalc'), the value returned by `window-total-width' is not
updated.

To reproduce, run `emacs -Q' and do:

- (window-total-width) ; shows the initial value
- (custom-push-theme 'theme-face 'default 'user 'set '((t (:height 128))))
  ; use a :height value that's actually different from the default height.
- (face-spec-recalc 'default (selected-frame))
- (window-total-width) ; still shows the initial value
- C-x 3 ; split window horizontally
- C-x 1 ; delete other window
- (window-total-width) ; shows the new value

The second call to `window-total-width' should already have returned the
new value.

The following IELM transcript (recorded directly after `emacs -Q') shows
the problem:

ELISP> (window-total-width)
240 (#o360, #xf0, ?ð)
ELISP> (custom-push-theme 'theme-face 'default 'user 'set '((t (:height 128))))
((theme-face default user
	     ((t
	       (:height 128)))))

ELISP> (face-spec-recalc 'default (selected-frame))
nil
ELISP> (window-total-width)
240 (#o360, #xf0, ?ð)

;; now press `C-x 3` followed by `C-x 1'

ELISP> (window-total-width)
192 (#o300, #xc0, ?À)
ELISP> 

The second call to `window-total-width` returns 240, but it should have
returned 192. After splitting the window and deleting the other window
again, the correct value is returned.

Note that splitting the window vertically (`C-x 2`) does *not* fix the
value returned by `window-total-width'.

In GNU Emacs 24.4.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.4.2)
 of 2014-10-22 on IdeaPad
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description:	elementary OS Luna

Important settings:
  value of $LC_MONETARY: en_IE.UTF-8
  value of $LC_NUMERIC: en_IE.UTF-8
  value of $LC_TIME: en_IE.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: IELM

Minor modes in effect:
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
M-x i e l m <return> ( w i n d o w - w <backspace> 
t o t a l - w i d t h ) <return> C-y M-b M-b M-d M-d 
<backspace> 1 2 8 M-b M-b M-b M-b M-f C-f C-d ' C-e 
<return> ( f a c e - s p e c - r e <tab> c <tab> SPC 
' d e f a u l t SPC ' <backspace> ( s e l e t <backspace> 
c t e d - f r a m e ) ) <return> <up> <down> <C-up> 
<C-up> <C-up> <return> C-x 3 C-x 1 <C-up> <return> 
<help-echo> C-SPC C-t C-f C-SPC <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> C-a <up> 
<down> C-a a C-/ <left> <left> <left> <left> <left> 
<left> <left> <S-down> <S-down> <S-down> <S-down> <S-down> 
<S-down> <S-down> <S-down> <S-down> <S-down> <S-down> 
<S-down> <S-down> <S-down> M-w M-x r e p o r t - e 
m a c - <backspace> s - b u g <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Mark set
Making completion list...
Mark set
transpose-subr-1: Text is read-only
Mark activated
Undo!
Mark set
End of buffer

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
help-fns mail-prsvr mail-utils help-mode mule-util ielm easymenu pp
comint ansi-color ring time-date tooltip electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list newcomment lisp-mode prog-mode register
page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process dbusbind
gfilenotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 76433 3869)
 (symbols 48 18021 0)
 (miscs 40 52 174)
 (strings 32 10420 4770)
 (string-bytes 1 294096)
 (vectors 16 9633)
 (vector-slots 8 392165 12847)
 (floats 8 66 361)
 (intervals 56 294 16)
 (buffers 960 13)
 (heap 1024 45822 783))

-- 
Joost Kremers
Life has its moments