ラベル migemo の投稿を表示しています。 すべての投稿を表示
ラベル migemo の投稿を表示しています。 すべての投稿を表示

2016年4月20日水曜日

cmigemoで複数の辞書を使う

概要


C/Migemoは複数の辞書を扱える便利な機能がある。但し、Emacsからmigemo.elを通して使う時には少々fileに細工する必要がある。

C/MigemoとRuby/Migemoの違い


man cmigemoすると明らかな通り、cmigemoはmain dictionaryに加えて、最大8つのsub dictionariesを指定できる。こんな感じ:

cmigemo -s <SUB_DICTIONARY_1> -s <SUB_DICTIONARY_2> ... -s <SUB_DICTIONARY_8> -d <MAIN_DICTIONARY>

Sub dictionariesの何が便利なのかと言えば:

  • mainの辞書を弄るほどでもない内部的なentryを好き放題追加できる
  • mainの辞書とは別にrevision controlしたり配布したりできる

例えば、cmigemoに付属のmigemo-dictをmainとして、それを補完する2つのsub dictionariesを指定すると:

cmigemo -q --emacs -s /home/user/.emacs.d/migemo/migemo-dict.user -s /home/user/.emacs.d/migemo/migemo-dict.sub -d /home/user/.emacs.d/migemo/migemo-dict

この例ではsub dictionariesとしてmigemo-dict.subとmigemo-dict.userの2つを指定している。

Emacsから複数辞書を活用する


複数辞書を指定する場合、Emacsでmigemoを使うためのmigemo.elには細工が必要。

migemo.elは、cmigemoを呼び出すcommand lineを組み立てているのだが、そこでcmigemoに与えているoptionが実はRuby/Migemoのもので、そのままではsub dictionariesを指定できない。2016年現在実際に利用されているのはC/Migemoだけだと思うんだが……。

具体的にはmigemo-initの内部でuser-dictionaryを指定する部分の"-u"及びregex-dictionaryを指定する部分の"-r"をそれぞれ"-s"に設定し、migemo-user-dictionaryとmigemo-regex-dictionaryをそれぞれsub dictionariesのabsolute pathに変更すれば良い。

3つ以上のsub dictionariesを使いたい場合は、非常にダサい実装だが、migemo-sub-dictionary-1〜8を定義し:

(when (and migemo-sub-dictionary-1
           (file-exists-p migemo-sub-dictionary-1))
  (list "-s" migemo-sub-dictionary-1))

を8回copy'n'paste (-1〜-8に変更しつつ)すれば動く (と思う)。

勿論、loopとかmapとかを使ってsmartに書きたい所。

2016年4月13日水曜日

個人的にemacsを使う理由

個人的にemacsを日本語文書の記述や編集に使っている。

大きな理由は:

* DDSKK → 日本語入力
* helm (特にhelm-filelist+) → 最近開いたfileをincrementalに絞り込み
* auto-save-buffers-enhanced → 自動save
* migemo → ローマ字で日本語検索
* helm-swoop → 検索語をlistして一覧 & jump

今の所emacs以外でこれらを実現できる環境はなさそう。

あと、fileを開いた時にbufferをview-modeで開くhookを仕込んでいるので、半ばViみたいな使い方になっている。

ちなみに、設定ファイルとかプログラムの記述とかには専らVimを使っている。

2016年2月11日木曜日

再・emacs-gitのisearchでmigemoを利用可能にする

最近の更新でisearchからmigemoれないことに気付いた。

git logでlogを漁ってみたら、b3fc7a3e763fb260cd932dc6aedbe7b4c810a73cでsearch-default-regexp-mode (cf. http://typeinf-memo.blogspot.com/2015/11/emacs-gitisearchmigemo.html)がsearch-default-modeにrenameされたとある。これにnilをbindするとmigemoが使えるようになる。

(setq search-default-mode nil)

2015年11月15日日曜日

helm-swoopでmigemoを有効にする

isearch中にC-;でhelm-swoopを起動する設定にしているが、こちらもいつの間にかmigemoで検索できなくなっていたので修正。

    (setq helm-migemo-mode 1)
を設定ファイル (~/.emacsとか~/.emacs.d/init.elあたり)に追記しておく。

続・emacs-gitのisearchでmigemoを利用可能にする

今日になって再びisearchでmigemoが使えなくなっていることに気付いた。

以下のcommitが怪しいと踏んだ:


commit 4d82aa3abdad1871b99f0a9e56fe54ec497bd290
Author: Artur Malabarba <bruce.connor.am@gmail.com>
Date:   Tue Nov 10 13:04:02 2015 +0000

    * lisp/isearch.el (search-default-regexp-mode): change default value
*scratch* bufferで:
(setq search-default-regexp-mode nil)
をevaluateしてからC-sでisearchしてみるとmigemoが使える状態に戻った。