[ If <ispell-el-bugs> is not the appropriate address for reporting
XEmacs-specific ispell bugs, please let me know. ]
Has anyone noticed that ispell-comments-and-strings doesn't work under
XEmacs? At least it doesn't work for me, with XEmacs 21.2-b32, ispell
v3.3.
When I type the command in a C mode or a Lisp mode buffer, I get the
following error (backtrace uncompiled intentionally):
Signaling: (error "Unterminated string or comment")
signal(error ("Unterminated string or comment"))
cerror("Unterminated string or comment")
apply(cerror "Unterminated string or comment")
error("Unterminated string or comment")
(if (or (nth 3 state) (nth 4 state)) (error "Unterminated string or
comment"))
)
(let ((start ...)) (setq state (parse-partial-sexp start ... nil nil state ...)) (if (or
... ...) (error "Unterminated string or comment")) (save-excursion (setq done
...)))
)
(if (or (nth 3 state) (nth 4 state)) (let (...) (setq state ...) (if ... ...)
(save-excursion ...)))
)
(while (not done) (setq done t) (setq state (parse-partial-sexp ... ... nil nil state
...)) (if (or ... ...) (let ... ... ... ...)))
)
(let (state done) (while (not done) (setq done t) (setq state ...) (if ... ...)))
)
(lambda nil "Check comments and strings in the current buffer for spelling
errors." (interactive) (goto-char (point-min)) (let (state done) (while ... ... ...
...)))()
call-interactively(ispell-comments-and-strings)
command-execute(ispell-comments-and-strings t)
execute-extended-command(nil)
call-interactively(execute-extended-command)
I don't know enough about parse-partial-sexp to be able to tell
whether the problem is with XEmacs or with ispell; I do have a version
of that function that works fine using the `syntactically-sectionize'
mechanism of XEmacs:
(defun ispell-comments-and-strings ()
(interactive)
(syntactically-sectionize
(lambda (start end context depth)
(when (or (eq context 'string)
(eq context 'comment)
(eq context 'block-comment))
(ispell-region start end)))
(point-min) (point-max)))