2013年9月5日

ddskk 15.1 on Ubuntu 12.04 LTS

* ddskk 15.1 on Ubuntu 12.04 LTS
** インストール
通常より、小さい辞書を使っている。
===
cd ~/app
wget http://openlab.ring.gr.jp/skk/maintrunk/ddskk-15.1.tar.gz
wget http://openlab.ring.gr.jp/skk/maintrunk/ddskk-15.1.tar.gz.md5
md5sum
-c ddskk-15.1.tar.gz.md5
tar xzvf ddskk-15.1.tar.gz
cd ddskk-15.1/
make what-where
cd dic/
wget http://openlab.jp/skk/dic/SKK-JISYO.ML.gz
# wget http://openlab.ring.gr.jp/skk/skk/dic/SKK-JISYO.L
# wget http://openlab.jp/skk/dic/SKK-JISYO.jinmei.gz
# wget http://openlab.jp/skk/dic/SKK-JISYO.geo.gz
# wget http://openlab.jp/skk/dic/SKK-JISYO.propernoun.gz
# wget http://openlab.jp/skk/dic/SKK-JISYO.station.gz
# wget http://openlab.jp/skk/dic/SKK-JISYO.JIS3_4.gz
gunzip *.gz
~/app/ddskk-15.1/etc/skk2cdb.py SKK-JISYO.ML.cdb SKK-JISYO.ML
cd .. && sudo paco -D make install
===
** 注意
パッケージの
===
sudo aptitude install ddskk
===

だと14.3-1と古いので、新しいのを持ってこないと emacs24 では動かない。

cdb の作り方は SKK-JISYO.L 以外だとあまり載ってないが、引数

===
hoge/ddskk-15.1/etc/skk2cdb.py hoge.cdb hoge
===

にすれば、作成できる事が etc/skk2cdb.py に書いてある。pythonが必要なの
で注意(後述のエラー参照)。

make にアンインストールオプションが (Makefile を見る限り) 無いので、 paco
を噛ませてある。
** emacs での設定
*** 設定
以下を評価して、sticky も一緒に設定してしまう。
#+BEGIN_SRC emacs-lisp :results silent
(package-install 'sticky)
#+END_SRC
以下設定ファイル(init-loader-x.elを使用している点に注意)
#+BEGIN_SRC emacs-lisp :results silent :tangle ~/.emacs.d/inits/lin-50ddskk.el
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-
;; (find-file "~/app/ddskk-15.1/etc/dot.emacs")

;; @@ keybind
(setq orig-binding (key-binding "\C-j"))
(progn
(global-set-key "\C-j" nil)
(global-set-key "\C-j" 'skk-mode)
)
;; (global-set-key "\C-j" orig-binding)


;; @@ 基本の設定

;; カタカナ/ひらがな キーで SKK を起動する
(global-set-key [hiragana-katakana] 'skk-mode)

;; ~/.skk にいっぱい設定を書いているのでバイトコンパイルしたい
(setq skk-byte-compile-init-file t)
;; 注) 異なる種類の Emacsen を使っている場合は nil にします

;; SKK を Emacs の input method として使用する
;; C-\ で DDSKK が起動します
(setq default-input-method
"japanese-skk" ; (skk-mode 1)
;; "japanese-skk-auto-fill" ; (skk-auto-fill-mode 1)
)

;; SKK を起動していなくても、いつでも skk-isearch を使う
(setq skk-isearch-mode-enable 'always)

;; @@ 応用的な設定

;; migemo を使うから skk-isearch にはおとなしくしていて欲しい
(setq skk-isearch-start-mode 'latin)

;; YaTeX のときだけ句読点を変更したい
(add-hook 'yatex-mode-hook
(lambda ()
(require 'skk)
(setq skk-kutouten-type 'en)))

;; 文章系のバッファを開いた時には自動的に英数モード(「SKK」モード)に入る
(let ((function #'(lambda ()
(require 'skk)
(skk-latin-mode-on))))
(dolist (hook '(find-file-hooks
;; ...
mail-setup-hook
message-setup-hook))
(add-hook hook function)))

;; Emacs 起動時に SKK を前もってロードする
(setq skk-preload t)
;; 注) skk.el をロードするだけなら (require 'skk) でもよい。上記設定の
;; 場合は、skk-search-prog-list に指定された辞書もこの時点で読み込んで
;; 準備する。Emacs の起動は遅くなるが,SKK を使い始めるときのレスポンス
;; が軽快になる。
#+END_SRC
#+BEGIN_SRC emacs-lisp :results silent :tangle ~/.skk
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-

;; @@ 基本中の基本の設定

;; SKK が検索する CDB 形式辞書 (DDSKK 14 以降)
(setq skk-cdb-large-jisyo "/usr/share/skk/SKK-JISYO.ML.cdb")

;; ja-dic.el を利用したかな漢字変換(DDSKK 14.2〜)を無効とする
(setq skk-inhibit-ja-dic-search t)

;; 前候補/前候補群に戻る操作
(setq skk-previous-candidate-keys (list "x" "\C-p"))

;; @@ 表示の設定

;; 各種メッセージを日本語で通知する
(setq skk-japanese-message-and-error t)

;; 変換時に注釈 (annotation) を表示する
(setq skk-show-annotation
t ; 常に表示
)

;; 注釈を表示するまでの遅延を秒で指定する
(setq skk-annotation-delay 0)

;; 変換前/変換中にエコーエリアに冗長なメッセージを表示
(setq skk-verbose t)

;; @@ 基本的なユーザ・インターフェース

;; ▼モードで Enter キーを押したとき
;; nil => 確定と改行(デフォルト)
;; non-nil => 確定するのみ。改行しない。
(setq skk-egg-like-newline t)

;; 対応する閉括弧を自動的に挿入する
(setq skk-auto-insert-paren t)

;; 動的な補完を使う
(setq skk-dcomp-activate t)

;; @@ 変換動作の調整

;; 送り仮名が厳密に正しい候補を優先して表示する
(setq skk-henkan-strict-okuri-precedence t)

;; 辞書登録のとき、余計な送り仮名を送らないようにする
(setq skk-check-okurigana-on-touroku 'auto)

;; 変換の学習
(require 'skk-study)

;; @@ 検索に関連した設定

;; look コマンドを使った検索を行う
(setq skk-use-look t)

(when skk-use-look
;; look が見つけた語を見出し語として検索する
(setq skk-look-recursive-search t)
;; ispell を look と一緒に使うのはやめる
(setq skk-look-use-ispell nil)
;; look に渡すコマンドラインオプションの設定。補完時と検索時それぞれに
;; ついて設定できる。
;; look で case を見るときは、それ専用の辞書を sort コマンドで作る必要
;; がある (look の引数 -d, -f は sort の引数 -d, -f と一致させておく必
;; 要がある)。
;; (*) 補完時には引数 -d を指定すると dcomp との併用時に問題あることが
;; 報告されているため、-d を指定しないことをお勧めします。
(setq skk-look-completion-arguments "%s /usr/share/dict/words")
(setq skk-look-conversion-arguments "-df %s /usr/share/dict/words")
;; `skk-abbrev-mode' で skk-look を使った検索をしたときに確定情報を
;; 個人辞書に記録しないようにする
(add-hook 'skk-search-excluding-word-pattern-function
;; KAKUTEI-WORD を引数にしてコールされるので、不要でも引数を取る
;; 必要あり
#'(lambda (kakutei-word)
(and skk-abbrev-mode
(save-match-data
;; `skk-henkan-key' が "*" で終わるとき、または
;; `skk-henkan-key' が数字のみのとき
(or (string-match "\\*$" skk-henkan-key)
(string-match "^[0-9]*$" skk-henkan-key)))))))

;; 数値変換機能を使う
(setq skk-use-numeric-conversion t)

(when skk-use-numeric-conversion
;; 数値変換の検索から除外する辞書検索プログラムを指定する
(setq skk-non-numeric-prog-list
'(skk-look
skk-tankan-search
(skk-search-jisyo-file "/usr/share/skk/SKK-JISYO.jinmei" 10000))))

;; Lookup を利用した変換を行う
(if (featurep 'skk-lookup)
(setq skk-search-prog-list (skk-nunion skk-search-prog-list
'((skk-lookup-search)))))

;; 送りあり変換を送りなし変換と同じ操作でできるようにする
(setq skk-auto-okuri-process t)

;; カタカナ語を変換候補に加える。1、2 を好みで選んでください
;; 例 1) 単純にカタカナに変換したものを加える
;; (setq skk-search-katakana t)
;; 例 2) 全角カタカナの候補と半角カタカナの候補を共に加える
(setq skk-search-katakana 'jisx0201-kana)
;; 注) `skk-search-prog-list' を手動で設定している場合はこの機能の
;; 動作は保証されません。

;; サ行変格活用の動詞も送りあり変換出来るようにする
(setq skk-search-sagyo-henkaku t)
;; 注) `skk-search-prog-list' を手動で設定している場合はこの機能の
;; 動作は保証されません。

;; 単漢字変換を行う ▽よみ@<SPC>
;; DDSKK 14.2 からは特段の設定の必要なしに標準で単漢字変換が行えます。
(set-face-attribute 'skk-tankan-face nil
:foreground "yellow"
:height 150)

(set-face-foreground 'skk-tankan-radical-name-face
"gray40")

;; Microsoft Windows の IME のようにファンクションキーにいくつかの変換機能を割り当てる
;; conversion => skk-search-prog-list-{1-9,0} を実行できる。
;; kanagaki => かなキーボード入力用の設定になる。
;; nil => 自動設定しない(自分で好きな設定ができる) デフォルト
(setq skk-j-mode-function-key-usage 'conversion)
;; 注) 標準では以下の変換機能が割り当てられます。
;; [F5]単漢字 [F6]無変換 [F7]カタカナ [F8]半角カナ [F9]全角ローマ [F10]ローマ
;; (setq skk-verbose t) と併用すると上記の割り当て情報がメッセージされます。

;; @@ かな入力関連の設定

;; 半角カナ入力メソッドを使う
(setq skk-use-jisx0201-input-method t)

;; @@ 個人辞書に関する設定

;; 複数の Emacsen を起動して個人辞書を共有する
(setq skk-share-private-jisyo t)

;; 10 分放置すると個人辞書が自動的に保存される設定
(defvar skk-auto-save-jisyo-interval 600)
(defun skk-auto-save-jisyo ()
(skk-save-jisyo)
;; skk-bayesian.el を使っていなければ以下の 2 行はコメントアウト
;; (skk-bayesian-save-history)
;; (skk-bayesian-corpus-save)
)
(run-with-idle-timer skk-auto-save-jisyo-interval
skk-auto-save-jisyo-interval
'skk-auto-save-jisyo)
;; (cancel-function-timers 'skk-auto-save-jisyo)

;; 単語登録/単語削除のたびに個人辞書を保存する
(setq skk-save-jisyo-instantly t)

;; @@ 辞書登録に関する設定

;; @@ SKK abbrev mode
;; 見出し語の補完において Lisp シンボルも補完する
(add-to-list 'skk-completion-prog-list
'(skk-comp-lisp-symbol) t)

;; @@ その他いろいろ

;; かなモードで、モード変更を行なわずに
;; 長音(ー)を ASCII 数字の直後では `-' に、全角数字の直後では `−' に
;; 句点(。)を ASCII 数字の直後では `.' に、全角数字の直後では `.' に
;; 読点(、)を ASCII 数字の直後では `,' に、全角数字の直後では `,' に
(setq skk-rom-kana-rule-list
(append '(("-" nil skk-hyphen)
("." nil skk-hyphen)
("," nil skk-hyphen))
skk-rom-kana-rule-list))

(defun skk-hyphen (arg)
(let ((output (cdr (assq (skk-last-command-char)
'((?- . ("ー" "-" "−" "ー"))
(?, . ("、" "," "," "、"))
(?. . ("。" "." "." "。"))))))
(c (char-before (point))))
(cond ((null c) (nth 0 output))
((and (<= ?0 c) (>= ?9 c)) (nth 1 output))
((and (<= ?0 c) (>= ?9 c)) (nth 2 output))
(t (nth 3 output)))))

;;
(define-key skk-j-mode-map (kbd "M-,") 'skk-toggle-kutouten)
(define-key skk-j-mode-map (kbd "C-M-j") 'skk-undo-kakutei)

;; `$' skk-display-code-for-char-at-point で使用するフェイス
(set-face-attribute 'skk-display-code-prompt-face nil
:foreground "cyan"
:bold t)

(set-face-attribute 'skk-display-code-char-face nil
:height 150
:foreground "white"
:background "black")

;; AZIK
;; http://d.hatena.ne.jp/rubikitch/20101101/azik
(setq skk-use-azik t)
; 英語キーボードの場合は 'en を指定
(setq skk-azik-keyboard-type 'jp106)

#+END_SRC
#+BEGIN_SRC emacs-lisp :results silent :tangle ~/.emacs.d/inits/lin-50sticky.el
; -*- Mode: Emacs-Lisp ; Coding: utf-8 -*-

(require 'sticky)
(use-sticky-key 'henkan sticky-alist:ja)
;; Emacs+skkでAZIKを使う
;; http://d.hatena.ne.jp/rubikitch/20101101/azik
(setq skk-use-azik t)
(setq skk-azik-keyboard-type 'jp106) ; 英語キーボードの場合は 'en を指定
#+END_SRC
*** ドキュメント
(find-file "~/app/ddskk-15.1/etc/dot.emacs")
(find-file "~/app/ddskk-15.1/etc/dot.skk")
[[http://openlab.ring.gr.jp/skk/index-j.html][ようこそ、SKK Openlab へ]]
[[http://d.hatena.ne.jp/rubikitch/20101101/azik][もっと早くタイピングしたい人へ贈る習得容易な拡張ローマ字入力『AZIK』]]
*** 注意
**** json-read: JSON readtable error
google suggest 側で json レスポンスが廃止されたため出るエラー。ddskk の
最新版を使えば問題無い
**** make: *** ターゲット `cdb' を make するルールがありません. 中止.
pythong が入っていない。

"CDB 形式辞書の生成にはpythonスクリプト`etc/skk2cdb.py'が実行されるので、
あらかじめpython処理系をインストールしておく必要があります"

http://openlab.ring.gr.jp/skk/maintrunk/skk-15.1.pdf
**** face-equal: Invalid face: modeline
ddskk が古いために出るエラー。emacs24 からは、modelineというface名が削
除され、mode-lineに統一されてために出るエラー。最新の ddskk を使用すれ
ば問題無い。
**** google suggest
google sugest を使う場合は .skk に google suggest の設定を書かかず、
init.el とかに書くと読み込み順序的にエラーとなるので注意。

* 環境
===
~ $ uname -a
Linux D257-A71C 3.2.0-52-generic #78-Ubuntu SMP Fri Jul 26 16:23:24 UTC 2013 i686 i686 i386 GNU/Linux
~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.3 LTS
Release: 12.04
Codename: precise
~ $ emacs --version
GNU Emacs 24.3.1
Copyright (C) 2013 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
~ $ ratpoison -v
ratpoison 1.4.6 (built Aug 27 2013 19:09:05)
Copyright (C) 2000-2008 Shawn Betts

0 件のコメント:

コメントを投稿