スキップしてメイン コンテンツに移動

投稿

ラベル(Mozc)が付いた投稿を表示しています

mozc.elでの日本語入力における句読点の自動修正

通常の日本語の文章を書くときの句読点は「、」や「。」を使うけれど、数式を含む文章を書くときの句読点は「,」と「.」を使いたい派です。 10年くらいほど前にこの機能を実現するpunch.elというEmacsのパッケージを配布されている方がいて、便利に使わせて頂いてました。 このpunch.elはMacやWindowsのOSのIMEを利用した場合には上手く動くものの、mozc.elを利用した入力には対応していませんでした。 mozc.elで同じ機能を実現するelispをGrokにお願いして出力してもらったところ、ほぼそのまま利用できるコードを生成してくれました。 mozc-handle-event関数の実行前後の文字列入力位置を記録しておき、その範囲内の句読点をmozc-handle-event実行後に書き換えるという操作をするコードになっています。以下の内容をpunct-mozc.elという名前でEmacs Lispのライブラリに保存します。 (defgroup punct-mozc nil "Punctuation switcher in mozc" :group 'punct-mozc :prefix "punct-mozc-") (defun punct-mozc-lighter () " Punct") (defun punct-mozc-replace-punctuation (beg end) "挿入された範囲内の句読点を変換する関数。 BEG と END は挿入された文字列の開始点と終了点を表す。" (interactive) (when punct-mozc-mode (save-excursion (goto-char (1- beg)) (while (< (point) end) (let ((char (char-after))) ; (message "Position: %d, Char: %c" (point) char) (cond ((= char ?、) (delete-...

yatex-modeでmozc-im使用時に,ドル記号入力で直接入力に切り替える.

emacsでyatex-modeを使っているときに,日本語入力中でもドル記号を入力すれば,直接入力に切り替わりドル記号が2つ入力されて欲しい人間です. mozc.elを使っているときには,mozc-mode-mapを書き換えることで 上記に対応していた のですが,mozc-imではキーマップが用意されていません.そこでキーイベントを拾う関数であるmozc-im-input-methodにアドバイスを定義することで上記を解決してみました. (require 'mozc-im) (setq default-input-method "japanese-mozc-im") (defadvice mozc-im-input-method (around insert-dollars (event)) (if (and (eq major-mode 'yatex-mode) (equal event ?$)) (YaTeX-insert-dollar) ad-do-it)) (ad-activate 'mozc-im-input-method) mozc.elでも,mozc-mode-mapを書き換える方法でなく,これと同様にmozc-handle-eventという関数にアドバイスを定義すれば同じ挙動を示します. 追記:defadviceは古いそうなので,advice-addを使用したものに書き換えてみました. (require 'mozc-im) (setq default-input-method "japanese-mozc-im") (defun mozc-im-input-method--yatex-insert-dollars (orig-fun key) (if (and (eq major-mode 'yatex-mode) (equal key ?$)) (YaTeX-insert-dollar) (funcall orig-fun key))) (advice-add 'mozc-im-input-method :around #'mozc-im-input-method--yat...

Ubuntu 14.04でのEmacsの設定(mozc, YaTeX, SyncTeX, フルスクリーン)

最近MacBook Air (mid 2012)の外付けSSDにUbuntu 14.04をインストールしたので,久しぶりに設定をゴニョゴニョしております. Emacsの日本語入力では,以前はAnthyを使っていましたが,TeXフォーラムの「 emacs, mozc, TeX入力 」を見て,mozcでもドル記号を入力したときに自動で直接入力に切り替えることが出来そうだったので設定をしてみました.「~/.emacs.d/init.el」に次のように設定しています. ;;; 言語環境の指定 ;;mozcの設定 (require 'mozc) (set-language-environment "Japanese") (setq default-input-method "japanese-mozc") ;;yatex-modeでドル記号を入力したときに直接入力に切り替える。 (define-key mozc-mode-map "$" 'YaTeX-insert-dollar-or-mozc-insert) (defun YaTeX-insert-dollar-or-mozc-insert () (interactive) (if (eq major-mode 'yatex-mode) (YaTeX-insert-dollar) (mozc-handle-event ?$))) その他にも,SyncTeXの設定がしばらく見ない間に変わっていたので,TeXWikiを参考に設定も行いました. 「 synctex-for-evince-yatex.el 」をダウンロードしてemacsが読める場所に置きます. init.elには次のように書き込んでおきます. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; synctex関連 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;inverse search (require 'dbus) (defun un-urlify (fname-or-url) ...