Emacsで一部の全角文字を半角にする

 法律文書では、「3月13日」のように、数字を全角にするものが見受けられます。しかし、執筆する原稿等では、すべてを半角にする場合も多いのではないでしょうか。そこで、全角を半角にするマクロがあればありがたいということになります。

 このようなマクロがgithubにあります。ここで微修正する点は、私が執筆する原稿では、丸括弧を半角にする必要がないし、また、その他の文字についても半角にする必要ないものがあるということです。

 それらを除外した設定は、次の通りです。init.elに設定をすれば、M-x normalize-charsで呼び出すことができます。

(require 'ucs-normalize)
(prefer-coding-system 'utf-8)
(setq file-name-coding-system 'utf-8-hfs)
(setq locale-coding-system 'utf-8-hfs)
(defun normalize-chars ()
  "Normarize chars."
  (interactive)
  ;; 選択範囲があればそこを対象にする
  (let (type
        beg
        end)
    (if (region-active-p)
        (progn
          (setq beg (region-beginning))
          (setq end (region-end)))
      (progn
        (setq type (read-string "normalize whole buffer?(y, n): " nil))
        (if (string= type "y")
            (progn
              (setq beg (point-min))
              (setq end (point-max)))
          (error "Error: no target region"))))
    (japanese-zenkaku-region beg end t)
    (japanese-hankaku-region beg end t)
    (ucs-normalize-NFC-region beg end)))

;; 音引、句読点等を除外
;; thx http://d.hatena.ne.jp/khiker/20061014/1160861915
(put-char-code-property ?ー 'ascii nil)
(put-char-code-property ?~ 'ascii nil)
(put-char-code-property ?、 'ascii nil)
(put-char-code-property ?。 'ascii nil)
(put-char-code-property ?, 'ascii nil)
(put-char-code-property ?( 'ascii nil)
(put-char-code-property ?) 'ascii nil)
(put-char-code-property ?[ 'ascii nil)
(put-char-code-property ?] 'ascii nil)
(put-char-code-property ?〔 'ascii nil)
(put-char-code-property ?〕 'ascii nil)
(put-char-code-property ?= 'ascii nil)
(put-char-code-property ?〈 'ascii nil)
(put-char-code-property ?〉 'ascii nil)
(put-char-code-property ?< 'ascii nil)
(put-char-code-property ?> 'ascii nil)
(put-char-code-property ?. 'jisx0208 ?.)

コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください