「コメントマーク付け外し」の版間の差分
ナビゲーションに移動
検索に移動
マクロ再修正 |
Masme版マクロ修正 |
||
| 40行目: | 40行目: | ||
</source> | </source> | ||
= masme 版 | = masme 版 = | ||
マクロ「[[テキスト整形]]」の「行頭 // を付加/削除」を独立・改造したバージョンです。<br> | マクロ「[[テキスト整形]]」の「行頭 // を付加/削除」を独立・改造したバージョンです。<br> | ||
行頭(論理行)にコメント文字が有れば削除(アンコメント)し、無ければ付加(コメントアウト)します。 | 行頭(論理行)にコメント文字が有れば削除(アンコメント)し、無ければ付加(コメントアウト)します。 | ||
* 空白行(改行/半角空白/水平タブのみの行)はコメントアウトしないようにしました。 | * 空白行(改行/半角空白/水平タブのみの行)はコメントアウトしないようにしました。 | ||
* 初期設定では、インデントされたコメント文字には対応していません。<br> | * 初期設定では、インデントされたコメント文字には対応していません。<br>「indent」変数を「false」から「true」に書き換えると、手石 版のように行頭空白後のコメント文字も削除するようになります。<br>インデントへの対応は、手石 版と同様に削除限定です。付加するときは行頭(論理行)になります。 | ||
* 編集モードによる定義切替は、マクロ「[[Eclipse風コメントアウト]]」を参考にしました。 | * 編集モードによる定義切替は、マクロ「[[Eclipse風コメントアウト]]」を参考にしました。 | ||
== 更新履歴 == | == 更新履歴 == | ||
* 2016/02/28 | |||
** 編集モードによる定義切替が正常に機能していないミスを修正。 | |||
* 2015/02/14 | * 2015/02/14 | ||
** | ** 特殊文字の対処にミスがあったため再修正。 | ||
* 2015/02/14 | * 2015/02/14 | ||
** 「行コメント文字の定義」に正規表現の特殊文字があると誤動作する不具合を修正。 | ** 「行コメント文字の定義」に正規表現の特殊文字があると誤動作する不具合を修正。 | ||
| 61行目: | 63行目: | ||
<source lang="javascript"> | <source lang="javascript"> | ||
//■行コメントのアン・アウト | //■行コメントのアン・アウト | ||
// 2014/02/ | // 2014/02/11-2016/02/28 | ||
//・行頭にコメント文字が有れば削除し、無ければ付加する。空白行には付加しない。 | //・行頭にコメント文字が有れば削除し、無ければ付加する。空白行には付加しない。 | ||
//■行コメント文字の定義 ●初期値="//" | //■行コメント文字の定義 ●初期値="//" | ||
var | var comment = "//"; | ||
//■インデントされたコメント文字も削除(true:する/false:しない) ●初期値=false | //■インデントされたコメント文字も削除(true:する/false:しない) ●初期値=false | ||
var | var indent = false ? "[ \t]*" : ""; | ||
//▼編集モードによる定義切替 | //▼編集モードによる定義切替 | ||
switch (Document.Mode.toLowerCase()) { | comment = (function(){ | ||
case "bat": | switch (Document.Mode.toLowerCase()) { | ||
case "bat": | |||
case "c#" | return "::"; | ||
case "c#": | |||
case "ini" | case "c++": | ||
case "javascript": | |||
case "visualbasic" | return "//"; | ||
case "ini": | |||
} | case "python": | ||
case "ruby": | |||
return "#"; | |||
case "visualbasic": | |||
case "vbscript": | |||
return "'"; | |||
default: | |||
return comment; | |||
} | |||
})(); | |||
var Sel = Document.Selection; | |||
var ty = Sel.GetTopPointY(mePosLogical); | |||
var by = Sel.GetBottomPointY(mePosLogical); | |||
var bx = Sel.GetBottomPointX(mePosLogical); | |||
var br =(Sel.Text.match(/\n/g)||[]).length; | |||
if (bx===1 && by-ty===br && br) by--; //下端行頭を含めないよう対策 | |||
Sel.SetActivePoint(mePosLogical,1,by+1); | |||
Sel.SetAnchorPoint(mePosLogical,1,ty); | |||
Sel.Text = Sel.Text.replace( | |||
new RegExp("^("+indent+")"+comment.replace(/[$()*+.?[\\\]^{|}]/g,"\\$&")+"|^(?![ \t]*$)","gm"), | |||
function($0,$indent){return $0? $indent : comment} | |||
); //コメント行ならコメント文字削除 | 空白行でない行頭なら文字付加 | |||
Sel.SetActivePoint(mePosLogical,1,by+1); | |||
Sel.SetAnchorPoint(mePosLogical,1,ty); | |||
</source> | </source> | ||
2016年2月28日 (日) 12:23時点における版
手石 版 (2014/03)
コメントマークの付け外しをするマクロです。
js 以外の拡張子に対応させる時は、最後の関数に追加してください。
更新履歴
- 2013/03/28
- 無題のときに対応しました。
- 2014/03/22
- できるだけ短くしてみました。
ソースコード
// コメントマーク.js
// 行頭コメントマークを付けたり外したり。
// 空白文字の後ろにあっても外す。つけるときは行頭に。
var sel = Editor.ActiveDocument.Selection;
var ty = sel.GetTopPointY( mePosLogical );
var bx = sel.GetBottomPointX( mePosLogical );
var by = sel.GetBottomPointY( mePosLogical );
if ( bx == 1 && ty != by ){ by--; };
sel.SetActivePoint( mePosLogical, 1, ty, false );
sel.SetActivePoint( mePosLogical, 1, by+1, true );
var mark = commentMark();
var reg = new RegExp( "^([ \t]*" + mark + "\\s?)?(?=.)", "mg" );
mark += " ";
sel.Text = sel.Text.replace( reg, function( s0, s1 ){ return ( s1 == undefined )? mark : "" } );
function commentMark(){
switch( Document.Mode.toLowerCase() ){
case "text" : return "//";
case "javascript" : return "//";
case "tex" : return "%";
case "ruby" : return "#";
default : return Prompt( "コメントマーク?", "//");
};
};
masme 版
マクロ「テキスト整形」の「行頭 // を付加/削除」を独立・改造したバージョンです。
行頭(論理行)にコメント文字が有れば削除(アンコメント)し、無ければ付加(コメントアウト)します。
- 空白行(改行/半角空白/水平タブのみの行)はコメントアウトしないようにしました。
- 初期設定では、インデントされたコメント文字には対応していません。
「indent」変数を「false」から「true」に書き換えると、手石 版のように行頭空白後のコメント文字も削除するようになります。
インデントへの対応は、手石 版と同様に削除限定です。付加するときは行頭(論理行)になります。 - 編集モードによる定義切替は、マクロ「Eclipse風コメントアウト」を参考にしました。
更新履歴
- 2016/02/28
- 編集モードによる定義切替が正常に機能していないミスを修正。
- 2015/02/14
- 特殊文字の対処にミスがあったため再修正。
- 2015/02/14
- 「行コメント文字の定義」に正規表現の特殊文字があると誤動作する不具合を修正。
- 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正。
- テキストの処理方法を変更。
- 2014/02/22
- 初版公開。
ソースコード
//■行コメントのアン・アウト
// 2014/02/11-2016/02/28
//・行頭にコメント文字が有れば削除し、無ければ付加する。空白行には付加しない。
//■行コメント文字の定義 ●初期値="//"
var comment = "//";
//■インデントされたコメント文字も削除(true:する/false:しない) ●初期値=false
var indent = false ? "[ \t]*" : "";
//▼編集モードによる定義切替
comment = (function(){
switch (Document.Mode.toLowerCase()) {
case "bat":
return "::";
case "c#":
case "c++":
case "javascript":
return "//";
case "ini":
case "python":
case "ruby":
return "#";
case "visualbasic":
case "vbscript":
return "'";
default:
return comment;
}
})();
var Sel = Document.Selection;
var ty = Sel.GetTopPointY(mePosLogical);
var by = Sel.GetBottomPointY(mePosLogical);
var bx = Sel.GetBottomPointX(mePosLogical);
var br =(Sel.Text.match(/\n/g)||[]).length;
if (bx===1 && by-ty===br && br) by--; //下端行頭を含めないよう対策
Sel.SetActivePoint(mePosLogical,1,by+1);
Sel.SetAnchorPoint(mePosLogical,1,ty);
Sel.Text = Sel.Text.replace(
new RegExp("^("+indent+")"+comment.replace(/[$()*+.?[\\\]^{|}]/g,"\\$&")+"|^(?![ \t]*$)","gm"),
function($0,$indent){return $0? $indent : comment}
); //コメント行ならコメント文字削除 | 空白行でない行頭なら文字付加
Sel.SetActivePoint(mePosLogical,1,by+1);
Sel.SetAnchorPoint(mePosLogical,1,ty);
スポンサーリンク