- chinese-word-at-point 20150618.1838(in MELPA)
- Add `chinese-word' thing to `thing-at-point'
概要
chinese-word-at-point.el は、元々中国語に対応した
word-at-point を提供するものですが、
分かち書きをするコマンドを日本語のものに差し替えることで
日本語でもそれなりに(←そこ重要)使えます。
本設定では日本語形態素解析ツールの 茶筌 を使っています。
ただ、(word-at-point)の範囲でしか探索しないので、
漢字とかなが交じった単語の対応が弱いです。
中国語の場合はすべて漢字なのでそれで十分ですが、
日本語は漢字かな混じり文なのでsentenceから探索しないと
正確には動作しません。
word→sentenceに書き換え、
かつ「日本語文字列」の判定を厳密にすれば
完全に日本語に対応できるでしょうけど
ぼぼ全面的な再定義になってしまいます。
とりあえずproof-of-concept的な意味で記事にしておきます。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてchinese-word-at-pointを使う方は
以下のコマンドを実行します。
M-x package-install chinese-word-at-point
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name chinese-word-at-point
設定 150118063159.chinese-word.el(以下のコードと同一)
(require 'chinese-word-at-point) ;;; 茶筌で分かち書きをする (setq chinese-word-split-command "echo %s | chasen -F '%%m '") ;;; ひらがな・カタカナを加えるように修正 (defun chinese-word--cjk-characters-p (char) "Return t if CHAR is a CJK character. For CJK characters range in Unicode, see URL `http://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode/'" (or (<= #x4E00 char #x9FCC) (<= #x3040 char #x309F) ;hiragana (<= #x30A0 char #x30FF) ;katakana (= #x3005 char) ;々 (<= #x31F0 char #x31FF) ;small katakana (<= #x3400 char #x4DB5) (<= #x20000 char #x2A6D6) (<= #x2A700 char #x2B734) (<= #x2B740 char #x2B81D))) ;;; 日本語に適用しているのにchineseというのはよくないのでjapaneseも定義 ;;; (thing-at-point 'japanese-word) ;;; (thing-at-point 'japanese-or-other-word) ;;; が使えるようになる (put 'japanese-word 'bounds-of-thing-at-point 'chinese-word-at-point-bounds) (put 'japanese-or-other-word 'bounds-of-thing-at-point 'chinese-or-other-word-at-point-bounds) ;;; テストコマンド (defun show-word-at-point-ja () "現在の単語をミニバッファに表示する(日本語対応)" (interactive) (message "%s" (thing-at-point 'japanese-or-other-word))) ;;; Emacsは楽しい システムのメンテナンス 研究・情報収集
実行方法
$ wget http://rubikitch.com/f/150118063159.chinese-word.el $ emacs -Q -f package-initialize -l 150118063159.chinese-word.el
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。