Subject: bug#12768: closed (Re: bug#12768: 24.1; flyspell highlights words which ispell accepts)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 06 Nov 2012 17:52:02 +0000

Your bug report

#12768: 24.1; flyspell highlights words which ispell accepts

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
12768: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12768
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#12768: 24.1; flyspell highlights words which ispell accepts
From: Agustin Martin <[email-masked]>
To: [email-masked], [email-masked]
Date: Tue, 6 Nov 2012 18:48:19 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

On Thu, Nov 01, 2012 at 04:44:01PM +0200, Eli Zaretskii wrote:
> > Date: Thu, 1 Nov 2012 01:10:11 +0100
> > From: Agustin Martin <[email-masked]>
> > Cc: [email-masked]
> > 
> > Really strange. With your steps I can even reproduce the problem with
> > something as simple as
> > 
> > dnl -- D
> > 
> > If I add something before dnl  I still get the problem.
> > 
> > sdfdsfsdnl -- D
> > 
> > IIf I either break the double dash (no double dashes at all) or the
> > dnl or remove the "D" after the dashes problem disappear
> > 
> > dfnl -- D
> > dnl - - D
> > dnl --
> > 
> > autotest-mode.el is a small file, but II  do not see any hint about
> > what is happening here. Seems to do something strange with double
> > dashes associated with dnl, but I am absolutely clueless, help
> > welcome.
> 
> If you step through ispell-region, you will see that it goes bananas
> because ispell-skip-region-alist has "--+" as part of it, which
> matches the dashes between "dnl" and the text of the comment.  What
> ispell-region does is remove the dashes, and then _prepend_ "dnl"
> (because it's a comment-start string).  The result is that we send
> something like "^dnl FOO" to the speller, and the character positions
> get screwed up, because the characters between "dnl" and "FOO" were
> removed.

I have been dealing with this a bit more and seems I now I understand
things better.

(ispell-region) splits regions to spell in lines, and inside lines in
portions separated by skip-regions, which are sent to ispell pipe. 
When inside a comment, the comment string is added as string prefix
before sending to the ispell pipe  (I guess to make ispell know that
the string is part of a comment).

However ispell understand this prefix in few modes and of course not in
autoconf mode, where `dnl' is spell-checked as any other word (is the only
mode I remember now where comment string is an alphabetic string). For
other modes the comment string is just ignored by ispell for anything than
knowing that string is inside a comment (but properly shifted), and things
work with proper shifts.

However, for autoconf mode `dnl -- D' dnl is checked first and later is
`D' what is sent is `dnl  D' (with a dnl prefix), where `dnl' is checked
again messing up everything because ispell checks dnl where `D' position
is tracked (and expected by ispell.el instead of `dnl').

I have committed a change (r110817) that simply does not prefix the
strings when comment-start when in autoconf-mode (ispell does not support
that prefix anyway).

ispell still does not skip `dnl' as comment header and is shown as a
misspelling, but for everything else seems to work. However, please test
extensively.

> Btw, WIBNI ispell.el had a debug option, which, if set, would collect
> in a special buffer everything we send to the speller and its
> responses.  I find myself adding '(message "sent %s" strin)'
> etc. every time I need to debug the communications between ispell.el
> and the speller program.  WDYT?

I have also added a proof of concept for that (r110816), mostly intended to
be enabled through dedicated wrapper functions that when called create the
debug buffer and enable debugging messages sent through a common function. 
This is still very preliminary, with only `ispell-buffer-with-debug' using
it, but provides some info and as problems get debugged can be extended. 
Suggestions are welcome, even about a complete re-design if really needed.

-- 
Agustin

Subject: 24.1; flyspell highlights words which ispell accepts
From: Reuben Thomas <[email-masked]>
To: [email-masked]
Date: Tue, 30 Oct 2012 13:23:12 +0000
List-Id: <debbugs-submit.debbugs.gnu.org>

For example, "executable's" is highlighted by flyspell, but
ispell-buffer ignores it.

In GNU Emacs 24.1.1 (x86_64-pc-linux-gnu, GTK+ Version 2.24.12)
 of 2012-09-22 on batsu, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.11300000
Configured using:
 `configure '--build' 'x86_64-linux-gnu' '--build' 'x86_64-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var/lib' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1/site-lisp:/usr/share/emacs/site-lisp'
 '--with-crt-dir=/usr/lib/x86_64-linux-gnu' '--with-x=yes'
 '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars'
 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector
 --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall -O2'
 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

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: en_GB.UTF-8
  value of $LC_NUMERIC: en_GB.UTF-8
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=none
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Lua

Minor modes in effect:
  TeX-PDF-mode: t
  flyspell-mode: t
  recentf-mode: t
  show-paren-mode: t
  server-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  iswitchb-mode: t
  icomplete-mode: t
  global-auto-revert-mode: t
  desktop-save-mode: t
  tooltip-mode: t
  mouse-wheel-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
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
c o u n t <backspace> t e r - i n t u i i t i <backspace> 
<backspace> <backspace> t i v e l y SPC a n d SPC a 
n o <backspace> n o y i n g l y . M-q <return> <return> 
I S-SPC s u m p a <backspace> <backspace> <backspace> 
<backspace> y m p a t h i s e SPC w i t h SPC t h e 
SPC <backspace> <backspace> i s SPC f r o m SPC a SPC 
p r o g r a m m <C-backspace> <C-backspace> t h e SPC 
p o i n t SPC o f SPC v i e w SPC o f SPC t h e SPC 
u n d e r l y i n g SPC c o d e C-q ' s SPC s t r u 
c t u r e , SPC b u t SPC i t ' s <backspace> <backspace> 
C-q ' s SPC o d d SPC SPC <backspace> f r o m SPC a 
SPC u i s <backspace> <backspace> s <backspace> s e 
r - i n t e r a c e SPC <backspace> <backspace> <backspace> 
<backspace> f a c e SPC p o i o n t SPC o f <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
n t SPC o f SPC v i e w . M-q C-c C-c y e s <return> 
M-x C-g <help-echo> <down-mouse-1> <mouse-1> <double-down-mouse-1> 
<double-mouse-1> <down-mouse-1> <mouse-1> M-x r e p 
[ o r t <backspace> <backspace> <backspace> <backspace> 
r e t - <backspace> <backspace> <backspace> <backspace> 
o r t - b <backspace> e m , a c s <backspace> <backspace> 
<backspace> <backspace> a c s - b u f <return> <backspace> 
g <return>

Recent messages:
Checking 24 files in /usr/share/emacs/24.1/lisp/cedet...
Checking 57 files in /usr/share/emacs/24.1/lisp/calendar...
Checking 87 files in /usr/share/emacs/24.1/lisp/calc...
Checking 65 files in /usr/share/emacs/24.1/lisp/obsolete...
Checking 1 files in /usr/share/emacs/24.1/leim...
Checking for load-path shadows...done
Auto-saving...done
Sending...
Sending via mail...
Sending...done
Quit

Load-path shadows:
/home/rrt/local/share/emacs/site-lisp/browse-kill-ring hides /usr/share/emacs24/site-lisp/emacs-goodies-el/browse-kill-ring
/home/rrt/local/share/emacs/site-lisp/dict hides /usr/share/emacs24/site-lisp/emacs-goodies-el/dict
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary-init hides /usr/share/emacs24/site-lisp/dictionary-el/dictionary-init
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary hides /usr/share/emacs24/site-lisp/dictionary-el/dictionary
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/link hides /usr/share/emacs24/site-lisp/dictionary-el/link
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/connection hides /usr/share/emacs24/site-lisp/dictionary-el/connection
/usr/share/emacs/site-lisp/golang-mode/go-mode-load hides /usr/share/emacs/24.1/site-lisp/golang-mode/go-mode-load
/usr/share/emacs/site-lisp/golang-mode/go-mode hides /usr/share/emacs/24.1/site-lisp/golang-mode/go-mode
/usr/share/emacs/24.1/site-lisp/cmake-data/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/usr/share/emacs/24.1/site-lisp/cdargs hides /usr/share/emacs/site-lisp/cdargs
/usr/share/emacs/site-lisp/rst hides /usr/share/emacs/24.1/lisp/textmodes/rst
/usr/share/emacs24/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/24.1/lisp/textmodes/ispell
/usr/share/emacs24/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/24.1/lisp/textmodes/flyspell

Features:
(newcomment 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 find-func help-mode view etags preview
prv-emacs info reporter tex-buf font-latex latex tex-style tex noutline
outline sh-script executable multi-isearch make-mode cperl-mode cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars
cc-defs autoconf autoconf-mode flymake compile vc-git face-remap
flyspell smart-quotes lua-mode comint ansi-color ring
auto-dictionary-autoloads c-eldoc-autoloads dictionary-autoloads
diff-git-autoloads dired-isearch-autoloads full-ack-autoloads
guess-style-autoloads kill-ring-search-autoloads magit-autoloads
mv-shell-autoloads tumble-autoloads http-post-simple-autoloads package
tabulated-list completing-help recentf tree-widget wid-edit uniquify
regexp-opt paren server savehist minibuf-eldef iswitchb icomplete
autorevert desktop cus-start cus-load ropemacs pymacs ispell
user-site-loaddefs advice advice-preload yasnippet help-fns derived
edmacro kmacro easymenu assoc cl muse-autoloads go-mode-load
emacs-goodies-el emacs-goodies-custom emacs-goodies-loaddefs easy-mmode
preview-latex tex-site auto-loads 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)

-- 
http://rrt.sc3d.org/