Function: ispell-get-word
ispell-get-word is a byte-compiled function defined in ispell.el.gz.
Signature
(ispell-get-word FOLLOWING &optional EXTRA-OTHERCHARS)
Documentation
Return the word for spell-checking according to ispell syntax.
If optional argument FOLLOWING is non-nil or if ispell-following-word
is non-nil when called interactively, then the following word
(rather than preceding) is checked when the cursor is not over a word.
Optional second argument contains otherchars that can be included in word
many times (see the doc string of ispell-dictionary-alist for details
about otherchars).
Word syntax is controlled by the definition of the chosen dictionary,
which is in ispell-local-dictionary-alist or ispell-dictionary-alist.
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/ispell.el.gz
(defun ispell-get-word (following &optional extra-otherchars)
"Return the word for spell-checking according to ispell syntax.
If optional argument FOLLOWING is non-nil or if `ispell-following-word'
is non-nil when called interactively, then the following word
\(rather than preceding) is checked when the cursor is not over a word.
Optional second argument contains otherchars that can be included in word
many times (see the doc string of `ispell-dictionary-alist' for details
about otherchars).
Word syntax is controlled by the definition of the chosen dictionary,
which is in `ispell-local-dictionary-alist' or `ispell-dictionary-alist'."
(ispell-set-spellchecker-params) ; Initialize variables and dicts alists
(let* ((ispell-casechars (ispell-get-casechars))
(ispell-not-casechars (ispell-get-not-casechars))
(ispell-otherchars (ispell-get-otherchars))
(ispell-many-otherchars-p (ispell-get-many-otherchars-p))
(word-regexp (concat ispell-casechars
"+\\("
(if (not (string= "" ispell-otherchars))
(concat ispell-otherchars "?"))
(if extra-otherchars
(concat extra-otherchars "?"))
ispell-casechars
"+\\)"
(if (or ispell-many-otherchars-p
extra-otherchars)
"*" "?")))
did-it-once prevpt
start end word)
;; find the word
(if (not (looking-at ispell-casechars))
(if following
(re-search-forward ispell-casechars (point-max) t)
(re-search-backward ispell-casechars (point-min) t)))
;; move to front of word
(re-search-backward ispell-not-casechars (point-min) 'start)
(while (and (or (and (not (string= "" ispell-otherchars))
(looking-at ispell-otherchars))
(and extra-otherchars (looking-at extra-otherchars)))
(not (bobp))
(or (not did-it-once)
ispell-many-otherchars-p)
(not (eq prevpt (point))))
(if (and extra-otherchars (looking-at extra-otherchars))
(progn
(backward-char 1)
(if (looking-at ispell-casechars)
(re-search-backward ispell-not-casechars (point-min) 'move)))
(setq did-it-once t
prevpt (point))
(backward-char 1)
(if (looking-at ispell-casechars)
(re-search-backward ispell-not-casechars (point-min) 'move)
(backward-char -1))))
;; Now mark the word and save to string.
(if (not (re-search-forward word-regexp (point-max) t))
(if ispell-check-only
;; return dummy word when just flagging misspellings
(list "" (point) (point))
(user-error "No word found to check!"))
(setq start (copy-marker (match-beginning 0))
end (point-marker)
word (buffer-substring-no-properties start end))
(list word start end))))