Subject: 23.2; raise display property broken on Mac OS X

From: Christopher Genovese <[email-masked]>
Date: Wed, 12 Jan 2011 11:30:36 -0500

The raise display property appears to be broken in Emacs 23.2.1
running on Mac OS X 10.5.8 (using --with-ns). I first noticed this in
AucTeX when the subscripts did not drop as they did with say Carbon
Emacs 22. But I can reproduce the behavior using Emacs -Q even in
fundamental mode.

When one character, say, is given the raise property, e.g., (raise -0.3),
the entire line shifts (and spaces out somewhat), and the cursor becomes
taller when over that character.  But the character itself does not
drop.

This is easily seen in an AucTeX buffer (either plain-TeX-mode or
LaTeX-mode): type $A_f$, and the f is shrunken as it should but the line
goes down so that the A and f have the same top.

But for a simple test in Fundamental mode, type "hello, world!" and
position the cursor on the second ell. Then do

  (text-properties-at (point))      ; returns nil
  (add-text-properties (point) (1+ (point)) '(display (raise -0.3)))  ;
returns t, line shifts down, cursor grows tall
  (text-properties-at (point))      ; returns (display (raise -0.3))
  (forward-char)
  (text-properties-at (point))      ; returns nil
  (backward-char 2)
  (text-properties-at (point))      ; returns nil

If instead one does (raise 0.3), the behavior is *exactly the same*,
the line shifts down and the cursor grows tall.

Using Carbon Emacs 22 as a comparison, the same steps there
produce a single dropped (or raised with positive value) ell
in an otherwise unaffected line. This is the proper behavior.

The information from report-emacs-bug (under Emacs -Q)
is appended below.

   Thanks,

     Chris

In GNU Emacs 23.2.1 (i386-apple-darwin9.8.0, NS apple-appkit-949.54)
 of 2010-11-09 on christopher-genoveses-macbook-pro.local
Windowing system distributor `Apple', version 10.3.949
configured using `configure  '--with-ns''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Any (esp. AucTeX and fundamental-mode)

Minor modes in effect:
  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-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-h c C-w s-x <escape> x r e p o r t - e m a c s -
b u g <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
C-w runs the command kill-region
kill-region: The mark is not set now, so there is no region

Load-path shadows:
/Applications/Emacs.app/Contents/Resources/site-lisp/org-contrib/org-panel
hides
/Applications/Emacs.app/Contents/Resources/site-lisp/nxhtml/util/org-panel
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/speedbar/speedbar
hides /Applications/Emacs.app/Contents/Resources/lisp/speedbar
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/speedbar/sb-image
hides /Applications/Emacs.app/Contents/Resources/lisp/sb-image
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/ezimage
hides /Applications/Emacs.app/Contents/Resources/lisp/ezimage
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/speedbar/dframe
hides /Applications/Emacs.app/Contents/Resources/lisp/dframe
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-xoxo hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-xoxo
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-wl hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-wl
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-w3m hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-vm hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-vm
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-timer hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-timer
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-table hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-table
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-src hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-src
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-rmail hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-remember hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-remember
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-publish hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-publish
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-protocol hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-plot hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-plot
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-mouse hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-mobile hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-mhe hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-mew hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-mew
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-macs hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-macs
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-mac-message
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mac-message
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-list hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-list
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-latex hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-latex
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-jsinfo hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-jsinfo
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-irc hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-irc
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-install hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-install
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-inlinetask
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-info hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-info
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-indent hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-indent
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-id hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-id
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-icalendar hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-icalendar
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-html hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-html
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-habit hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-habit
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-gnus hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-freemind hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-freemind
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-footnote hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-feed hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-feed
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-faces hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-faces
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-exp hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-exp
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-exp-blocks
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp-blocks
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-docbook hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-docbook
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-datetree hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-crypt hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-compat hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-compat
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-colview hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-colview
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-clock hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-clock
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-bibtex hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-bbdb hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-attach hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-attach
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-ascii hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-ascii
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-archive hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-archive
/Applications/Emacs.app/Contents/Resources/site-lisp/org/org-agenda hides
/Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/eieio hides
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/eieio
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/eieio-speedbar
hides
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/eieio-speedbar
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/eieio-opt
hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/eieio-opt
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/eieio-datadebug
hides
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/eieio-datadebug
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/eieio-custom
hides
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/eieio-custom
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/eieio-comp
hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/eieio-comp
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/eieio-base
hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/eieio-base
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/eieio/chart hides
/Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/chart
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/srecode/srecode
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/srecode
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/semantic/semantic
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/semantic
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/pulse
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/pulse
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/mode-local
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/mode-local
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/inversion
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/inversion
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/ede/ede hides
/Applications/Emacs.app/Contents/Resources/lisp/cedet/ede
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/data-debug
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/data-debug
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/cedet
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/cedet
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/cedet-idutils
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/cedet-idutils
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/cedet-global
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/cedet-global
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/cedet-files
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/cedet-files
/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/cedet-cscope
hides /Applications/Emacs.app/Contents/Resources/lisp/cedet/cedet-cscope

Features:
(shadow sort mail-extr message ecomplete rfc822 mml mml-sec
password-cache mm-decode mm-bodies mm-encode mailcap mail-parse rfc2231
rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util netrc
time-date mm-util mail-prsvr gmm-utils wid-edit mailheader canlock sha1
hex-util hashcash mail-utils emacsbug tooltip ediff-hook vc-hooks
lisp-float-type mwheel ns-win easymenu tool-bar dnd fontset image fringe
lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar
mldrag 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 loaddefs button minibuffer faces cus-face files text-properties
overlay md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process ns multi-tty
emacs)