サクラエディタ用複数行文字列定数化マクロ

C言語のプログラムに複数行の文字列定数を埋め込みたいときに、毎回先頭と終わりにダブルクォーテーションを付けるには面倒。

と言うわけで、複数行の選択範囲をC言語の文字列に変換するための、サクラエディタ用マクロを組んでみた。

var linecode;
if(Editor.GetLineCode()==0) linecode="\r\n";
else if(Editor.GetLineCode()==1) linecode="\r";
else linecode="\n";

if(Editor.GetSelectedString().length >= 1) {
var array = Editor.GetSelectedString().split(linecode);
var i;
for(i=0;i<array.length;i++) {
array[i] = array[i].replace(/\\/g, "\\\\").replace(/\"/g, "\\\"");
array[i] = "\"" + array[i] + "\\n\"";
}
Editor.InsText(array.join(linecode));
}

とりあえず、バックスラッシュとダブルクォーテーションのエスケープだけは入れてあります。

単一の文字列ではなく、選択範囲の一行一行を配列の要素としたい場合は以下のマクロを使用。

var linecode;
if(Editor.GetLineCode()==0) linecode="\r\n";
else if(Editor.GetLineCode()==1) linecode="\r";
else linecode="\n";

if(Editor.GetSelectedString().length >= 1) {
var array = Editor.GetSelectedString().split(linecode);
var i;
for(i=0;i<array.length;i++) {
array[i] = array[i].replace(/\\/g, "\\\\").replace(/\"/g, "\\\"");
array[i] = "\"" + array[i] + "\",";
}
Editor.InsText(array.join(linecode));
}