Subject: 24.0.50; query-replace-regexp case-changing functions
From: Tyler Smith <[email-masked]>
To: [email-masked]
Date: Fri, 4 Nov 2011 13:31:07 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

Starting with emacs -Q, enter the following in a buffer:

ALLCAPS lowercase Titlecase

Move point to the beginning of the first word, and do a
query-replace-regexp with the following target:

  \(\sw+\)

and the following replacement:

  \,(capitalize \1)

Expected result:

Allcaps Lowercase Titlecase

What I get instead:

ALLCAPS Lowercase Titlecase

Calling capitalize-word interactively works as expected.

Using query-replace-regexp with upcase instead of capitalize works as
expected, producing:
ALLCAPS LOWERCASE TITLECASE

Using query-replace-regexp with downcase instead of capitalize is also
broken, producing no visible change:

ALLCAPS lowercase Titlecase

In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.24.4)
 of 2011-08-08 on smithty-laptop
Windowing system distributor `The X.Org Foundation', version 11.0.11001000
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_CA.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Fundamental

Minor modes in effect:
  tooltip-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:
c a s e <return> n n n n n <down> <up> <up> <up> <up>
<up> <up> <up> <up> <up> <up> <left> <left> <left>
<left> <left> <left> <left> M-c M-c M-c M-c M-c M-c
M-c <up> <up> <up> <up> <up> <up> <up> <left> <left>
<left> <left> <left> <left> <left> <left> C-M-% <return>
C-g C-a C-M-% <up> <up> <return> <up> <up> <right>
<right> <right> M-d u p c a s e <return> C-g C-M-,
C-M-< <left> <left> <left> <left> <left> <left> <left>
<left> C-M-% <return> C-g <left> <left> <left> <left>
<left> <left> <left> <left> <left> C-M-% <left> <left>
<left> <left> <left> <left> <left> <left> <left> <left>
<left> <left> <left> C-d C-d <up> <up> <return> <up>
<up> <right> <right> <right> M-d d o w n c a s e <return>
n n C-g <up> <up> <left> <left> <left> <left> <left>
<left> C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k
C-k C-k C-k A L L C A P S SPC l o w e r c a s e SPC
t i t l <backspace> <backspace> <backspace> <backspace>
T i t l e C a s e <backspace> <backspace> <backspace>
<backspace> c a s e C-a C-k C-y <return> C-y <return>
C-y C-u <return> C-y C-/ C-/ C-/ C-/ C-/ C-/ C-a <down>
<return> <up> C-M-% <return> y y y C-/ C-/ C-/ C-/
C-/ C-/ <up> <down> C-/ <up> C-M-% <up> <up> <return>
<up> <up> <right> <right> <right> M-d u p c a s e <return>
y y y C-/ C-/ C-/ C-a C-M-% <up> <up> <return> <up>
<up> <right> <right> <right> M-d c a p i t a l i z
e <return> y y y C-/ C-/ C-/ C-/ M-x e w p o <backspace>
<backspace> <backspace> <backspace> r e p o r t <tab>
<return>

Recent messages:
Undo! [4 times]
Redo! [3 times]
Mark set
Replaced 3 occurrences
Undo! [3 times]
Mark set
Replaced 3 occurrences
Undo! [3 times]
Redo!
Auto-saving...

Load-path shadows:
/usr/local/share/emacs/site-lisp/reftex/reftex-vars hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-vars
/usr/local/share/emacs/site-lisp/reftex/reftex-global hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-global
/usr/local/share/emacs/site-lisp/reftex/reftex-cite hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-cite
/usr/local/share/emacs/site-lisp/reftex/reftex-toc hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-toc
/usr/local/share/emacs/site-lisp/reftex/reftex-dcr hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-dcr
/usr/local/share/emacs/site-lisp/reftex/reftex-index hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-index
/usr/local/share/emacs/site-lisp/reftex/reftex-auc hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-auc
/usr/local/share/emacs/site-lisp/reftex/reftex-parse hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-parse
/usr/local/share/emacs/site-lisp/reftex/reftex-ref hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-ref
/usr/local/share/emacs/site-lisp/reftex/reftex-sel hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex-sel
/usr/local/share/emacs/site-lisp/reftex/reftex hides
/usr/local/share/emacs/24.0.50/lisp/textmodes/reftex

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 rect mule-diag help-mode easymenu view time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd 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
dbusbind dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)