ローカル変数リファクタリングの名前を変更する


10

ローカル変数と関数引数の名前を変更できるelispリファクタリングツールはありますか?向きを変えられるようにしたいと思います。

(defun my-func (s r)
  ...
  (use s .. r))

に:

(defun my-func (string replacement)
  ...
  (use string .. replacement))

変数参照を見つける方法を知っているメソッドを使用します。超衛生的でなくても大丈夫です。


4
複数のカーソルは、現在の定義内のシンボルのすべてのインスタンスを編集できます。
マラバルバ2015

ieditも参照してください。
InHarmsWay 2015


4
すべてのコードが私たちのものではありません。一部のコードは古いです。
Gracjan Polak 2015

2
私は通常、領域\ bSYM \ b…でregexp置換を行います
BRPocock

回答:


2

TL; DR: erefactor-rename-symbol-in-buffer

字句的にインテリジェントな名前変更関数を探しています-単純な検索と置換ではなく、スコープによって変数の名前を変更する関数。このようなパッケージは多くの言語で存在しますが、執筆時点(2019年4月)では、Emacs Lispのオプションは実際には多くありません。erefactorパッケージには、私の知っている唯一のものです。

erefactor-rename-symbol-in-buffer必要な機能です。これは、現在のスコープ(docstringを含む)内のシンボルを置き換えるインテリジェントな検索と置換コマンドです。このコマンドの制限は、現在のバッファーの外側を検索しないことです。スマートですが、完璧ではありません。最終的な結果が衛生的であることを確認するために、発生ごとに確認するように求められます。

他の名前変更関数はerefactor-rename-symbol-in-packageです。これは同じようには機能しません-グローバルシンボルでのみ機能します。これは、グループ化システムと接頭辞を使用してパッケージが正しく設定されていることに依存しており、パッケージの接頭辞と一致する変数が必要です。これはあまり堅牢ではありません-この関数が期待するように設定していないと失敗します。Elispのグローバルシンボルには名前空間がないため、グローバルシンボルの名前を変更する場合は、単純な検索と置換を使用することもできます。語彙を理解するメリットはごくわずかです。このコマンドは、トレードオフには脆弱すぎます。を使用することをお勧めしprojectile-replaceます。

Erefactorには、他にも便利なElispコマンドがいくつかあります。(不完全な)リストはreadmeにあります。

GitHubページでは説明されていませんがerefactor、MELPA(M-x package-install RET erefactor)で利用できます。MELPAページはここにあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.