Subject: 24.3.50; Incorrect window-text-height with non-zero line-spacing

From: Robert Dallas Gray <[email-masked]>
Date: Wed, 13 Nov 2013 19:23:19 +0000

On a graphical display, when `line-spacing' is non-zero,
`window-text-height' reports an incorrect number; equally,
`set-window-text-height' can't be used properly. This impacts on
libraries which use `set-window-text-height' e.g. to attempt to size a
window accurately.

To reproduce:
In a graphical display, `M-: (setq line-spacing 5)', then `M-:
(window-text-height)'. Note the incorrect result. 

In GNU Emacs 24.3.50.1 (x86_64-apple-darwin13.0.0, NS apple-appkit-1265.00)
of 2013-11-10 on Pud.local
Windowing system distributor `Apple', version 10.3.1265
Configured using:
`configure --prefix=/usr/local/Cellar/emacs/HEAD --without-dbus
--enable-locallisppath=/usr/local/share/emacs/site-lisp
--infodir=/usr/local/Cellar/emacs/HEAD/share/info/emacs
--without-gnutls --with-ns --disable-ns-self-contained'

Important settings:
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  flycheck-mode: t
  show-smartparens-mode: t
  smartparens-mode: t
  global-auto-complete-mode: t
  auto-complete-mode: t
  linum-mode: t
  shell-dirtrack-mode: t
  project-persist-mode: t
  global-auto-revert-mode: t
  ido-everywhere: t
  delete-selection-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Recent input:
<C-down> <C-down> <C-down> C-x C-s <C-down> <C-down> 
<C-down> <C-down> <C-down> <C-down> <C-down> <C-up> 
<down> <up> <left> C-c <down> C-c . d e l e t e <return> 
<down-mouse-1> <mouse-1> <down-mouse-1> <mouse-1> <down-mouse-1> 
<mouse-1> <down-mouse-1> <mouse-1> <return> ; ; SPC 
p a c k a g e - d e l e t e SPC h a s SPC d i f f e 
r e n t SPC s i g n a t u r e s SPC d e p e d i n <backspace> 
<backspace> <backspace> n d i n g SPC o n SPC e m a 
c s SPC v e r s i o n , <return> ; ; SPC b u t SPC 
u s i n g SPC t h e SPC f i r s t SPC a r g SPC s h 
o u l d SPC h a n d l e SPC b o t h <right> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <right> <right> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <M-backspace> t 
a k i n g SPC <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <left> SPC f r o m SPC a d v i c e 
<right> C-x C-s C-c <down> C-c <up> C-c <right> C-s 
a d v C-s <right> <right> <down> <down> <down> <down> 
<down> <wheel-up> <double-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <triple-wheel-up> <triple-wheel-up> 
<triple-wheel-up> <down-mouse-1> <mouse-1> M-x r e 
p o <return>

Recent messages:
FlyC: You should have a section marked ";;; Commentary:"
FlyC: You should have a section marked ";;; Code:"
FlyC: The first line should be of the form: ";;; package --- Summary"
FlyC: You should have a section marked ";;; Commentary:"
FlyC: You should have a section marked ";;; Code:"
Saving file /Users/robertdallasgray/.emacs.d/pallet/test/pallet-test.el...
Wrote /Users/robertdallasgray/.emacs.d/pallet/test/pallet-test.el
Saving file /Users/robertdallasgray/.emacs.d/pallet/test/pallet-test.el...
Wrote /Users/robertdallasgray/.emacs.d/pallet/test/pallet-test.el
Mark saved where search started
scroll-down-command: Beginning of buffer [18 times]

Load-path shadows:
/Users/robertdallasgray/.emacs.d/.cask/24.3.50.1/elpa/flycheck-20131108.1337/.dir-locals hides /Users/robertdallasgray/.emacs.d/.cask/24.3.50.1/elpa/fringe-helper-20130519.1641/.dir-locals
~/.emacs.d/custom hides /usr/local/Cellar/emacs/HEAD/share/emacs/24.3.50/lisp/custom
/Users/robertdallasgray/.emacs.d/.cask/24.3.50.1/elpa/flycheck-20131108.1337/.dir-locals hides /usr/local/Cellar/emacs/HEAD/share/emacs/24.3.50/lisp/gnus/.dir-locals

Features:
(shadow sort mail-extr emacsbug message rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
jka-compr misearch multi-isearch pallet loadhist debug macrostep pp
shell-pop term ehelp electric windmove hl-line sr-speedbar speedbar
sb-image ezimage dframe dired org-wl org-w3m org-vm org-rmail org-mhe
org-mew org-irc org-jsinfo org-infojs org-html org-exp ob-exp
org-exp-blocks org-info org-gnus gnus-util org-docview org-bibtex bibtex
org-bbdb org-mobile org-agenda org byte-opt bytecomp byte-compile cconv
ob-tangle ob-ref ob-lob ob-table org-footnote org-src ob-comint ob-keys
org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp
ob org-compat org-macs ob-eval org-loaddefs format-spec cal-menu
calendar cal-loaddefs markdown-mode noutline outline easy-mmode
make-mode vc-git desktop frameset flycheck find-func help-mode easy-kill
graphene-smartparens-config smartparens-config smartparens-html
smartparens thingatpt auto-complete-config auto-complete popup linum
imenu-anywhere imenu graphene-theme solarized-light-theme
solarized-definitions uniquify readline-complete shell pcomplete comint
ansi-color ring graphene graphene-look graphene-osx-defaults
exec-path-from-shell graphene-keys graphene-projects project-persist
edmacro kmacro graphene-speedbar graphene-env autorevert filenotify smex
ido graphene-editing web-mode disp-table delsel
graphene-helper-functions advice noflet rx info easymenu cask help-fns
cl-macs gv cl cask-bootstrap epl git commander f dash s cl-loaddefs
cl-lib package server time-date tooltip ediff-hook vc-hooks
lisp-float-type mwheel ns-win 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 cocoa ns
multi-tty emacs)