Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Common LispによるSKK辞書サーバーとその拡張

License

NotificationsYou must be signed in to change notification settings

tani/cl-skkserv

Repository files navigation

GitHubQuicklisp

概要

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になっていることに注意してください。

(defclassecho-dictionary (dictionary) ())(defmethodconvertappend ((d echo-dictionary) (sstring)) (declare (ignore d)) (list s))(setq*dictionary* (make-instance'echo-dictionary))

例えば、SKKの辞書にEcho辞書を合成したいならSKK辞書を継承して以下のようにすることができます。

(defclassecho-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.

About

Common LispによるSKK辞書サーバーとその拡張

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp