Subject: bug#15614: 24.3.50; conflict between quail and flyspell

From: Sébastien Gross <[email-masked]>
Date: Tue, 15 Oct 2013 01:42:38 +0200

Hello,

I noticed an incompatibility between both quail and flyspell modes.

I do use the "french-alt-postfix" mode to handle post-fixed accents in
French documents, and I use flyspell to prevent me from typos.

Now let's say I want to type "là" (which is the French for "here" in
English, but that not the point here), I am used to type:

  <l><a><`>

which worked nicely until a few weeks ago.

Now I need to type:

  <l><a><`><space>

which gives me "là " (notice the tailing space here).

If I only want "là" (with no tailing space) I can also type
<l><a><`><right>, which is not pretty handy.

To reproduce that behavior one can run Emacs with no extra init scripts
(emacs -Q) and open a brand new buffer and simply run:

  M-x eval-expression RET
  (progn (set-input-method "french-alt-postfix") (flyspell-mode)) RET

Make sure you have a complete working aspell system installed.  An you
can try to type "là" using <l><a><`>. You will notice you need type an
extra keystroke to get "là" displayed in the buffer.

Now let's try (in an other new buffer):

    M-x eval-expression RET (set-input-method "french-alt-postfix") RET

and start typing: <l><a><`>
You will see that "là" is correctly displayed in the buffer without the
need of an extra keystroke.

Thus using flyspell changes the behavior of quail input methods (at
least "french-alt-postfix").

I narrowed down between 2 commits from Emacs git repository found at
git://git.savannah.gnu.org/emacs.git to bisect. It comes up that the bug
(or the behavior change) has been introduced on Fri Jul 5 20:10:54 2013
-0400.

 commit edce34590594a9801ce6bd82c4a60b3788b7af25
 Author: Stefan Monnier <[email-masked]>
 Date:   Fri Jul 5 20:10:54 2013 -0400

     * lisp/subr.el (read-quoted-char): Use read-key.
     (sit-for): Let read-event decode tty input.

The previous commit:

 commit 3332d04ebcebcc3f3934bb78f6ba5906ba0af72c
 Author: Paul Eggert <[email-masked]>
 Date:   Fri Jul 5 09:58:01 2013 -0700

 Remove duplicate #include directives.

Does not have that behavior.

The complete bisect log is:

git bisect start '--no-checkout'
git bisect good a3263d13f49ccb0ad1d98af90084b21e364c4c91
git bisect bad d920494e0a764570c8a927edddae85356175b098
git bisect good d8fa6bbff358a94d4e39502515690f35081c5d0a
git bisect good 74db2df0b032951e68e80ba3d4ce4e9757ba3501
git bisect good 2c28e941986155403bab1444a8dc11a2728df1ab
git bisect good a97d492ea996463437c84154cc4e534e912ad4c0
git bisect good 1f5f50f7da287910b9837f39d778558026c1fcd8
git bisect good e539ac27851f2bf19723d058412cf9ed08a41e1a
git bisect good 305e4a6734295fe197a99a7ec2177af653599487
git bisect good c813f2fb73e2b42600402826dda200f90dd8ffa6
git bisect good afbd6910602a98eda088d23600563a41f63881f3
git bisect good f1494e74fcee39928b82a871869d4557b91d8d3c
git bisect bad edce34590594a9801ce6bd82c4a60b3788b7af25
git bisect good 3332d04ebcebcc3f3934bb78f6ba5906ba0af72c

Which gives:
edce34590594a9801ce6bd82c4a60b3788b7af25 is the first bad commit
commit edce34590594a9801ce6bd82c4a60b3788b7af25
Author: Stefan Monnier <[email-masked]>
Date:   Fri Jul 5 20:10:54 2013 -0400

    * lisp/subr.el (read-quoted-char): Use read-key.
    (sit-for): Let read-event decode tty input.

:040000 040000 76c3136347166a8b17cd1c07ba90f42e95018d98 34990dfc87d1cd2aca7830ac8471afefb9e57fdd M	lisp
:040000 040000 b11569dfd8ff484bf04305c197e14b0b29de04ff 7f0e1b1b36fd3c058ca9f7afed698fcecd3216fa M	src

Hope that help

Thanks in advance.

Sébastien Gross

In GNU Emacs 24.3.50.1 (x86_64-apple-darwin, NS apple-appkit-1187.39, git sha1 f2c1e24)
 of 2013-09-24 on scrat
Windowing system distributor `Apple', version 10.3.1187
Configured using:
 `configure --build=x86_64-apple-darwin --without-dbus --with-ns
 'CFLAGS= -pipe -march=nocona''

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

Major mode: Emacs-Lisp

Minor modes in effect:
  flyspell-mode: t
  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-x C-f C-a C-k ~ / . e m <tab> / t e s <tab> <return> 
<escape> > <backspace> C-x C-e <return> <return> l 
a a <return> l a SPC <return> l a <right> <return> 
<escape> x r e p o r <tab> <return>

Recent messages:
Using /Users/renard/.emacs.d/init.el
For information about GNU Emacs and the GNU system, type C-h C-a.
Mark set
Loading quail/latin-alt...done
Starting new Ispell process [/usr/local/bin/aspell::default] ...
t
call-interactively: End of buffer

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec 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 flyspell ispell quail help-mode easymenu vc-git
site-start 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 ns
multi-tty emacs)

-- 
Sébastien Gross