AngularJSのDIアノテーションをEmacsで消す(改行を含む置換)
AngularJSのDIアノテーションを消すことになりました。 gruntのタスクでアノテーションをつけてくれるので、わざわざ書かなくても良かった。
- やりたいこと
これを
['$scope', '$location', function($scope, $location){ ... }]
こうしたい
function($scope, $location){ ... }
- 解決方法
C-M-%で下記のような正規表現を入力して置換しました。\1
にfunction(hogehoge,fugafuga){...}が入ります。
たぶんスクリプト書いた方がいいんだろうけど。
\['.*,[[:ascii:][:nonascii:]]*?\(function[[:ascii:][:nonascii:]]*?}\)\]
[[:ascii:][:nonascii:]]
が複数行の任意の文字にマッチする。
ちなみに、キーボードマクロでM-< C-M-% RET y C-x C-s M-<までを登録して、ファイル単位で置換したりしている。 1ファイルに複数DIがある場合は手動でC-M-%している。