termitを Emacsから使うための設定

Ruby - コマンドラインからGoogle Translationを使える termit が便利 - Qiita


ターミナルからだとめんどくさいので書いてみました.

コード

Google翻訳が対応しているものだと何でもいけるんでしょうけど、とりあえず
英語 <=> 日本語で. 仕様なのか何なのか 1文しか翻訳してくれないっぽいです.
リージョンで突っ込んでも最初の一文しか翻訳されません.

(defun termit-translate (sentense from to)
  (let* ((remove-newline (replace-regexp-in-string "[\r\n]" " " sentence))
         (cmd (format "termit %s %s %s"
                      from to (shell-quote-argument remove-newline))))
    (with-current-buffer (get-buffer-create "*termit*")
      (erase-buffer)
      (unless (zerop (call-process-shell-command cmd nil t))
        (error "Failed: %s" cmd))
      (pop-to-buffer (current-buffer)))))

(defun termit-japanese-to-english (beg end)
  (interactive "r")
  (let ((sentence (buffer-substring-no-properties beg end)))
    (termit-translate sentence "ja" "en")))

(defun termit-english-to-japanese (beg end)
  (interactive "r")
  (let ((sentence (buffer-substring-no-properties beg end)))
    (termit-translate sentence "en" "ja")))

イメージ

日本語 -> 英語

英語 -> 日本語

おわりに

精度は気になる気がしますが, ないよりかはいいでしょう.