@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

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:]]複数行の任意の文字にマッチする。

stackoverflow.com

ちなみに、キーボードマクロでM-< C-M-% RET y C-x C-s M-<までを登録して、ファイル単位で置換したりしている。 1ファイルに複数DIがある場合は手動でC-M-%している。