cl-skkserv はSKKに影響を受けた日本語入力システムです。 既存のSKKサーバーとの互換性を保ちながらCommon Lispによるインテグレーションを可能にします。
cl-skkservはSKKサーバーとその辞書機能が完全に分離しており動的に辞書機能を書き換えることが可能です。 これにより辞書ファイルを事前に合成しておく必要がなくなります。 更にGoogleのCGIや他のSKKサーバーでさえ辞書として使うことができます。
Common Lisp開発ツールであるRoswellを使うことで以下のように簡単に導入できます。
$ ros install cl-skkserv # 安定版 (Quicklisp)
$ ros install tani/cl-skkserv # 開発版 (Nightly)
Nix Flake を使うことで以下のようにも実行できます。
$ nix run github:tani/cl-skkserv
$ skkserv start # skkservを起動する
$ skkserv stop # skkservを停止する
~/.skkservrc
で編集することができます。以下に一例を示します。
(in-package :skkserv-user)
(setf *dictionary* (make-instance 'skk-dictionary :pathname #p"/path/to/dictionary"))
Emacsで使う場合は~/.emacs
で以下を追記してください。
(setq skk-server-host "127.0.0.1")
(setq skk-server-portnum 1178)
Vimで使う場合は~/.vimrc
で以下を追記してください。
let g:eskk#server = {
\ 'host': 'localhost',
\ 'port': 1178,
\}
すべての辞書はCLOSによって管理されており、必ずDICTIONARYクラスを継承しconvertメソッドが定義されています。 もしあなたが新しい辞書を作りたい場合はDICTIONARYクラスを継承しconvertメソッドを定義したクラスを作ることで辞書を作ることができます。
以下は入力をそのまま候補として返すEcho辞書の例です。 メソッドコンビネーションがappendになっていることに注意してください。
(defclass echo-dictionary (dictionary) ())
(defmethod convert append ((d echo-dictionary) (s string)) (declare (ignore d)) (list s))
(setq *dictionary* (make-instance 'echo-dictionary))
例えば、SKKの辞書にEcho辞書を合成したいならSKK辞書を継承して以下のようにすることができます。
(defclass echo-and-skk-dictionary (echo-dictionary skk-dictionary) ()) ;; skk-dicitonary はdictionaryクラスのサブクラスです。
(setq *dictionary* (make-instance 'echo-and-skk-dictionary :pathname #p"/path/to/dictionary"))
また、DICTIONARYクラスのサブクラスのインスタンス同士を合成するMIXED-DICTIONARYクラスを使うこともできます。
(defvar skk (make-instance 'skk-dictionary :pathname #p"/path/to/dictionary"))
(defvar echo (make-instance 'echo-dictionary))
(setq *dictionary* (make-instance 'mixed-dictionary :dictionaries (list skk echo)))
cl-skkservで既に定義されている辞書としては以下のクラスがあります。
- dictionary
- skk-text-dictionary
- skk-dictionary
- skk-lisp-dictionary
- skk-dictionary
- skk-pattern-dictionary
- skk-dictionary
- google-ime-dictionary
- mixed-dictionary
- proxy-dictionary
- skk-text-dictionary
各システムはPapyrusによって文芸的プログラミングで作られています。 各ページへの目次は以下の通りです。
GPL第三版及びそれ以降のライセンスのもとで公開された自由ソフトウェアです。 ライセンスドキュメントはこちら。
Copyright (c) 2017 TANIGUCHI Masaya ALL Rights Reserved.