Subject: bug#9212: 24.0.50; Selective display broken in Emacs 24 trunk

From: Anders Lindgren <[email-masked]>
Date: Mon, 1 Aug 2011 09:44:01 +0200

"Selective display" (i.e. a technique used to hide sections of a buffer,
which has been around since, at least, Emacs 18) seems to be broken in
the trunk of Emacs 24.

Steps to verify this:

* Create a new buffer with the following content (where ^M should be the
  actual Carriage Return character, generated by C-q C-m):

alpha^Mbeta^Mgamma
delta

* Activeate selective display using "(setq selective-display t)".

* The following should be displayed:

alpha...
delta

* In the broken Emacs 24 trunk, the following is displayed:

alpha...delta

I noticed that this worked correctly as late as in early 2011.

Note that this will break a number of old, videly used, packaged like
"folding.el".

Sincerely,
    Anders Lindgren

In GNU Emacs 24.0.50.1 (i386-apple-darwin10.8.0, NS apple-appkit-1038.36)
 of 2011-07-31 on macpro.local
Windowing system distributor `Apple', version 10.3.1038
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: nil
  value of $XMODIFIERS: nil
  locale-coding-system: nil
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  shell-dirtrack-mode: t
  eldoc-mode: t
  global-auto-revert-mode: t
  global-cwarn-mode: t
  minibuffer-electric-file-mode: t
  recentf-mode: t
  msb-mode: t
  display-time-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
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-s C-s C-s C-s C-s C-s C-s C-a C-x p <help-echo> <down-mouse-1>
<mouse-1> C-x C-g C C-x u C-x C-f C h a <tab> <return>
<escape> < C-s s e l e c t i v e - d C-a <escape> <
C-s d i s p l a y C-s C-s C-s C-s C-s C-s C-s C-s C-s
C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s C-s
C-s C-a C-x C-f <M-backspace> s r <tab> C h <tab> n
<tab> <return> C-s s e l e c r <backspace> t i v e
- <backspace> . * d <backspace> <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
<backspace> <backspace> <backspace> <backspace> <backspace>
C-s d i s p l a y C-a <escape> < C-s d i s p l a y
C-s C-s C-s C-s C-s C-s C-s C-a <down-mouse-1> <mouse-1>
C-x C-f ~ / t , <backspace> m p - <backspace> / s e
l e c t i v e - <backspace> d i s p ö a y . t x t <return>
V i s i b l 1 <backspace> <backspace> <backspace> <backspace>
<backspace> <backspace> <backspace> a l p h a C-q RET
b e t a C-q RET g a m m a C-q C-j d e l t a <return>
<escape> x d e <backspace> <backspace> s e l e c <tab>
i <tab> <backspace> <backspace> i <tab> <backspace>
<tab> C-g <escape> <escape> ( s e t q SPC s e l e v
t <backspace> <backspace> v <backspace> c t i M-- M--
+ <backspace> - d M-- SPC t ) <return> <escape> <escape>
<up> C-e <left> <backspace> n i l <return> <up> C-x
C-s <help-echo> <down-mouse-1> <mouse-1> <escape> x
r e p o <tab> r t <tab> <return>

Recent messages:
Mark set
Mark saved where search started
(New file)
Quit
Scanning for dabbrevs...100% [2 times]
t
nil
Saving file /Users/anders/tmp/selectivedispöay.txt...
Wrote /Users/anders/tmp/selectivedispöay.txt
Making completion list...

Load-path shadows:
~/emacs/lisp/table hides
/Volumes/HD3/build/emacs2/trunk/nextstep/Emacs.app/Contents/Resources/lisp/textmodes/table
~/emacs/lisp/ruby-mode hides
/Volumes/HD3/build/emacs2/trunk/nextstep/Emacs.app/Contents/Resources/lisp/progmodes/ruby-mode
~/emacs/src/asm-mode-new/src/asm-mode hides
/Volumes/HD3/build/emacs2/trunk/nextstep/Emacs.app/Contents/Resources/lisp/progmodes/asm-mode

Features:
(shadow sort gnus-util mail-extr message format-spec rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mailabbrev mail-utils gmm-utils mailheader
emacsbug dabbrev pp vc-svn shell pcomplete grep compile multi-isearch
follow subword ctypes my-end-of-buffer-log doxygen c-electric-operator
c-indent-operator vc-dispatcher vc-bzr add-log help-mode debug eldoc
ps-print ps-def lpr autorevert folding-isearch folding view rdebug cwarn
prepaint cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs tempo edg-mode tags-extra etags split-nways
toggle-file-read-only lockdir uniquify ange-ftp comint regexp-opt ring
paren mic-paren iso-insert minibuf-elfile easy-mmode recentf tree-widget
wid-edit easymenu msb edmacro kmacro warnings disp-table time advice
help-fns advice-preload cl time-date tooltip ediff-hook vc-hooks
lisp-float-type mwheel ns-win tool-bar dnd fontset image fringe
lisp-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 loaddefs button faces cus-face files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process ns multi-tty
emacs)