「コメントマーク付け外し」の版間の差分
ナビゲーションに移動
検索に移動
編集の要約なし |
(「masme版」追加。見出しの追加や<script>の使用など、外見部分(レイアウト)に手を加えました。) |
||
1行目: | 1行目: | ||
= 手石 版 (2013/03) = | |||
コメントマークの付け外しをするマクロです。<br> | |||
js 以外の拡張子に対応させる時は、最後の関数に追加してください。 | |||
== 更新履歴 == | |||
* 2013/03/28 | |||
** 無題のときに対応しました。 | |||
< | |||
== ソースコード == | |||
<source lang="javascript"> | |||
// コメントマーク.js | // コメントマーク.js | ||
// 行頭コメントマーク( cMark )を付けたり外したり。 | // 行頭コメントマーク( cMark )を付けたり外したり。 | ||
48行目: | 50行目: | ||
} | } | ||
} | } | ||
</source> | |||
</ | = masme 版 (2014/02) = | ||
マクロ「[[テキスト整形]]」の「行頭 // を付加/削除」を独立・改造したバージョンです。<br> | |||
行頭(論理行)にコメント文字が有れば削除(アンコメント)し、無ければ付加(コメントアウト)します。 | |||
* 空白行(改行/半角空白/水平タブのみの行)はコメントアウトしないようにしました。 | |||
* コメントの削除/付加後に、処理された範囲を行選択するようにしました。 | |||
* 初期設定では、インデントされたコメント文字には対応していません。<br>「$indent」変数を「false」から「true」へ書き換えると、手石 版のように行頭空白後のコメント文字も削除するようになります。 | |||
** インデントへの対応は、手石 版と同様に削除限定です。付加するときは行頭(論理行)になります。 | |||
* 編集モードによる定義切替は、マクロ「[[Eclipse風コメントアウト]]」を参考にしました。 | |||
<source lang="javascript"> | |||
//■行コメントのアン・アウト | |||
// 2014/02/22 | |||
//・行頭にコメント文字が有れば削除し、無ければ付加する。空白行には付加しない。 | |||
//■行コメント文字の定義 ●初期値="//" | |||
var $comment = "//"; | |||
//■インデントされたコメント文字も削除(true:する/false:しない) ●初期値=false | |||
var $indent = false ? "[ \t]*" : ""; | |||
//▼編集モードによる定義切替 | |||
switch (Document.Mode.toLowerCase()) { | |||
case "bat": | |||
$comment = "::"; break; | |||
case "c#" || "c++" || "javascript": | |||
$comment = "//"; break; | |||
case "ini" || "python" || "ruby": | |||
$comment = "#"; break; | |||
case "visualbasic" || "vbscript": | |||
$comment = "'"; break; | |||
} | |||
with (Document.Selection) { | |||
var meP = mePosLogical; | |||
var ty = GetTopPointY(meP); | |||
var by = GetBottomPointY(meP); | |||
var bx = GetBottomPointX(meP); | |||
if (ty!=by && bx==1) by--; //行選択時、次行を含めないよう対策 | |||
SetActivePoint(meP, 1, by+1); | |||
SetAnchorPoint(meP, 1, ty); | |||
var re = new RegExp("^(?=[ \t]*$)|^("+$indent+")"+$comment); //空白行orコメント行 | |||
var ln = Text.split("\n"); | |||
for (var i=0; i<ln.length; i++) { | |||
ln[i] = ln[i].match(re)? ln[i].replace(re,"$1"): $comment+ln[i]; | |||
} | |||
Text = ln.join("\n"); | |||
SetActivePoint(meP, 1, by+1); | |||
SetAnchorPoint(meP, 1, ty); | |||
} | |||
</source> |
2014年2月22日 (土) 20:52時点における版
手石 版 (2013/03)
コメントマークの付け外しをするマクロです。
js 以外の拡張子に対応させる時は、最後の関数に追加してください。
更新履歴
- 2013/03/28
- 無題のときに対応しました。
ソースコード
// コメントマーク.js
// 行頭コメントマーク( cMark )を付けたり外したり。
// 空白文字の後ろには対応するけど、つけるときは行頭。
var cMark = commentMark( Editor.ActiveDocument.name );
var reg = new RegExp( "^[ \\t]*" + cMark )
var sel = Editor.ActiveDocument.Selection;
var ty = sel.GetTopPointY( mePosLogical )
var bx = sel.GetBottomPointX( mePosLogical )
var by = sel.GetBottomPointY( mePosLogical )
sel.SetActivePoint( mePosLogical, 1, ty, false )
if ( ( bx == 1 ) && ( ty != by ) ){ by--; }
sel.SetActivePoint( mePosLogical, bx, by, true )
sel.EndOfLine( true, mePosLogical );
// 上二行とどちらがいいか?
//sel.SetActivePoint( mePosLogical, document.GetLine( by, 0 ).length + 1, by, true );
var ary = sel.Text.split( "\n" );
var s = new Array();
for ( var i = 0; i < ary.length; i++ ) {
var ai = ary[ i ]
if ( reg.test( ai )) {
s.push( ai.replace( cMark, "" ) )
} else {
s.push( cMark + ai )
}
}
sel.Text = s.join( "\n" );
sel.SetActivePoint( mePosLogical, 1, ty, false )
function commentMark( filename ){
if ( filename == "" ){ return "//" }
var f = filename.split( "\\" ).pop().split( "." );
var fext = ( f.length >= 2 ) ? f.slice( -1 ).join( "" ).toLowerCase() : "" ;
switch( fext ){
case "js" : return "//";
default : "//";
}
}
masme 版 (2014/02)
マクロ「テキスト整形」の「行頭 // を付加/削除」を独立・改造したバージョンです。
行頭(論理行)にコメント文字が有れば削除(アンコメント)し、無ければ付加(コメントアウト)します。
- 空白行(改行/半角空白/水平タブのみの行)はコメントアウトしないようにしました。
- コメントの削除/付加後に、処理された範囲を行選択するようにしました。
- 初期設定では、インデントされたコメント文字には対応していません。
「$indent」変数を「false」から「true」へ書き換えると、手石 版のように行頭空白後のコメント文字も削除するようになります。- インデントへの対応は、手石 版と同様に削除限定です。付加するときは行頭(論理行)になります。
- 編集モードによる定義切替は、マクロ「Eclipse風コメントアウト」を参考にしました。
//■行コメントのアン・アウト
// 2014/02/22
//・行頭にコメント文字が有れば削除し、無ければ付加する。空白行には付加しない。
//■行コメント文字の定義 ●初期値="//"
var $comment = "//";
//■インデントされたコメント文字も削除(true:する/false:しない) ●初期値=false
var $indent = false ? "[ \t]*" : "";
//▼編集モードによる定義切替
switch (Document.Mode.toLowerCase()) {
case "bat":
$comment = "::"; break;
case "c#" || "c++" || "javascript":
$comment = "//"; break;
case "ini" || "python" || "ruby":
$comment = "#"; break;
case "visualbasic" || "vbscript":
$comment = "'"; break;
}
with (Document.Selection) {
var meP = mePosLogical;
var ty = GetTopPointY(meP);
var by = GetBottomPointY(meP);
var bx = GetBottomPointX(meP);
if (ty!=by && bx==1) by--; //行選択時、次行を含めないよう対策
SetActivePoint(meP, 1, by+1);
SetAnchorPoint(meP, 1, ty);
var re = new RegExp("^(?=[ \t]*$)|^("+$indent+")"+$comment); //空白行orコメント行
var ln = Text.split("\n");
for (var i=0; i<ln.length; i++) {
ln[i] = ln[i].match(re)? ln[i].replace(re,"$1"): $comment+ln[i];
}
Text = ln.join("\n");
SetActivePoint(meP, 1, by+1);
SetAnchorPoint(meP, 1, ty);
}
スポンサーリンク