unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#8863: 23.3; Strikethrough won't display on MacOS
@ 2011-06-14 16:05 Dave Abrahams
  2011-06-18 21:48 ` Chong Yidong
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Dave Abrahams @ 2011-06-14 16:05 UTC (permalink / raw)
  To: 8863

Title says it all.  Faces with the "strikethrough" property set show up
as un-struck-through.


In GNU Emacs 23.3.1 (x86_64-apple-darwin, NS apple-appkit-1038.35)
 of 2011-03-09 on black.porkrind.org
Windowing system distributor `Apple', version 10.3.1038
configured using `configure  '--host=x86_64-apple-darwin' '--build=i686-apple-darwin' '--with-ns' 'build_alias=i686-apple-darwin' 'host_alias=x86_64-apple-darwin' 'CC=gcc -mmacosx-version-min=10.5''

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: nil
  value of $XMODIFIERS: nil
  locale-coding-system: nil
  default enable-multibyte-characters: t

Major mode: Magit

Minor modes in effect:
  magit-status-mode: t
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  me-minor-mode: t
  show-paren-mode: t
  server-mode: t
  ido-everywhere: t
  global-auto-revert-mode: 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-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
SPC t h a t SPC <M-backspace> w h o s e SPC c o n t 
e n t s SPC w o u l d n ' t SPC c h a n g e C-n C-n 
C-n C-n C-n C-n C-e C-p C-p C-p C-p C-p C-p C-p C-e 
C-n C-n C-n C-n C-n C-n C-n C-n C-p C-x C-s C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p M-! M-p <return> C-n C-n C-n C-p C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-e C-, C-p C-e C-x g C-n C-n C-n C-n 
C-n <tab> <tab> <tab> <tab> <tab> <tab> <tab> <tab> 
<tab> <tab> <tab> C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p C-p 
C-p C-n C-n C-n C-n C-p C-p M-x r e p o r t - e m <tab> 
<return>

Recent messages:
Auto-saving...done
Mark set
Mark saved where search started
Mark set [3 times]
Auto-saving...done
Mark activated
Saving file /Users/dave/.emacs.d/el-get/initsplit/initsplit.el...
Wrote /Users/dave/.emacs.d/el-get/initsplit/initsplit.el
(Shell command succeeded with no output)
(No files need saving)

Load-path shadows:
/Users/dave/.emacs.d/el-get/wl-gravatar/gravatar hides /Users/dave/.emacs.d/el-get/gravatar/gravatar
/Users/dave/.emacs.d/el-get/wl-gravatar/gravatar hides /Users/dave/.emacs.d/el-get/nognus/lisp/gravatar
/Users/dave/.emacs.d/el-get/nognus/lisp/utf7 hides /Users/dave/.emacs.d/el-get/wanderlust/site-lisp/wl/utf7
/Users/dave/.emacs.d/el-get/nognus/lisp/smime hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/smime
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp5 hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-pgp5
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-pgp
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-parse hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-parse
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-gpg hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-gpg
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-def hides /Users/dave/.emacs.d/el-get/semi/site-lisp/semi/pgg-def
/Users/dave/.emacs.d/el-get/nognus/lisp/sha1 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sha1
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl-ntlm hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-ntlm
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl-digest hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-digest
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl-cram hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/sasl-cram
/Users/dave/.emacs.d/el-get/nognus/lisp/ntlm hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/ntlm
/Users/dave/.emacs.d/el-get/nognus/lisp/md4 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/md4
/Users/dave/.emacs.d/el-get/nognus/lisp/hmac-md5 hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hmac-md5
/Users/dave/.emacs.d/el-get/nognus/lisp/hmac-def hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hmac-def
/Users/dave/.emacs.d/el-get/nognus/lisp/hex-util hides /Users/dave/.emacs.d/el-get/flim/site-lisp/flim/hex-util
/Users/dave/.emacs.d/el-get/nognus/lisp/sha1 hides /Applications/Emacs.app/Contents/Resources/lisp/sha1
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg hides /Applications/Emacs.app/Contents/Resources/lisp/pgg
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp5 hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-pgp5
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-pgp hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-pgp
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-parse hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-parse
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-gpg hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-gpg
/Users/dave/.emacs.d/el-get/nognus/lisp/pgg-def hides /Applications/Emacs.app/Contents/Resources/lisp/pgg-def
/Users/dave/.emacs.d/el-get/nognus/lisp/password-cache hides /Applications/Emacs.app/Contents/Resources/lisp/password-cache
/Users/dave/.emacs.d/el-get/nognus/lisp/md4 hides /Applications/Emacs.app/Contents/Resources/lisp/md4
/Users/dave/.emacs.d/el-get/nognus/lisp/hex-util hides /Applications/Emacs.app/Contents/Resources/lisp/hex-util
/Users/dave/.emacs.d/el-get/nognus/lisp/format-spec hides /Applications/Emacs.app/Contents/Resources/lisp/format-spec
/Users/dave/.emacs.d/el-get/nognus/lisp/dns-mode hides /Applications/Emacs.app/Contents/Resources/lisp/textmodes/dns-mode
/Users/dave/.emacs.d/el-get/org-mode/lisp/org hides /Applications/Emacs.app/Contents/Resources/lisp/org/org
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-xoxo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-xoxo
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-wl hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-wl
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-w3m hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-vm hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-vm
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-timer hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-timer
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-table hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-table
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-src hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-src
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-rmail hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-remember hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-remember
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-publish hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-publish
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-protocol hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-plot hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-plot
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-mouse hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-mobile hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-mhe hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-mew hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mew
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-macs hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-macs
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-mac-message hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mac-message
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-list hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-list
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-latex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-latex
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-jsinfo hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-jsinfo
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-irc hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-irc
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-install hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-install
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-inlinetask hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-info hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-info
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-indent hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-indent
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-id hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-id
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-icalendar hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-icalendar
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-html hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-html
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-habit hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-habit
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-gnus hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-freemind hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-freemind
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-footnote hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-feed hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-feed
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-faces hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-faces
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-exp hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-exp-blocks hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-exp-blocks
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-docbook hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-docbook
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-datetree hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-crypt hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-compat hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-compat
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-colview hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-colview
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-clock hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-clock
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-bibtex hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-bbdb hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-attach hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-attach
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-ascii hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-ascii
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-archive hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-archive
/Users/dave/.emacs.d/el-get/org-mode/lisp/org-agenda hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda
/Users/dave/.emacs.d/el-get/nognus/lisp/tls hides /Applications/Emacs.app/Contents/Resources/lisp/net/tls
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl-ntlm hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-ntlm
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl-digest hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-digest
/Users/dave/.emacs.d/el-get/nognus/lisp/sasl-cram hides /Applications/Emacs.app/Contents/Resources/lisp/net/sasl-cram
/Users/dave/.emacs.d/el-get/nognus/lisp/ntlm hides /Applications/Emacs.app/Contents/Resources/lisp/net/ntlm
/Users/dave/.emacs.d/el-get/nognus/lisp/netrc hides /Applications/Emacs.app/Contents/Resources/lisp/net/netrc
/Users/dave/.emacs.d/el-get/nognus/lisp/imap hides /Applications/Emacs.app/Contents/Resources/lisp/net/imap
/Users/dave/.emacs.d/el-get/nognus/lisp/hmac-md5 hides /Applications/Emacs.app/Contents/Resources/lisp/net/hmac-md5
/Users/dave/.emacs.d/el-get/nognus/lisp/hmac-def hides /Applications/Emacs.app/Contents/Resources/lisp/net/hmac-def
/Users/dave/.emacs.d/el-get/nognus/lisp/dns hides /Applications/Emacs.app/Contents/Resources/lisp/net/dns
/Users/dave/.emacs.d/el-get/nognus/lisp/dig hides /Applications/Emacs.app/Contents/Resources/lisp/net/dig
/Users/dave/.emacs.d/el-get/nognus/lisp/uudecode hides /Applications/Emacs.app/Contents/Resources/lisp/mail/uudecode
/Users/dave/.emacs.d/el-get/wanderlust/site-lisp/wl/rfc2368 hides /Applications/Emacs.app/Contents/Resources/lisp/mail/rfc2368
/Users/dave/.emacs.d/el-get/nognus/lisp/hashcash hides /Applications/Emacs.app/Contents/Resources/lisp/mail/hashcash
/Users/dave/.emacs.d/el-get/nognus/lisp/binhex hides /Applications/Emacs.app/Contents/Resources/lisp/mail/binhex
/Users/dave/.emacs.d/el-get/nognus/lisp/yenc hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/yenc
/Users/dave/.emacs.d/el-get/nognus/lisp/utf7 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/utf7
/Users/dave/.emacs.d/el-get/nognus/lisp/starttls hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/starttls
/Users/dave/.emacs.d/el-get/nognus/lisp/spam hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam
/Users/dave/.emacs.d/el-get/nognus/lisp/spam-wash hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-wash
/Users/dave/.emacs.d/el-get/nognus/lisp/spam-stat hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-stat
/Users/dave/.emacs.d/el-get/nognus/lisp/spam-report hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/spam-report
/Users/dave/.emacs.d/el-get/nognus/lisp/smime hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/smime
/Users/dave/.emacs.d/el-get/nognus/lisp/smiley hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/smiley
/Users/dave/.emacs.d/el-get/nognus/lisp/sieve hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve
/Users/dave/.emacs.d/el-get/nognus/lisp/sieve-mode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve-mode
/Users/dave/.emacs.d/el-get/nognus/lisp/sieve-manage hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/sieve-manage
/Users/dave/.emacs.d/el-get/nognus/lisp/score-mode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/score-mode
/Users/dave/.emacs.d/el-get/nognus/lisp/rfc2231 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2231
/Users/dave/.emacs.d/el-get/nognus/lisp/rfc2104 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2104
/Users/dave/.emacs.d/el-get/nognus/lisp/rfc2047 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2047
/Users/dave/.emacs.d/el-get/nognus/lisp/rfc2045 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc2045
/Users/dave/.emacs.d/el-get/nognus/lisp/rfc1843 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/rfc1843
/Users/dave/.emacs.d/el-get/nognus/lisp/qp hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/qp
/Users/dave/.emacs.d/el-get/nognus/lisp/pop3 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/pop3
/Users/dave/.emacs.d/el-get/nognus/lisp/nnweb hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnweb
/Users/dave/.emacs.d/el-get/nognus/lisp/nnvirtual hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnvirtual
/Users/dave/.emacs.d/el-get/nognus/lisp/nntp hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nntp
/Users/dave/.emacs.d/el-get/nognus/lisp/nnspool hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnspool
/Users/dave/.emacs.d/el-get/nognus/lisp/nnrss hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnrss
/Users/dave/.emacs.d/el-get/nognus/lisp/nnoo hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnoo
/Users/dave/.emacs.d/el-get/nognus/lisp/nnnil hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnnil
/Users/dave/.emacs.d/el-get/nognus/lisp/nnml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnml
/Users/dave/.emacs.d/el-get/nognus/lisp/nnmh hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmh
/Users/dave/.emacs.d/el-get/nognus/lisp/nnmbox hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmbox
/Users/dave/.emacs.d/el-get/nognus/lisp/nnmairix hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmairix
/Users/dave/.emacs.d/el-get/nognus/lisp/nnmaildir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmaildir
/Users/dave/.emacs.d/el-get/nognus/lisp/nnmail hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnmail
/Users/dave/.emacs.d/el-get/nognus/lisp/nnir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnir
/Users/dave/.emacs.d/el-get/nognus/lisp/nnimap hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnimap
/Users/dave/.emacs.d/el-get/nognus/lisp/nnheader hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnheader
/Users/dave/.emacs.d/el-get/nognus/lisp/nngateway hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nngateway
/Users/dave/.emacs.d/el-get/nognus/lisp/nnfolder hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnfolder
/Users/dave/.emacs.d/el-get/nognus/lisp/nneething hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nneething
/Users/dave/.emacs.d/el-get/nognus/lisp/nndraft hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndraft
/Users/dave/.emacs.d/el-get/nognus/lisp/nndoc hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndoc
/Users/dave/.emacs.d/el-get/nognus/lisp/nndir hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndir
/Users/dave/.emacs.d/el-get/nognus/lisp/nndiary hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nndiary
/Users/dave/.emacs.d/el-get/nognus/lisp/nnbabyl hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnbabyl
/Users/dave/.emacs.d/el-get/nognus/lisp/nnagent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/nnagent
/Users/dave/.emacs.d/el-get/nognus/lisp/mml2015 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml2015
/Users/dave/.emacs.d/el-get/nognus/lisp/mml1991 hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml1991
/Users/dave/.emacs.d/el-get/nognus/lisp/mml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml
/Users/dave/.emacs.d/el-get/nognus/lisp/mml-smime hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml-smime
/Users/dave/.emacs.d/el-get/nognus/lisp/mml-sec hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mml-sec
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-view hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-view
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-uu hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-uu
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-util hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-util
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-url hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-url
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-partial hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-partial
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-extern hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-extern
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-encode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-encode
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-decode hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-decode
/Users/dave/.emacs.d/el-get/nognus/lisp/mm-bodies hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mm-bodies
/Users/dave/.emacs.d/el-get/nognus/lisp/messcompat hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/messcompat
/Users/dave/.emacs.d/el-get/nognus/lisp/message hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/message
/Users/dave/.emacs.d/el-get/nognus/lisp/mailcap hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mailcap
/Users/dave/.emacs.d/el-get/nognus/lisp/mail-source hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-source
/Users/dave/.emacs.d/el-get/nognus/lisp/mail-prsvr hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-prsvr
/Users/dave/.emacs.d/el-get/nognus/lisp/mail-parse hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/mail-parse
/Users/dave/.emacs.d/el-get/nognus/lisp/legacy-gnus-agent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/legacy-gnus-agent
/Users/dave/.emacs.d/el-get/nognus/lisp/ietf-drums hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/ietf-drums
/Users/dave/.emacs.d/el-get/nognus/lisp/html2text hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/html2text
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-win hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-win
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-vm hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-vm
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-uu hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-uu
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-util hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-util
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-undo hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-undo
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-topic hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-topic
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-sum hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-sum
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-start hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-start
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-srvr hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-srvr
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-spec hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-spec
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-sieve hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-sieve
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-setup hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-setup
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-score hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-score
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-salt hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-salt
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-registry hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-registry
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-range hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-range
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-picon hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-picon
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-msg hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-msg
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-mlspl hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-mlspl
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-ml hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-ml
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-mh hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-mh
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-logic hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-logic
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-kill hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-kill
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-int hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-int
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-group hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-group
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-fun hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-fun
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-ems hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-ems
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-eform hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-eform
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-dup hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-dup
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-draft hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-draft
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-dired hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-dired
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-diary hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-diary
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-demon hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-demon
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-delay hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-delay
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cus hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cus
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cite hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cite
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-cache hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-cache
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-bookmark hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-bookmark
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-bcklg hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-bcklg
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-async hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-async
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-art hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-art
/Users/dave/.emacs.d/el-get/nognus/lisp/gnus-agent hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gnus-agent
/Users/dave/.emacs.d/el-get/nognus/lisp/gmm-utils hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/gmm-utils
/Users/dave/.emacs.d/el-get/nognus/lisp/flow-fill hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/flow-fill
/Users/dave/.emacs.d/el-get/nognus/lisp/ecomplete hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/ecomplete
/Users/dave/.emacs.d/el-get/nognus/lisp/deuglify hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/deuglify
/Users/dave/.emacs.d/el-get/nognus/lisp/compface hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/compface
/Users/dave/.emacs.d/el-get/nognus/lisp/canlock hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/canlock
/Users/dave/.emacs.d/el-get/nognus/lisp/auth-source hides /Applications/Emacs.app/Contents/Resources/lisp/gnus/auth-source
/Users/dave/.emacs.d/el-get/nognus/lisp/time-date hides /Applications/Emacs.app/Contents/Resources/lisp/calendar/time-date
/Users/dave/.emacs.d/el-get/nognus/lisp/parse-time hides /Applications/Emacs.app/Contents/Resources/lisp/calendar/parse-time

Features:
(shadow sort mail-extr emacsbug magit diff-mode log-edit pcvs-util
add-log magit-bisect magit-key-mode shell eieio-custom eieio wid-browse
tree-widget newcomment dabbrev color-theme-zenburn cus-edit apropos
jka-compr multi-isearch vc-git thingatpt smiley gnus-cite gnus-art mm-uu
mml2015 mm-view mml-smime smime password-cache dig nnir gnus-sum
macroexp nnoo gnus-group gnus-undo nnmail mail-source gnus-start
gnus-spec gnus-int message format-spec rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mailabbrev gmm-utils mailheader gnus-win gnus-range
gnus gnus-ems nnheader gnus-util url-http tls url-auth mail-parse
rfc2231 rfc2047 rfc2045 ietf-drums url-gw wl-score ssl elmo-nntp
elmo-sendlog elmo-internal elmo-imap4 time-stamp elmo-net elmo-dop
elmo-cache elmo-map hl-line modb-standard wl-mime mime-edit pgg-parse
mail-utils mailalias mime-setup mail-mime-setup semi-setup mime-pgp
pgg-def mime-play filename mime-image signature wl-spam elmo-spam
elsp-header elsp-generic org-wl bookmark org-mac-message org-habit
org-agenda org-id org-crypt org ob-emacs-lisp ob-tangle ob-ref ob-lob
ob-table org-footnote org-src ob-comint ob-keys ob ob-eval org-pcomplete
pcomplete org-list org-faces org-compat org-entities org-macs cal-menu
calendar cal-loaddefs filladapt wl-demo wl-draft eword-encode
wl-template sendmail wl-news derived wl-address wl-thread wl-action
wl-summary ps-print ps-def lpr wl-refile wl-message elmo-mime
mmelmo-buffer mmelmo-imap compile comint ring mime-view mime-conf calist
semi-def mmimap mime-parse mmbuffer mmgeneric wl-highlight elmo-multi
wl-folder wl wl-e21 wl-util pp elmo-flag elmo-localdir wl-vars
epg-config wl-version elmo elmo-signal elmo-msgdb modb modb-generic
modb-entity mime elmo-util emu invisible inv-23 poem poem-e20 poem-e20_3
utf7 eword-decode mel mime-def alist std11 mcharset mcs-20 mcs-e20 pces
pces-e20 pces-20 broken pcustom elmo-date timezone path-util elmo-vars
poe elmo-version pym static apel-ver product luna zenburn maxframe
system-type-darwin-theme .loaddefs find-func browse-kill-ring
byte-code-cache byte-opt warnings gravatar time-date url-cache url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-util url-parse url-vars mm-util mail-prsvr mailcap org-install
gnus-load info markdown-mode noutline outline yasnippet advice
advice-preload edmacro kmacro help-mode view assoc color-theme wid-edit
el-get autoload help-fns bytecomp byte-compile cl cl-19 dired regexp-opt
easy-mmode paren server ido autorevert delsel cus-start cus-load elhome
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)

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8863: 23.3; Strikethrough won't display on MacOS
  2011-06-14 16:05 bug#8863: 23.3; Strikethrough won't display on MacOS Dave Abrahams
@ 2011-06-18 21:48 ` Chong Yidong
  2011-07-02  2:03   ` Dave Abrahams
  2011-06-22 18:07 ` Alp Aker
  2011-07-26 19:41 ` bug#8863: [PATCH] " Alp Aker
  2 siblings, 1 reply; 8+ messages in thread
From: Chong Yidong @ 2011-06-18 21:48 UTC (permalink / raw)
  To: Dave Abrahams; +Cc: 8863

Dave Abrahams <dave@boostpro.com> writes:

> Title says it all.  Faces with the "strikethrough" property set show up
> as un-struck-through.

Does this (100% untested) patch do the right thing?

*** src/nsfont.m	2011-01-02 23:50:46 +0000
--- src/nsfont.m	2011-06-18 21:48:28 +0000
***************
*** 1188,1193 ****
--- 1188,1207 ----
  /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */
        }
  
+     /* do strike-through */
+     if (face->strike_through_p)
+       {
+ 	float line_y = r.origin.y - 0.5 * font->height;
+         if (face->strike_through_color != 0)
+           [ns_lookup_indexed_color (face->strike_through_color, s->f) set];
+         else
+           [col set];
+         DPSmoveto (context, r.origin.x, line_y);
+         DPSlineto (context, r.origin.x + r.size.width, line_y);
+         if (face->strike_through_color != 0)
+           [col set];
+       }
+ 
      /* do underline */
      if (face->underline_p)
        {





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8863: 23.3; Strikethrough won't display on MacOS
  2011-06-14 16:05 bug#8863: 23.3; Strikethrough won't display on MacOS Dave Abrahams
  2011-06-18 21:48 ` Chong Yidong
@ 2011-06-22 18:07 ` Alp Aker
  2011-07-26 19:41 ` bug#8863: [PATCH] " Alp Aker
  2 siblings, 0 replies; 8+ messages in thread
From: Alp Aker @ 2011-06-22 18:07 UTC (permalink / raw)
  To: 8863, cyd

Chong Yidong writes:

> Does this (100% untested) patch do the right thing?

That will only work on GnuStep; it won't do anything on Cocoa.  Also, it 
will only do strikethrough on char and composite char glyphs.

I'm working on a patch for this and related issues.  (In addition to 
strike-through, the overline face attribute isn't implemented on NS 
either.  Also, underlining only works with char and comp. char glyphs; 
so, e.g., tabs are never underlined.)  I should have it ready next week.






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8863: 23.3; Strikethrough won't display on MacOS
  2011-06-18 21:48 ` Chong Yidong
@ 2011-07-02  2:03   ` Dave Abrahams
  2011-07-02  5:53     ` Alp Aker
  0 siblings, 1 reply; 8+ messages in thread
From: Dave Abrahams @ 2011-07-02  2:03 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 8863

[-- Attachment #1: Type: text/plain, Size: 1193 bytes --]


on Sat Jun 18 2011, Chong Yidong <cyd-AT-stupidchicken.com> wrote:

> Dave Abrahams <dave@boostpro.com> writes:
>
>> Title says it all.  Faces with the "strikethrough" property set show up
>> as un-struck-through.
>
> Does this (100% untested) patch do the right thing?
>
> *** src/nsfont.m	2011-01-02 23:50:46 +0000
> --- src/nsfont.m	2011-06-18 21:48:28 +0000
> ***************
> *** 1188,1193 ****
> --- 1188,1207 ----
>   /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */
>         }
>   
> +     /* do strike-through */
> +     if (face->strike_through_p)
> +       {
> + 	float line_y = r.origin.y - 0.5 * font->height;
> +         if (face->strike_through_color != 0)
> +           [ns_lookup_indexed_color (face->strike_through_color, s->f) set];
> +         else
> +           [col set];
> +         DPSmoveto (context, r.origin.x, line_y);
> +         DPSlineto (context, r.origin.x + r.size.width, line_y);
> +         if (face->strike_through_color != 0)
> +           [col set];
> +       }
> + 
>       /* do underline */
>       if (face->underline_p)
>         {

No, but the enclosed 2 patches, together, seem to.  Would somebody apply
these, please?


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: MacOS strikethrough patch #1 of 2 --]
[-- Type: text/x-patch, Size: 445 bytes --]

--- src/nsterm.h	2011-01-08 17:45:14.000000000 +0000
+++ src/nsterm.h	2011-07-02 01:46:06.000000000 +0000
@@ -435,6 +435,7 @@
   char bold, ital;  /* convenience flags */
   char synthItal;
   float voffset;  /* mean of ascender/descender offsets */
+  float xheight;  /* used to position the strikethrough line */
   XCharStruct max_bounds;
   /* we compute glyph codes and metrics on-demand in blocks of 256 indexed
      by hibyte, lobyte */

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: MacOS strikethrough patch #2 of 2 --]
[-- Type: text/x-patch, Size: 1893 bytes --]

--- src/nsfont.m.old	2011-07-02 01:52:29.000000000 +0000
+++ src/nsfont.m	2011-07-02 01:53:51.000000000 +0000
@@ -840,6 +840,7 @@
     font_info->underwidth = [sfont underlineThickness];
     font_info->size = font->pixel_size;
     font_info->voffset = lrint (hshrink * [sfont ascender] + expand * hd / 2);
+    font_info->xheight = lrint (hshrink * [sfont xHeight] + expand * hd / 2);
 
     /* max bounds */
     font_info->max_bounds.ascent =
@@ -1188,6 +1189,22 @@
 /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */
       }
 
+    /* do strike-through */
+    if (face->strike_through_p)
+      {
+	 float line_y = lrint (r.origin.y - 0.5 * font->xheight);
+        if (face->strike_through_color != 0)
+          [ns_lookup_indexed_color (face->strike_through_color, s->f) set];
+        else
+          [col set];
+        DPSmoveto (context, r.origin.x, line_y);
+        DPSlineto (context, r.origin.x + r.size.width, line_y);
+        if (face->strike_through_color != 0)
+          [col set];
+      }
+    else 
+     [col set];
+
     /* do underline */
     if (face->underline_p)
       {
@@ -1248,6 +1265,23 @@
         CGContextSetTextDrawingMode (gcontext, kCGTextFill);
       }
 
+    if (face->strike_through_p)
+      {
+	 float line_y = lrint (r.origin.y - 0.5 * font->xheight);
+        if (face->strike_through_color != 0)
+          [ns_lookup_indexed_color (face->strike_through_color, s->f) set];
+        else
+          [col set];
+        CGContextBeginPath (gcontext);
+        CGContextMoveToPoint (gcontext, r.origin.x, line_y);
+        CGContextAddLineToPoint (gcontext, r.origin.x + r.size.width, line_y);
+        CGContextStrokePath (gcontext);
+        if (face->strike_through_color != 0)
+          [col set];
+      }
+    else
+      [col set];
+
     if (face->underline_p)
       {
         if (face->underline_color != 0)

[-- Attachment #4: Type: text/plain, Size: 62 bytes --]


-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8863: 23.3; Strikethrough won't display on MacOS
  2011-07-02  2:03   ` Dave Abrahams
@ 2011-07-02  5:53     ` Alp Aker
  2011-07-03  2:27       ` Dave Abrahams
  0 siblings, 1 reply; 8+ messages in thread
From: Alp Aker @ 2011-07-02  5:53 UTC (permalink / raw)
  To: 8863


> Dave Abrahams <dave@boostpro.com> writes:
>
> No, but the enclosed 2 patches, together, seem to.  Would somebody apply
> these, please?

I mentioned some problems with Chong Yidong's suggestion, one of which
still applies here: this patch won't work with stretch or image glyphs
(so, e.g., it won't do strike-through on tab characters).  

Also (something I didn't mention in the earlier post), this uses the
same Quartz drawing API as the existing code for underlining, and so
suffers from a problem that exists in that case as well; this kind of
line-drawing is subject to anti-aliasing effects that will cause lines
whose requested thickness is 1 pixel to appear thicker than that
(specifically, the line-drawing commands in question stroke lines so
that they're centered on their specified paths, and so a line whose
thickness is an odd number of pixels is dithered, making it look
thicker).

Last week I promised a patch that would implement strike-through and
overline face attributes and address problems with the existing
implementation of underlining.  I'll try to finish that up and post it
tomorrow.






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8863: 23.3; Strikethrough won't display on MacOS
  2011-07-02  5:53     ` Alp Aker
@ 2011-07-03  2:27       ` Dave Abrahams
  0 siblings, 0 replies; 8+ messages in thread
From: Dave Abrahams @ 2011-07-03  2:27 UTC (permalink / raw)
  To: 8863


on Sat Jul 02 2011, Alp Aker <alp.tekin.aker-AT-gmail.com> wrote:

>> Dave Abrahams <dave@boostpro.com> writes:
>>
>> No, but the enclosed 2 patches, together, seem to.  Would somebody apply
>> these, please?
>
> I mentioned some problems with Chong Yidong's suggestion, one of which
> still applies here: this patch won't work with stretch or image glyphs
> (so, e.g., it won't do strike-through on tab characters).  
>
> Also (something I didn't mention in the earlier post), this uses the
> same Quartz drawing API as the existing code for underlining, and so
> suffers from a problem that exists in that case as well; this kind of
> line-drawing is subject to anti-aliasing effects that will cause lines
> whose requested thickness is 1 pixel to appear thicker than that
> (specifically, the line-drawing commands in question stroke lines so
> that they're centered on their specified paths, and so a line whose
> thickness is an odd number of pixels is dithered, making it look
> thicker).

On my screen it's just grayscaled.  However, as long as you're in that
code, you might also consider whether there's too much rounding off
(calls to lrint) going on in there.  It certainly did look suspicious
to me, but it worked "well enough" that I wasn't going to mess with it.

> Last week I promised a patch that would implement strike-through and
> overline face attributes and address problems with the existing
> implementation of underlining.  I'll try to finish that up and post it
> tomorrow.

Wow, I missed that post and wasted a day implementing this :(

Thanks for your work on it.  Will you apply this to the 23.3 branch as
well as trunk?

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8863: [PATCH] bug#8863: 23.3; Strikethrough won't display on MacOS
  2011-06-14 16:05 bug#8863: 23.3; Strikethrough won't display on MacOS Dave Abrahams
  2011-06-18 21:48 ` Chong Yidong
  2011-06-22 18:07 ` Alp Aker
@ 2011-07-26 19:41 ` Alp Aker
  2011-07-28 18:26   ` Chong Yidong
  2 siblings, 1 reply; 8+ messages in thread
From: Alp Aker @ 2011-07-26 19:41 UTC (permalink / raw)
  To: 8863; +Cc: Dave Abrahams, Chong Yidong

Dave Abrahams wrote:

> Thanks for your work on it.  Will you apply this to the 23.3 branch as
> well as trunk?

I'm not a committer, so that will be up to whoever decides to apply
the patch.  I should note the code below has only been tested on
24.0.50; I suspect it should work as it on 23.3, but haven't tried it.
 (About the anti-aliasing issue I mentioned before:  Whether it's
noticeable depends on factors like font metrics and the degree of
contrast between background and foreground.  I've done everything with
exact pixel drawing, so it shouldn't be an issue.)

A quick implementation note:  This patch implements strike-through and
overline face attributes on NS. It also implements underlining for
stretch and image glyphs (the existing implementation does underlining
only for char and composite char glyphs).  It also adds support for
the user options underline-minimum-offset,
x-use-underline-position-properties, and x-underline-at-descent-line,
which are currently ignored on NextStep.

Sorry for the delay in posting this.  This patch is large enough that
I need a copyright assignment, which has taken a few weeks.  The
signed papers should have arrived as FSF today, so hopefully the way
will soon be clear to incorporate this code.

2011-07-26  Alp Aker  <alp.tekin.aker@gmail.com>

	Implement strike-through and overline face attributes on
	NextStep.  Extend implemention of underlining to include stretch
	and image glyphs.  Add support for user options
	underline-minimum-offset, x-use-underline-position-properties, and
	x-underline-at-descent-line.
	* nsfont.m (nsfont_open): Use underline position provided by font,
	instead of hard-coded value of 2.
	(nsfont_draw): Remove underlining code.  Call
	ns_draw_text_decoration instead.
	* nsterm.h: Add declaration for ns_draw_text_decoration.
	* nsterm.m (ns_draw_text_decoration): New function for drawing
	underline, overline, and strike-through.
	(ns_dumpglyphs_image, ns_dumpglyphs_stretch): Add call to
	ns_draw_text_decoration. Change treatment of cursor drawing to
	accomodate underlining, etc.

=== modified file 'src/nsfont.m'
--- src/nsfont.m	2011-04-16 03:14:08 +0000
+++ src/nsfont.m	2011-07-25 01:29:36 +0000
@@ -845,7 +845,7 @@
     expand = 0.0;
     hshrink = 1.0;

-    font_info->underpos = 2; /*[sfont underlinePosition] is often
clipped out */
+    font_info->underpos = [sfont underlinePosition];
     font_info->underwidth = [sfont underlineThickness];
     font_info->size = font->pixel_size;
     font_info->voffset = lrint (hshrink * [sfont ascender] + expand * hd / 2);
@@ -1196,20 +1196,7 @@
 /*[context GSSetTextDrawingMode: GSTextFill]; /// not implemented yet */
       }

-    /* do underline */
-    if (face->underline_p)
-      {
-        if (face->underline_color != 0)
-          [ns_lookup_indexed_color (face->underline_color, s->f) set];
-        else
-          [col set];
-        DPSmoveto (context, r.origin.x, r.origin.y + font->underpos);
-        DPSlineto (context, r.origin.x+r.size.width,
r.origin.y+font->underpos);
-        if (face->underline_color != 0)
-          [col set];
-      }
-    else
-      [col set];
+    [col set];

     /* draw with DPSxshow () */
     DPSmoveto (context, r.origin.x, r.origin.y);
@@ -1255,23 +1242,7 @@
         CGContextSetTextDrawingMode (gcontext, kCGTextFill);
       }

-    if (face->underline_p)
-      {
-        if (face->underline_color != 0)
-          [ns_lookup_indexed_color (face->underline_color, s->f) set];
-        else
-          [col set];
-        CGContextBeginPath (gcontext);
-        CGContextMoveToPoint (gcontext,
-                              r.origin.x, r.origin.y + font->underpos);
-        CGContextAddLineToPoint (gcontext, r.origin.x + r.size.width,
-                                r.origin.y + font->underpos);
-        CGContextStrokePath (gcontext);
-        if (face->underline_color != 0)
-          [col set];
-      }
-    else
-      [col set];
+    [col set];

     CGContextSetTextPosition (gcontext, r.origin.x, r.origin.y);
     CGContextShowGlyphsWithAdvances (gcontext, s->char2b + s->cmp_from,
@@ -1287,6 +1258,10 @@
     CGContextRestoreGState (gcontext);
   }
 #endif  /* NS_IMPL_COCOA */
+
+  /* Draw underline, overline, strike-through. */
+  ns_draw_text_decoration (s, face, col, r.size.width, r.origin.x);
+
   return to-from;
 }


=== modified file 'src/nsterm.h'
--- src/nsterm.h	2011-07-08 10:04:23 +0000
+++ src/nsterm.h	2011-07-25 01:29:36 +0000
@@ -825,6 +825,13 @@
                                        float r, float g, float b, float a);
 extern NSPoint last_mouse_motion_position;

+/* From nsterm.m, needed in nsfont.m. */
+#ifdef __OBJC__
+extern void
+ns_draw_text_decoration (struct glyph_string *s, struct face *face,
+                         NSColor *defaultCol, CGFloat width, CGFloat x);
+#endif
+
 #ifdef NS_IMPL_GNUSTEP
 extern char gnustep_base_version[];  /* version tracking */
 #endif

=== modified file 'src/nsterm.m'
--- src/nsterm.m	2011-07-23 08:33:06 +0000
+++ src/nsterm.m	2011-07-25 06:33:54 +0000
@@ -263,8 +263,6 @@
 static void ns_judge_scroll_bars (struct frame *f);
 void x_set_frame_alpha (struct frame *f);

-/* FIXME: figure out what to do with underline_minimum_offset. */
-

 /* ==========================================================================

@@ -2597,6 +2595,107 @@
   return n;
 }

+void
+ns_draw_text_decoration (struct glyph_string *s, struct face *face,
+                         NSColor *defaultCol, CGFloat width, CGFloat x)
+/* --------------------------------------------------------------------------
+   Draw underline, overline, and strike-through on glyph string s.
+   --------------------------------------------------------------------------
*/
+{
+  if (s->for_overlaps)
+    return;
+
+  /* Do underline. */
+  if (face->underline_p)
+    {
+      NSRect r;
+      unsigned long thickness, position;
+
+      /* If the prev was underlined, match its appearance. */
+      if (s->prev && s->prev->face->underline_p
+          && s->prev->underline_thickness > 0)
+        {
+          thickness = s->prev->underline_thickness;
+          position = s->prev->underline_position;
+        }
+      else
+        {
+          struct font *font;
+          unsigned long descent;
+
+          font=s->font;
+          descent = s->y + s->height - s->ybase;
+
+          /* Use underline thickness of font, defaulting to 1. */
+          thickness = (font && font->underline_thickness > 0)
+            ? font->underline_thickness : 1;
+
+          /* Determine the offset of underlining from the baseline. */
+          if (x_underline_at_descent_line)
+            position = descent - thickness;
+          else if (x_use_underline_position_properties
+                   && font && font->underline_position >= 0)
+            position = font->underline_position;
+          else if (font)
+            position = lround (font->descent / 2);
+          else
+            position = underline_minimum_offset;
+
+          position = max (position, underline_minimum_offset);
+
+          /* Ensure underlining is not cropped. */
+          if (descent <= position)
+            {
+              position = descent - 1;
+              thickness = 1;
+            }
+          else if (descent < position + thickness)
+            thickness = 1;
+        }
+
+      s->underline_thickness = thickness;
+      s->underline_position = position;
+
+      r = NSMakeRect (x, s->ybase + position, width, thickness);
+
+      if (face->underline_defaulted_p)
+        [defaultCol set];
+      else
+        [ns_lookup_indexed_color (face->underline_color, s->f) set];
+      NSRectFill (r);
+    }
+
+  /* Do overline. We follow other terms in using a thickness of 1
+     and ignoring overline_margin. */
+  if (face->overline_p)
+    {
+      NSRect r;
+      r = NSMakeRect (x, s->y, width, 1);
+
+      if (face->overline_color_defaulted_p)
+        [defaultCol set];
+      else
+        [ns_lookup_indexed_color (face->overline_color, s->f) set];
+      NSRectFill (r);
+    }
+
+  /* Do strike-through.  We follow other terms for thickness and
+     vertical position.*/
+  if (face->strike_through_p)
+    {
+      NSRect r;
+      unsigned long dy;
+
+      dy = lrint ((s->height - 1) / 2);
+      r = NSMakeRect (x, s->y + dy, width, 1);
+
+      if (face->strike_through_color_defaulted_p)
+        [defaultCol set];
+      else
+        [ns_lookup_indexed_color (face->strike_through_color, s->f) set];
+      NSRectFill (r);
+    }
+}

 static void
 ns_draw_box (NSRect r, float thickness, NSColor *col, char left_p,
char right_p)
@@ -2854,6 +2953,7 @@
   char raised_p;
   NSRect br;
   struct face *face;
+  NSColor *tdCol;

   NSTRACE (ns_dumpglyphs_image);

@@ -2882,10 +2982,7 @@
   else
     face = FACE_FROM_ID (s->f, s->first_glyph->face_id);

-  if (s->hl == DRAW_CURSOR)
-      [FRAME_CURSOR_COLOR (s->f) set];
-  else
-    [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set];
+  [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set];

   if (bg_height > s->slice.height || s->img->hmargin || s->img->vmargin
       || s->img->mask || s->img->pixmap == 0 || s->width !=
s->background_width)
@@ -2923,6 +3020,27 @@
     [img compositeToPoint: NSMakePoint (x, y + s->slice.height)
                 operation: NSCompositeSourceOver];

+  if (s->hl == DRAW_CURSOR)
+    {
+    [FRAME_CURSOR_COLOR (s->f) set];
+    if (s->w->phys_cursor_type == FILLED_BOX_CURSOR)
+      tdCol = ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f);
+    else
+      /* Currently on NS img->mask is always 0. Since
+         get_window_cursor_type specifies a hollow box cursor when on
+         a non-masked image we never reach this clause. But we put it
+         in in antipication of better support for image masks on
+         NS. */
+      tdCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f);
+    }
+  else
+    {
+      tdCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f);
+    }
+
+  /* Draw underline, overline, strike-through. */
+  ns_draw_text_decoration (s, face, tdCol, br.size.width, br.origin.x);
+
   /* Draw relief, if requested */
   if (s->img->relief || s->hl ==DRAW_IMAGE_RAISED || s->hl ==DRAW_IMAGE_SUNKEN)
     {
@@ -2967,12 +3085,27 @@
   NSRect r[2];
   int n, i;
   struct face *face;
+  NSColor *fgCol, *bgCol;

   if (!s->background_filled_p)
     {
       n = ns_get_glyph_string_clip_rect (s, r);
       *r = NSMakeRect (s->x, s->y, s->background_width, s->height);

+      ns_focus (s->f, r, n);
+
+      if (s->hl == DRAW_MOUSE_FACE)
+       {
+         face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
+         if (!face)
+           face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
+       }
+      else
+       face = FACE_FROM_ID (s->f, s->first_glyph->face_id);
+
+      bgCol = ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f);
+      fgCol = ns_lookup_indexed_color (NS_FACE_FOREGROUND (face), s->f);
+
       for (i=0; i<n; i++)
         {
           if (!s->row->full_width_p)
@@ -2998,30 +3131,37 @@
                                       FRAME_PIXEL_WIDTH (s->f));
             }

+          [bgCol set];
+
           /* NOTE: under NS this is NOT used to draw cursors, but we must avoid
              overwriting cursor (usually when cursor on a tab) */
           if (s->hl == DRAW_CURSOR)
             {
-              r[i].origin.x += s->width;
-              r[i].size.width -= s->width;
-            }
+              CGFloat x, width;
+
+              x = r[i].origin.x;
+              width = s->w->phys_cursor_width;
+              r[i].size.width -= width;
+              r[i].origin.x += width;
+
+              NSRectFill (r[i]);
+
+              /* Draw overlining, etc. on the cursor. */
+              if (s->w->phys_cursor_type == FILLED_BOX_CURSOR)
+                ns_draw_text_decoration (s, face, bgCol, width, x);
+              else
+                ns_draw_text_decoration (s, face, fgCol, width, x);
+            }
+          else
+            {
+              NSRectFill (r[i]);
+            }
+
+          /* Draw overlining, etc. on the stretch glyph (or the part
+             of the stretch glyph after the cursor). */
+          ns_draw_text_decoration (s, face, fgCol, r[i].size.width,
+                                   r[i].origin.x);
         }
-
-      ns_focus (s->f, r, n);
-
-      if (s->hl == DRAW_MOUSE_FACE)
-       {
-         face = FACE_FROM_ID (s->f, MOUSE_HL_INFO (s->f)->mouse_face_face_id);
-         if (!face)
-           face = FACE_FROM_ID (s->f, MOUSE_FACE_ID);
-       }
-      else
-       face = FACE_FROM_ID (s->f, s->first_glyph->face_id);
-
-      [ns_lookup_indexed_color (NS_FACE_BACKGROUND (face), s->f) set];
-
-      NSRectFill (r[0]);
-      NSRectFill (r[1]);
       ns_unfocus (s->f);
       s->background_filled_p = 1;
     }
@@ -6556,23 +6696,17 @@
   Vx_toolkit_scroll_bars = Qnil;
 #endif

-  /* these are unsupported but we need the declarations to avoid whining
-     messages from cus-start.el */
   DEFVAR_BOOL ("x-use-underline-position-properties",
 	       x_use_underline_position_properties,
-     doc: /* NOT SUPPORTED UNDER NS.
-*Non-nil means make use of UNDERLINE_POSITION font properties.
+     doc: /*Non-nil means make use of UNDERLINE_POSITION font properties.
 A value of nil means ignore them.  If you encounter fonts with bogus
 UNDERLINE_POSITION font properties, for example 7x13 on XFree prior
-to 4.1, set this to nil.
-
-NOTE: Not supported on Mac yet.  */);
+to 4.1, set this to nil. */);
   x_use_underline_position_properties = 0;

   DEFVAR_BOOL ("x-underline-at-descent-line",
 	       x_underline_at_descent_line,
-     doc: /* NOT SUPPORTED UNDER NS.
-*Non-nil means to draw the underline at the same place as the descent line.
+     doc: /* Non-nil means to draw the underline at the same place as
the descent line.
 A value of nil means to draw the underline according to the value of the
 variable `x-use-underline-position-properties', which is usually at the
 baseline level.  The default value is nil.  */);





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#8863: [PATCH] bug#8863: 23.3; Strikethrough won't display on MacOS
  2011-07-26 19:41 ` bug#8863: [PATCH] " Alp Aker
@ 2011-07-28 18:26   ` Chong Yidong
  0 siblings, 0 replies; 8+ messages in thread
From: Chong Yidong @ 2011-07-28 18:26 UTC (permalink / raw)
  To: Alp Aker; +Cc: Dave Abrahams, 8863

Alp Aker <alptekin.aker@gmail.com> writes:

> I'm not a committer, so that will be up to whoever decides to apply
> the patch.  I should note the code below has only been tested on
> 24.0.50; I suspect it should work as it on 23.3, but haven't tried it.
>
> Sorry for the delay in posting this.  This patch is large enough that
> I need a copyright assignment, which has taken a few weeks.  The
> signed papers should have arrived as FSF today, so hopefully the way
> will soon be clear to incorporate this code.

Committed to trunk, thanks.





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-07-28 18:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-06-14 16:05 bug#8863: 23.3; Strikethrough won't display on MacOS Dave Abrahams
2011-06-18 21:48 ` Chong Yidong
2011-07-02  2:03   ` Dave Abrahams
2011-07-02  5:53     ` Alp Aker
2011-07-03  2:27       ` Dave Abrahams
2011-06-22 18:07 ` Alp Aker
2011-07-26 19:41 ` bug#8863: [PATCH] " Alp Aker
2011-07-28 18:26   ` Chong Yidong

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).