emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

sit-for (detect_input_pending ?) and postfix input methods.


From: Michael Cadilhac
Subject: sit-for (detect_input_pending ?) and postfix input methods.
Date: Sun, 02 Oct 2005 13:54:23 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

   Hi the list !

   I've an annoying bug with flyspell which is related to sit-for.

   The point is that flyspell try to correct me whenever I hit a touch
   which has  postfix combination, and  not only when I  hit delimiter
   keys.

   After little investigation, this bad result is caused by : 

(defun flyspell-check-word-p ()
  "Return t when the word at `point' has to be checked.
The answer depends of several criteria.
Mostly we check word delimiters."
  (cond
   [...]
   ((symbolp this-command)
    (cond
     ((get this-command 'flyspell-deplacement)
      (not (eq flyspell-previous-command this-command)))
     ((get this-command 'flyspell-delayed)
      ;; the current command is not delayed, that
      ;; is that we must check the word now
      (sit-for flyspell-delay))
   [...]

  More precisely the `sit-for'.

For a test-case :

(defun test-case-after-change (a b c)
  (if (sit-for 3)
      (message "sit-for: t")
    (message "sit-for: nil")))

(defun test-case ()
  (interactive)
  (set (make-local-variable 'after-change-functions)
       '(test-case-after-change)))

With a buffer  `foo', M-x test-case RET and then  with no input method
specified, just  hit repeatedly (but  don't stay on the  touch), let's
say, `u'.

You'll have something like

sit-for: nil [14 times]
sit-for: t

in your *Messages* buffer. This result is expected : sit-for is
interrupted and return nil, then the last `u' produce a successful
sit-for.

Now, clear `foo', and M-x set-input-method RET latin-1-postfix RET

Now do the same (with `u', as it has suffix options), and it'll result
in:

sit-for: t [14 times]

Outch ! `sit-for' exits with `t', what a mess !

I think this is a bug  of the C function `detect_input_pending' or the
way input-method are managed, can you reproduce it ?

-- 
    Michael Cadilhac, a.k.a. Micha [mika] |
                    Epita/LRDE promo 2007 |  Please note that you should
  2 rue de la Convention | 08.70.65.13.14 |  s/address@hidden/@/ my mail 
address.
94270 Le Kremlin Bicetre | 06.23.20.31.30 |

Attachment: pgp7sN1MtZGmX.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]