添付ファイルの情報



[添付ファイル一覧] [全ページの添付ファイル一覧]

fileCommentOutSlaSla.js
格納ファイル名:attach/4D6163726F2FC5EAB9C62F313936_436F6D6D656E744F7574536C61536C612E6A73
ページ:Macro/投稿/196
格納ファイル名:attach/4D6163726F2FC5EAB9C62F313936_436F6D6D656E744F7574536C61536C612E6A73
MD5ハッシュ値:6fd189810bb5daeb9ecf1a2cf059da3f
サイズ:7.2KB (7333 bytes)
Content-type:application/octet-stream
登録日時:2014/05/31 22:46:41
アクセス数:490
MD5ハッシュ値:6fd189810bb5daeb9ecf1a2cf059da3f
fileCommentOutSlaSla.js
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
/*
 [概要]
	行頭を "//" でコメントアウトします。
	
	範囲選択されていない場合、カーソルのある行をコメントアウトします。
	範囲選択されている場合、選択範囲にある行すべてをコメントアウトします。
	(矩形選択でも同じです。)
	範囲選択は、行頭からではなく行の途中から(桁位置>=2)でも構いません。
	
	コメント文字列はデフォルトでC/C++スタイルですが、
	ファイルの拡張子、及び 現在適用されているタイプ別設定 により変わります。
	(対応:sakura:1.6.5.0以降)
 [変更履歴]
	2014/05/24	case "xxx" 追加:def, awk, sql,plsql
				case "psp" 変更:"#"→"--"
				タイプ別設定によりコメント文字列を変える。
				選択範囲の最大行数制限を廃止。
				ReplaceAll()→InsText()に。
	2009/04/15	新規
*/
 
//2014/05/24 選択範囲の最大行数制限を廃止。
//	// メッセージボックスのタイトル。
//	var CAPTION = Editor.ExpandParameter("$M");						// $M=マクロ名(フルパス)。
//	CAPTION = CAPTION.substring( CAPTION.lastIndexOf("\\") + 1 );	// ファイル名部分の取り出し。
//	// メッセージボックスを出すのにWshShell.Popup()を使用する。
//	//	書式(MSDNのWSHより): intButton = WshShell.Popup(strText,[nSecondsToWait],[strTitle],[nType])
//	var WshShell = new ActiveXObject("WScript.shell");
//	// 選択範囲の最大行数。(安全の為、制限する。)
//	var nMAX_LINES = 50;
 
 
 
//--------------
// メイン
Main();
 
function Main()
{
    var sExt;                    // ファイル名の拡張子。(ピリオドを含まない)
    var sTypeExtAry;            // 現在適用されているタイプ別設定の拡張子。(「基本」は除く)
    var sKey, sTypeExt;
    var sComment;                // コメント文字列。
    //2014/05/24 ReplaceAll()→InsText()に変更。
    //	var bits;					// 置換ダイアログの状態。
    var sSrc;                    // 選択文字列。
    
    // エディタがビューモード(読み取り専用)なら終了。
    if( Editor.ExpandParameter("${R?読専$:$:$}") == "読専" ) return;
    
    // ファイル名の拡張子に応じてコメント文字列を変える。
    //		ASPでもVBScriptだけでなくJScriptも使いたい場合がありそう。
    //		他にも、ASPXでC#とVBを使う場合等々…。
    sExt = Editor.ExpandParameter("$f").replace( /^(.*\.|.*)/, "" ).toLowerCase();
    
    //2014/05/24 タイプ別設定によりコメント文字列を変える。
    // 現在適用されているタイプ別設定(タイプ別設定の一時適用)に対応。
    // ファイル名の拡張子より優先させる。(但し「基本」のタイプ別設定は除く。)
    //		例1: .logファイル(「テキスト」「TeX」に登録)で、「TeX」を一時適用。
    //				→ 拡張子を "tex" に。
    //		例2: .logファイルで、「基本」を一時適用。
    //				→ 拡張子は "log" のまま。(「基本」は除く。)
    //		IsSameTypeExt("xxx","<N/A>"):拡張子 "xxx" がタイプ別設定「基本」かを調べる。
    //			タイプ別設定に登録されていない拡張子は「基本」扱いになるので
    //			"xxx" が「基本」(未登録)なら1、「基本」以外なら0が返る(はず)。
    sTypeExtAry = [
        // デフォルト。
        "txt",        "c",        "html",        "sql",        "cbl",
        "java",        "asm",        "awk",        "bat",        "dpr",
        "tex",        "cgi",        "bas",        "rtf",        "ini",
        // ユーザーが追加。(拡張子が未登録(=「基本」)なら無視される。)
        "mac",
        "ppa",
        "js",
    ];
    for( sKey in sTypeExtAry ){
        sTypeExt = sTypeExtAry[ sKey ];
        if( (Editor.IsCurTypeExt( sTypeExt )) && (!Editor.IsSameTypeExt( sTypeExt, "<N/A>" )) ){
            sExt = sTypeExt.toLowerCase();
            break;
        }
    }
    
    // 拡張子毎のコメント文字列。(case "xxx" のxxxは必ず小文字で。)
    switch( sExt ){
    case "asm":
    case "def":
    case "ini":    case "inf":    case "reg":    case "wsh":
        sComment = ";";
        break;
    
    case "asp":
    //case "aspx":
    case "vb":    case "bas":    case "cls":    case "frm":
    case "vbs":
    //case "wsf":
        //sComment = "Rem ";
        sComment = "'";        // アポストロフィ
        break;
    
    case "bat":    case "cmd":
        sComment = "rem ";
        break;
    
    case "awk":
    case "cgi":
    case "conf":
    //case "php":
    case "pl":    case "pm":
    case "pls":
        sComment = "#";
        break;
    
    case "psp":
    case "sql":    case "plsql":
        sComment = "--";
        break;
    
    //tex,ltx,sty,bib,log,blg,aux,bbl,toc,lof,lot,idx,ind,glo
    case "tex":
        sComment = "%";
        break;
    
    case "":
    default:
        sComment = "//";
        break;
    }
    
    // カーソル行(非選択時) または 選択範囲の行すべてを範囲選択する。
    if( !SelectLinesOnSelectedRange() ) return;
    if( Editor.IsTextSelected() == 0 ){        // EOFのみの行(ファイルが空も該当)
        Editor.InsText( sComment );
        return;
    }
    
    //2014/05/24 ReplaceAll()→InsText()に変更。
    //	// 選択範囲の行頭を "//" に置換する。(Undoは1回。)
    //	bits = 1<<7|1<<2;
    //	bits |= 1<<4;			// bit4:検索ダイアログを自動的に閉じる
    //	// ↑検索ダイアログ(置換ダイアログではなく)で、「検索ダイアログを自動的に閉じる」を
    //	//   OFFにしたい場合は、「bits |= 1<<4;」の行をコメントにしてください。
    //	Editor.ReplaceAll( "^", sComment, bits );
    //	Editor.CancelMode();			// 選択状態の取り消し
    //	Editor.SearchClearMark();		// 検索マークのクリア
    sSrc = Editor.GetSelectedString(0);
    sSrc = sSrc.replace( /^(?:(?:[^\r\n]*(?:\r\n|\r|\n))|[^\r\n]+)/gm, sComment + "$&" );
    Editor.InsText( sSrc );
    Editor.ReDraw();
}
 
 
//--------------------------------------------------------------
// カーソル行(非選択時) または 選択範囲の行すべてを範囲選択する。
// 選択範囲の開始桁、終了桁は行の途中でも可。(行全体を選択していなくても可。)
// EOFのみの行(行番号が表示されない行)だと何も選択されない(非選択状態)。
//	戻り値:true=成功 / false=メッセージボックスでCancel
function SelectLinesOnSelectedRange()
{
    var nIsTextSelected;
    var row1, row2, col2;
    var y1, y2, x2;
    //2014/05/24 選択範囲の最大行数制限を廃止。
    //	var ans;
    
    nIsTextSelected = Editor.IsTextSelected();
    if( nIsTextSelected == 0 ){
        // カーソルのある行を1行選択。
        Editor.SelectLine(0);
    }else{
        // 選択範囲の開始行(の行頭)から終了行(の行末)までを選択。
        
        row1 = Editor.GetSelectLineFrom();        // 選択開始行(折り返し単位)
        row2 = Editor.GetSelectLineTo();        // 選択終了行(折り返し単位)
        col2 = Editor.GetSelectColmTo();        // 選択終了桁(折り返し単位)
        // 選択状態の取り消し。(範囲選択開始(F6)、矩形範囲選択開始(Shift+F6)の取り消し。)
        Editor.CancelMode();
        // 選択開始行の行頭(改行単位)へ移動。
        Editor.Jump( row1, 0 );                    // 折り返し単位
        Editor.GoLineTop( 1<<3|1<<0 );            // 行頭(改行単位)
        y1 = Editor.ExpandParameter("$y") -0;    // 行位置(改行単位)、文字列→数値
        // 範囲選択開始。
        Editor.BeginSelect();
        // 選択終了行の、次の行の行頭へ移動。
        Editor.Jump( row2, 0 );                    // 折り返し単位
        y2 = Editor.ExpandParameter("$y") -0;    // 行位置(改行単位)、文字列→数値
        x2 = Editor.ExpandParameter("$x") -0;    // 桁位置(改行単位)、文字列→数値
        if( (nIsTextSelected != 2)
            && ((col2 == 1) && (x2 == 1))        // 選択終了位置は行頭(改行単位)だった。
            && (Editor.GetSelectLineTo() >= row2)    // 最終行選択や、選択開始行=終了行だと偽。
        ){
            //y2 = y2;	そのまま。
        }else{
            y2++;    // 選択終了行の行末まで(次の行の行頭まで)を選択。(EOF行なら最後まで。)
        }
        Editor.Jump( y2, 1 );                    // 改行単位
        // 範囲選択終了 しておく。
        Editor.BeginSelect();
        
        //2014/05/24 選択範囲の最大行数制限を廃止。
        //	// 選択範囲の最大行数。(安全の為、制限する。)
        //	if( y2 - y1 > nMAX_LINES ){
        //		ans = WshShell.Popup(
        //			"選択範囲が多すぎます。\n" + 
        //			"安全のため、最大 " + nMAX_LINES + " 行に制限しています。\n\n" +
        //			"続けますか?", 0, CAPTION,
        //			1|48|256 );		// 1=MB_OKCANCEL, 48=MB_ICONEXCLAMATION, 256=MB_DEFBUTTON2
        //		if( ans != 1 ){		// 1=IDOK
        //			//Editor.CancelMode();	とりあえず選択したまま。
        //			return false;
        //		}
        //	}
    }
    return true;
}




    


    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS