「コメントマーク付け外し」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
Sukemaru (トーク | 投稿記録)
編集の要約なし
MSY-07 (トーク | 投稿記録)
余分なセミコロンの除去
 
(同じ利用者による、間の12版が非表示)
1行目: 1行目:
= 手石 版 (2014/03) =
== 手石 版 ==
コメントマークの付け外しをするマクロです。<br>
コメントマークの付け外しをするマクロです。
 
js 以外の拡張子に対応させる時は、最後の関数に追加してください。
js 以外の拡張子に対応させる時は、最後の関数に追加してください。


== 更新履歴 ==
=== 変更履歴 ===
* 2013/03/28
* 1.0.2 (2014-03-22)
** 無題のときに対応しました。
** できるだけ短くしてみました
* 2014/03/22
* 1.0.1 (2013-03-28)
** できるだけ短くしてみました。
** 無題のときに対応しました
* 1.0.0 (2013-03-27)
** 初版


== ソースコード ==
=== ソースコード ===
<source lang="javascript">
<syntaxhighlight lang="javascript" copy>
// コメントマーク.js
// コメントマーク.js
// 行頭コメントマークを付けたり外したり。
// 行頭コメントマークを付けたり外したり。
38行目: 41行目:
};
};
};
};
</source>
</syntaxhighlight>
 
== masme 版 ==
マクロ「[[テキスト整形]]」の「行頭 // を挿入/削除」を独立・改造したものです。


= masme 版 =
マクロ「[[テキスト整形]]」の「行頭 // を挿入/削除」を独立・改造したものです。<br>
論理行頭にコメント文字が有れば削除(アンコメント)し、無ければ挿入(コメントアウト)します。
論理行頭にコメント文字が有れば削除(アンコメント)し、無ければ挿入(コメントアウト)します。


* 空白行(改行/半角空白/水平タブのみの行)はコメントアウトしないようにしました。
* 空白行(改行/半角空白/水平タブのみの行)はコメントアウトしないようにしました。
* 初期設定では、インデントされたコメント文字には対応していません。<br>「indent」変数を「false」から「true」に書き換えると、手石 版のように行頭空白後のコメント文字も削除するようになります。<br>インデントへの対応は、手石 版と同様に削除限定です。挿入するときは論理行頭になります。
* 初期設定では、インデントされたコメント文字には対応していません。
** 「indent」変数を「false」から「true」に書き換えると、手石 版のように行頭空白後のコメント文字も削除するようになります。
** インデントへの対応は、手石 版と同様に削除限定です。挿入するときは論理行頭になります。
* 編集モードによる定義切替は、マクロ「[[Eclipse風コメントアウト]]」を参考にしました。
* 編集モードによる定義切替は、マクロ「[[Eclipse風コメントアウト]]」を参考にしました。


== 更新履歴 ==
=== 変更履歴 ===
; 2019/06/01
* 1.0.4 (2019-06-01)
* コメント文字を付け外しした次の行に変更行の印がつかないようにした。
** コメント文字を付け外しした次の行に変更行の印がつかないようにした
*: 末尾の改行(次の行頭)を範囲に含めず書き換えるように変更。
*** 末尾の改行(次の行頭)を範囲に含めず書き換えるように変更
; 2016/02/28
* 1.0.3 (2016-02-28)
* 編集モードによる定義切替が正常に機能していないミスを修正。
** 編集モードによる定義切替が正常に機能していないミスを修正
; 2015/02/14
* 1.0.2 (2015-02-14)
* 特殊文字があると誤動作する不具合を再修正。
** 特殊文字があると誤動作する不具合を再修正
; 2015/02/14
* 1.0.1 (2015-02-14)
* 「行コメント文字の定義」に正規表現の特殊文字があると誤動作する不具合を修正。
** 「行コメント文字の定義」に正規表現の特殊文字があると誤動作する不具合を修正
* 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正。
** 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正
* テキストの処理方法を変更。
** テキストの処理方法を変更
; 2014/02/22
* 1.0.0 (2014-02-22)
* 初版公開。
** 初版公開


== ソースコード ==
=== ソースコード ===
<source lang="javascript">
<syntaxhighlight lang="javascript" copy>
//■行コメントのアン・アウト
//■行コメントのアン・アウト
// 2014/02/11-2019/06/01
// 2014-02-11 - 2019-06-01
//・行頭にコメント文字が有れば削除し、無ければ挿入する。空白行には挿入しない。
//・行頭にコメント文字が有れば削除し、無ければ挿入する。空白行には挿入しない。


105行目: 111行目:
Sel.SetAnchorPoint(mePosLogical, 1, ty);
Sel.SetAnchorPoint(mePosLogical, 1, ty);
Sel.Text = Sel.Text.replace(new RegExp(
Sel.Text = Sel.Text.replace(new RegExp(
   "^("+indent+")"+comment.replace(/[$()*+.?[\\\]^{|}]/g,"\\$&"); //コメント行
   "^("+indent+")"+comment.replace(/[$()*+.?[\\\]^{|}]/g,"\\$&") //コメント行
  +"|^(?![ \t]*$)" ,"gm") //空白行でない行頭
  +"|^(?![ \t]*$)" ,"gm") //空白行でない行頭
  ,function($0,$indent){return $0 ? $indent : comment}
  ,function($0,$indent){return $0 ? $indent : comment}
111行目: 117行目:
Sel.SetActivePoint(mePosLogical,1,by+1);
Sel.SetActivePoint(mePosLogical,1,by+1);
Sel.SetAnchorPoint(mePosLogical,1,ty);
Sel.SetAnchorPoint(mePosLogical,1,ty);
</source>
</syntaxhighlight>

2025年11月25日 (火) 21:42時点における最新版

手石 版[編集]

コメントマークの付け外しをするマクロです。

js 以外の拡張子に対応させる時は、最後の関数に追加してください。

変更履歴[編集]

  • 1.0.2 (2014-03-22)
    • できるだけ短くしてみました
  • 1.0.1 (2013-03-28)
    • 無題のときに対応しました
  • 1.0.0 (2013-03-27)
    • 初版

ソースコード[編集]

// コメントマーク.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風コメントアウト」を参考にしました。

変更履歴[編集]

  • 1.0.4 (2019-06-01)
    • コメント文字を付け外しした次の行に変更行の印がつかないようにした
      • 末尾の改行(次の行頭)を範囲に含めず書き換えるように変更
  • 1.0.3 (2016-02-28)
    • 編集モードによる定義切替が正常に機能していないミスを修正
  • 1.0.2 (2015-02-14)
    • 特殊文字があると誤動作する不具合を再修正
  • 1.0.1 (2015-02-14)
    • 「行コメント文字の定義」に正規表現の特殊文字があると誤動作する不具合を修正
    • 矩形選択(始点or終点が左下かつ論理行頭)時、下端の行が範囲から漏れる不具合を修正
    • テキストの処理方法を変更
  • 1.0.0 (2014-02-22)
    • 初版公開

ソースコード[編集]

//■行コメントのアン・アウト
// 2014-02-11 - 2019-06-01
//・行頭にコメント文字が有れば削除し、無ければ挿入する。空白行には挿入しない。

//■行コメント文字の定義 ●初期値="//"
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 nn =(Sel.Text.match(/\n/g)||[]).length;
if (bx===1 && nn<=by-ty && nn) by--; //末尾改行対策
Sel.SetActivePoint(mePosLogical, 1, by);
Sel.EndOfLine(false, mePosLogical);
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);
スポンサーリンク