xyzzyでaspellでword単位のスペルチェック

なんだかググっても出てこないので。

準備

  1. aspell.lをゲットaspell.l
  2. aspell.lの441行-442行に、「(interactive)」を追加
  3. .xyzzyに以下のlispを追加
;; Aspell
(import '(ed::aspell ed::*aspell-command* ed::*aspell-language* ed::aspell-region))
(require "aspell")
(setq *aspell-command* "C:/Program\ Files/aspell/bin/aspell.exe -a")
(setq ed::*aspell-language* "en")

; Aspell-word
(defun aspell-word ()
  (interactive "*")
    (save-excursion
      (let (
        ($begin (progn
          (backward-word)
          (point)
        ))
        ($end (progn
          (forward-word)
          (point)))
        )
        (ed::aspell-region $begin $end);aspell-region
      )
    )
  )

(global-set-key #\M-$ 'aspell-word)

これで単語の上でM-$を押せば単語単位のスペルチェックができます。
ってか、word単位の関数あるのに、呼び出し可能じゃないんだよね。

最近lispを勉強しようと思って、prolog-modeなるものを作っていた。色々分かるようになって、やっといじれたよー。
しかし、なんかxyzzylisp処理系って遅くね?特に、バッファの後ろに行くほど処理が遅くなるのはなんでかね。

=追記
ふと思った。aspell-wordから呼び出しているんだから、aspell.lのaspell-region関数がinteractiveでなくても呼び出せそうなんだけど。ファイルスコープから外れると、interactiveじゃないとダメなのかな? よくわからん。