Skip to content

tani/cl-skkserv

Repository files navigation

cl-skkserv

GitHub Quicklisp

概要

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で使う場合は~/.emacsで以下を追記してください。

(setq skk-server-host "127.0.0.1")
(setq skk-server-portnum 1178)
Vim

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

リファレンス

各システムはPapyrusによって文芸的プログラミングで作られています。 各ページへの目次は以下の通りです。

ライセンス

GPL第三版及びそれ以降のライセンスのもとで公開された自由ソフトウェアです。 ライセンスドキュメントはこちら

著作権表示

Copyright (c) 2017 TANIGUCHI Masaya ALL Rights Reserved.