unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#728: 23.0.60; flyspell checking is sometimes silently disabled
@ 2008-08-15 22:20 Markus Triska
  2008-08-16  4:12 ` Stefan Monnier
  0 siblings, 1 reply; 6+ messages in thread
From: Markus Triska @ 2008-08-15 22:20 UTC (permalink / raw)
  To: emacs-pretest-bug


Sometimes in flyspell-mode, the mode line still says "Fly", but no
more flychecking is actually performed. I cannot yet reproduce it
reliably; however, if you add the following to your .emacs:

   (defun my-flyspell-check ()
     (when flyspell-mode
       (unless (memq 'flyspell-post-command-hook post-command-hook)
         (with-current-buffer (get-buffer-create "flywarn")
           (insert "flychecking inactive despite flyspell-mode!\n"))
         (display-buffer  "flywarn"))))

   (setq flycheck-timer (run-with-timer 0 0.5 'my-flyspell-check))

you will be informed when flyspell mode is superficially active, but
no checking is actually performed. I only encountered the problem once
since I have the above code in my .emacs, and then I also saw:
"Invalid search bound (wrong side of point)" in *Messages*, which I
previously probably missed. Thus I think this could for example happen
when switching buffers or using the minibuffer at the wrong time.

It is clear that flyspell-post-command-hook must be removed from
post-command-hook in case of errors; if the error is hard to catch in
the hook, I would already find it an improvement if flyspell mode were
cleanly disabled (existing underlines, mode line, ...) in such cases.

In GNU Emacs 23.0.60.1 (i386-apple-darwin8.11.1, GTK+ Version 2.12.9)
 of 2008-08-15 on mt-computer.local
Windowing system distributor `The XFree86 Project, Inc', version 11.0.40400000
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.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: nil
  default-enable-multibyte-characters: t







^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#728: 23.0.60; flyspell checking is sometimes silently disabled
  2008-08-15 22:20 Markus Triska
@ 2008-08-16  4:12 ` Stefan Monnier
  0 siblings, 0 replies; 6+ messages in thread
From: Stefan Monnier @ 2008-08-16  4:12 UTC (permalink / raw)
  To: Markus Triska; +Cc: emacs-pretest-bug, 728

> no checking is actually performed. I only encountered the problem once
> since I have the above code in my .emacs, and then I also saw:
> "Invalid search bound (wrong side of point)" in *Messages*, which I

You need to try and track down the porigian of this message.  It may
be due to flyspell but it can also be due to something else: if there's
a bug in one of the post-command-hooks, post-command-hook is set to nil
(hence *all* post-command-hooks are disabled).


        Stefan






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#728: 23.0.60; flyspell checking is sometimes silently disabled
@ 2008-08-21 23:25 Chong Yidong
  2008-08-22  2:15 ` Markus Triska
  0 siblings, 1 reply; 6+ messages in thread
From: Chong Yidong @ 2008-08-21 23:25 UTC (permalink / raw)
  To: Markus Triska; +Cc: 728

> Sometimes in flyspell-mode, the mode line still says "Fly", but no
> more flychecking is actually performed. I cannot yet reproduce it
> reliably

Hi Markus,

Have you found a way to track down the problem causing this bug?






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#728: 23.0.60; flyspell checking is sometimes silently disabled
  2008-08-21 23:25 bug#728: 23.0.60; flyspell checking is sometimes silently disabled Chong Yidong
@ 2008-08-22  2:15 ` Markus Triska
  2008-09-08 23:18   ` Markus Triska
  0 siblings, 1 reply; 6+ messages in thread
From: Markus Triska @ 2008-08-22  2:15 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 728

Chong Yidong <cyd@stupidchicken.com> writes:

> Have you found a way to track down the problem causing this bug?

I have set debug-on-error to t, so the next time I see this problem, I
hope to catch which function raises the error. I already know that it is
either preview-move-point (from AUCTeX) or flyspell-post-command-hook.

Thus, especially if an AUCTeX user reads this: If you want to help to
debug this problem, please add the following to your .emacs:

   (defun my-flyspell-check ()
     (when flyspell-mode
       (unless (memq 'flyspell-post-command-hook post-command-hook)
         (with-current-buffer (get-buffer-create "flywarn")
           (insert "flychecking inactive despite flyspell-mode!\n"))
         (display-buffer  "flywarn"))))

   (setq flycheck-timer (run-with-timer 0 0.5 'my-flyspell-check))

and it will warn you when Flyspell is no longer really active.

Also, as I mentioned: I find it fair enough that Flyspell is disabled
when there are errors; I only wish that there were a general mechanism
to disable it in a cleaner way in case of errors, i.e., existing
underlines should be removed, the mode line should reflect that it is no
longer active etc. In short, when flyspell-post-command-hook must be
removed from post-command-hook, also (flyspell-mode 0) or anything
equivalent should be done. Analogously for some other modes (linum.el is
another example, where errors in a custom linum-format function should
make Emacs disable the minor mode completely, thus removing it from
other hooks as well).






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#728: 23.0.60; flyspell checking is sometimes silently disabled
  2008-08-22  2:15 ` Markus Triska
@ 2008-09-08 23:18   ` Markus Triska
  2008-09-14 18:33     ` Markus Triska
  0 siblings, 1 reply; 6+ messages in thread
From: Markus Triska @ 2008-09-08 23:18 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 728


The error occurs in flyspell-post-command-hook. To reproduce:

1) Install the latest AUCTeX (11.85), and let .emacs consist only of:

   (load "auctex.el" nil t t)

2) Let sat.tex ( http://www.logic.at/prolog/sat.tex ) consist of:

\maketitle
    \includegraphics[scale=0.8]
%       \hline
  
%   \begin{itemize}
%     \hspace{1cm}\hbox{\begin{tabular}
%       $a$ & $b$ & $c$ & $d$ \\

   without leading or trailing whitespace.

3) When you now do:

   $ emacs sat.tex -f flyspell-mode

   and press:

   M-g M-g 3 RET C-s $

   you get:

   Error in post-command-hook: (error Invalid search bound (wrong side
   of point))

   Alternatively, you can also press for example:

   C-n C-n C-p C-n C-n C-n C-n C-n C-n C-p






^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#728: 23.0.60; flyspell checking is sometimes silently disabled
  2008-09-08 23:18   ` Markus Triska
@ 2008-09-14 18:33     ` Markus Triska
  0 siblings, 0 replies; 6+ messages in thread
From: Markus Triska @ 2008-09-14 18:33 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 728


The following patch fixes this problem for me:

2008-09-14  Markus Triska  <markus.triska@gmx.at>

	* textmodes/flyspell.el (flyspell-math-tex-command-p): Always
	catch errors raised in `texmathp'.
	(flyspell-tex-math-initialized): Remove.

diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el
index 47297c9..4296861 100644
--- a/lisp/textmodes/flyspell.el
+++ b/lisp/textmodes/flyspell.el
@@ -1166,35 +1166,19 @@ Mostly we check word delimiters."
 	      res))))))))
 
 ;;*---------------------------------------------------------------------*/
-;;*    flyspell-tex-math-initialized ...                                */
-;;*---------------------------------------------------------------------*/
-(defvar flyspell-tex-math-initialized nil)
-
-;;*---------------------------------------------------------------------*/
 ;;*    flyspell-math-tex-command-p ...                                  */
 ;;*    -------------------------------------------------------------    */
-;;*    This function uses the texmathp package to check if (point)      */
-;;*    is within a tex command. In order to avoid using                 */
-;;*    condition-case each time we use the variable                     */
-;;*    flyspell-tex-math-initialized to make a special case the first   */
-;;*    time that function is called.                                    */
+;;*    This function uses the texmathp package to check if point        */
+;;*    is within a TeX math environment. `texmathp' can yield errors    */
+;;*    if the document is currently not valid TeX syntax.               */
 ;;*---------------------------------------------------------------------*/
 (defun flyspell-math-tex-command-p ()
   (when (fboundp 'texmathp)
-    (cond
-     (flyspell-check-tex-math-command
-      nil)
-     ((eq flyspell-tex-math-initialized t)
-      (texmathp))
-     ((eq flyspell-tex-math-initialized 'error)
-      nil)
-     (t
-      (setq flyspell-tex-math-initialized t)
+    (if flyspell-check-tex-math-command
+        nil
       (condition-case nil
           (texmathp)
-        (error (progn
-                 (setq flyspell-tex-math-initialized 'error)
-                 nil)))))))
+        (error nil)))))
 
 ;;*---------------------------------------------------------------------*/
 ;;*    flyspell-tex-command-p ...                                       */






^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2008-09-14 18:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-21 23:25 bug#728: 23.0.60; flyspell checking is sometimes silently disabled Chong Yidong
2008-08-22  2:15 ` Markus Triska
2008-09-08 23:18   ` Markus Triska
2008-09-14 18:33     ` Markus Triska
  -- strict thread matches above, loose matches on Subject: below --
2008-08-15 22:20 Markus Triska
2008-08-16  4:12 ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).