replace-symbol 20160517.1712(in MELPA)
Rename symbols in expressions or buffers

概要

replace-symbol.el はシンボル置換を行うリファクタリング支援elispです。
M-x replace-symbol-in-sexp は現在のS式においてシンボルを置換し、
M-x replace-symbol-in-buffer はバッファ全体のシンボルを置換します。

ただ、コードを読んでいて疑問に感じたのは、なぜ正規表現によるシンボル置換を使っていないのかなということです。
正規表現「\_<symbol\_>」でsymbolシンボルにマッチする正規表現になります。

ちょうど手元に僕が昔定義した M-x replace-symbol-in-defun がありますが、こんなに短いです。
replace-symbol-in-sexpと違い、C-M-aする必要がないのでよく使っています。
replace-regexpをLispから呼ぶのは非推奨ですが、これは単なるラッパーなのであえて呼んでいます。

(defun replace-symbol-in-defun (symbol to-string)
  (interactive
   (let ((common (query-replace-read-args "Replace symbol in defun" nil)))
     (list (nth 0 common) (nth 1 common))))
  (save-excursion
    (beginning-of-defun)
    (let ((end-of-defun (save-excursion (end-of-defun) (point))))
      (replace-regexp (concat "\\_<" (regexp-quote symbol) "\\_>") to-string nil
                      (point) end-of-defun))))

同様にsexp間もバッファ間も置換範囲を指定すればそれで目的が達成されるのではないでしょうか。

それはさておき、シンボル正規表現を入力するのが面倒なので使う価値はあると思います。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

初めてreplace-symbolを使う方は
以下のコマンドを実行します。

M-x package-install replace-symbol

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name replace-symbol

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。