Subject: 24.0.50; flyspell-check-previous-highlighted-word does not unmark checked word when inserted in dictionary

From: Gregor Zattler <[email-masked]>
Date: Thu, 24 Jun 2010 18:43:14 +0200

It's not possible to check several misspelled words via  
flyspell-check-previous-highlighted-word.  

Recipe to reproduce the bug:
- start emacs -Q
- M-x flyspell-mode
- type a misspelled word a blank and a second misspelled word and a few
  blanks
- fylspell highlights the misspelled words
- M-x - flyspell-check-previous-highlighted-word
- type 'i' in order to save the second misspelled word as correct in
  your dictionary (sanitize the dictionary afterwards)
- cursor is at eol but the second misspelled word is still marked as
  misspelled
- M-x - flyspell-check-previous-highlighted-word
  in order to check the first misspelled word
- nothing happens except for a message in the echo area: 
  "<second misspelled word> is correct"

Therefore it is not possible to check the first misspelled word after
checking the second.  I consider this to be a bug because it is
necessary to move cursor in order to check the first missspelled word
whilst the whole purpose fo flyspell-check-previous-highlighted-word is
to minimize breaks for spell checking while writing.

Thank you for emacs and flyspell.  
Regards, gregor

In GNU Emacs 24.0.50.1 (i486-pc-linux-gnu, GTK+ Version 2.20.1)
 of 2010-06-19 on elegiac, modified by Debian
 (emacs-snapshot package, version 1:20100619-2)
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
configured using `configure  '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.0.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.0.50/site-lisp:/usr/share/emacs/site-lisp' '--without-compress-info' '--with-x=yes' '--with-x-toolkit=gtk' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed' 'CPPFLAGS=''

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

Major mode: Org

Minor modes in effect:
  gpm-mouse-mode: t
  text-scale-mode: t
  shell-dirtrack-mode: t
  flyspell-mode: t
  global-hl-line-mode: t
  ido-everywhere: t
  show-paren-mode: t
  savehist-mode: t
  recentf-mode: t
  display-time-mode: t
  cua-mode: t
  tooltip-mode: t
  mouse-wheel-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
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent input:
e SPC f ü r SPC e i n e n SPC t e i l SPC d e s s e 
l b e n SPC v e r a n t w o r t l i c h SPC s i n d 
<C-left> <C-left> <C-left> <C-left> <delete> T C-x 
C-s <down> SPC SPC F ü r SPC a l l e SPC a n d e r 
e n SPC G e w e r k s c h a f t s t e i l e SPC <left> 
<left> <left> <left> <left> <left> <left> SPC <backspace> 
C-e <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> <backspace> <C-left> T e i 
l e SPC C-e <C-left> d e r SPC C-e SPC s t e l l t 
SPC s i c h SPC d e r SPC F a l l SPC d a g e g e n 
SPC m e h r SPC a l s SPC e i n SPC A n g r i f f SPC 
e <backspace> d e s SPC K o n z e r n s SPC a u f SPC 
e i n e SPC S t r e i k e n d e SPC d a r , SPC d i 
e SPC u n t e r s t ü t z t SPC w e r d e n SPC m u 
s s SPC ( w e n n SPC d i e SPC g e w SPC s t r e i 
k f ä h i g SPC b l e i b e n SPC w i l l ) . <insert> 
<insert> <escape> <insert> i C-x C-s M-x r e p <tab> 
o <tab> r <tab> <return>

Recent messages:
Personal dictionary saved.
Auto-saving...done
Saving file /home/grfz/projekte/anlaesslich/200805-Einzelhandelsstreik/Emmely-Nachbetrachtung-2010-06-23.org...
Wrote /home/grfz/projekte/anlaesslich/200805-Einzelhandelsstreik/Emmely-Nachbetrachtung-2010-06-23.org
Auto-saving...done
Checking spelling of STREIKFÄHIG...
Personal dictionary saved.
Saving file /home/grfz/projekte/anlaesslich/200805-Einzelhandelsstreik/Emmely-Nachbetrachtung-2010-06-23.org...
Wrote /home/grfz/projekte/anlaesslich/200805-Einzelhandelsstreik/Emmely-Nachbetrachtung-2010-06-23.org
Making completion list... [2 times]

Load-path shadows:
/usr/share/emacs/24.0.50/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
/usr/share/emacs/24.0.50/site-lisp/magit hides /usr/share/emacs/site-lisp/magit
/usr/share/emacs/24.0.50/lisp/vc-git hides /usr/share/emacs/24.0.50/lisp/vc/vc-git
/usr/share/emacs-snapshot/site-lisp/emms/tq hides /usr/share/emacs/24.0.50/lisp/emacs-lisp/tq

Features:
(shadow message sendmail rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev
mail-utils gmm-utils mailheader emacsbug skeleton sh-script mail-extr
ps-mule ps-print ps-def lpr jka-compr debug multi-isearch t-mouse
help-mode appt view mule-util cal-move face-remap tramp-imap tramp-gw
tramp-fish tramp-smb tramp-cache tramp-ftp tramp-cmds tramp auth-source
gnus-util shell comint ring password-cache tramp-compat trampver
executable newcomment pp flyspell ispell org-w3m org-wl org-vm org-rmail
org-mhe org-mew org-irc org-inlinetask org-jsinfo org-infojs org-html
org-exp org-exp-blocks org-agenda org-info org-id org-gnus org-docview
org-crypt org-bibtex org-bbdb org-table server diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs org-protocol org-remember org-datetree
org byte-opt warnings bytecomp byte-compile org-footnote org-src
org-list org-faces org-compat org-entities org-macs noutline outline
remember windmove org-install emms-volume emms-volume-amixer format-spec
emms-tag-editor emms-i18n emms-mark emms-history emms-bookmarks
emms-last-played emms-stream-info emms-metaplaylist-mode emms-lastfm
emms-url url url-proxy url-privacy url-expand url-methods url-history
url-cookie url-util url-parse timezone url-vars mm-util mail-prsvr
mailcap emms-browser sort emms-playlist-sort emms-score emms-player-xine
emms-player-mpd tq emms-playing-time emms-lyrics time-date emms-streams
emms-mode-line emms-cache emms-info-ogginfo emms-info-mp3info emms-info
later-do emms-playlist-mode emms-player-mplayer emms-player-simple
emms-source-playlist emms-source-file emms-setup emms emms-compat
muse-docbook muse-texinfo texnfo-upd texinfo muse-latex muse-html
muse-xml-common cus-edit muse-publish muse-project muse-protocols info
muse-regexps muse muse-nested-tags muse-mode filladapt post derived
hl-line sr-speedbar cl cl-19 speedbar sb-image ezimage dframe assoc
wdired dired-x dired-aux dired ido edmacro kmacro ffap ff-paths
regexp-opt uniquify advice help-fns advice-preload paren savehist
recentf tree-widget wid-edit easymenu avoid time cua-base cus-start
cus-load package reporter muse-autoloads emms-auto emacs-goodies-el
emacs-goodies-custom emacs-goodies-loaddefs easy-mmode 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 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 dbusbind dynamic-setting font-render-setting gtk
x-toolkit x multi-tty emacs)