fixedpoint.jp - po-unfuzzy-region in po-mode




po-unfuzzy-region in po-mode

gettext の .po 翻訳ファイルを編集するには、Emacs の po-mode が非常に便利です。お馴染みの font-lock による強調表示で読みやすいですし、最初に簡単ないくつかのキーバインドさえ覚えてしまえば編集も効率的です。

例えばポイントの下の「fuzzy なエントリを unfuzzy する」なら、M-x po-unfuzzy、もしくはこのコマンドの既定のキーバインド <TAB> で済んでしまいます。つまりタブを一回タイプするだけでいいのです。

さらに、大きな .po ファイルを編集する際に「多くのエントリを一度に unfuzzy する」という操作をしたくなります。指定方法としては、リージョンで囲んでそこに含まれるエントリを削除する、というのが良さそうです。そのための関数 po-unfuzzy-region を作成しました:

po-unfuzzy-region.el
(require 'po-mode)
(defun po-unfuzzy-region (beg end)
  "Remove the fuzzy attribute for entries in region."
  (interactive "r")
  (save-excursion
    (goto-char beg)
    (let ((here beg))
      (while (and (< 0 po-fuzzy-counter)
                  (< here end))
        (po-unfuzzy)
        (goto-char here)
        (cond ((re-search-forward po-fuzzy-regexp end t)
               (setq here (match-end 0))
               (goto-char (match-beginning 0)))
              (t
               (setq here end)))
        ))))

これをそのまま M-x po-unfuzzy-region と呼ぶか、あるいはさらに

po-unfuzzy-with-or-without-region.el
(defadvice po-unfuzzy (around po-unfuzzy-with-or-without-region activate)
  (if (and (interactive-p)
           mark-active)
      (po-unfuzzy-region (region-beginning) (region-end))
    ad-do-it))

を追加して <TAB> に引っ掛けておくのもオススメです。いずれにしても関数 po-undo は期待通り動作します。


© 2006,2007 Takeshi Abe