« 2010年03月 | メイン | 2010年07月 »

2010/05/15
EclipseのようなIDEのように選択範囲をコメント化/解除する秀丸マクロ

なぜかちょっとだけマイブームの秀丸マクロで選択範囲を"//"でコメント化とコメント化解除するマクロを作ってみました。
探せばありそうな気がとてもしたけど、気にせず作っちゃいました。
タイトルはEclipseのようなと書きましたが、動きはZend Development Environmentに合わせました。
選択範囲の最初の行の先頭が"//"以外の場合は選択範囲全てをコメント化します。
選択範囲の最初の行の先頭が"//"の場合は、選択範囲の行の先頭の"//"を削除します。

マクロを登録し、Ctrl + / のショートカットキーを割り当てるとIDEと同じ操作でコメント化できます。

comment1.mac(1.8kb)

//EclipseなどのIDEのように、単一行もしくは複数行をコメント化・コメント解除するマクロ


//範囲選択中の場合は、選択範囲の行すべてコメント化する。
if(selecting) {
	//現在の選択範囲を退避
	#tmp_seltopx = seltopx;
	#tmp_seltopy = seltopy;
	#tmp_selendx = selendx;
	#tmp_selendy = selendy;
	
	//一旦選択範囲を解除
	escape;
	
	//選択範囲の開始行から終了行までコメントにしていく
	#i = #tmp_seltopy;
	
	//行の先頭へ移動
	moveto 0, #i;
	//先頭行がコメント("//")かどうかのフラグ
	#comment_flag = false;
	//選択範囲を再設定する際のカーソルオフセット
	#offset = 2;
	if(code == 0x2F) { //0x2Fは"/"の文字コード
		right;
		if(code == 0x2F) {
			#comment_flag = true;
			#offset = -2;
		}
	}
	while(#i <= #tmp_selendy) {
		moveto 0, #i;
		//先頭行がコメントの場合は、選択範囲のコメント行を解除していく。
		if(#comment_flag == true) {
			//先頭の文字が"/"の場合
			if(code == 0x2F) {
				//右へ1文字移動
				right;
				//次の文字も"/"の場合、BSを2回発行してコメント化を解除する。
				if(code == 0x2F) {
					right;
					backspace;
					backspace;
				}
			}
		//先頭行がコメントではない場合は、選択範囲の行すべてをコメント化していく。
		} else {
			insert "//";
		}
		#i = #i + 1;
	}
	
	//カーソルを選択範囲開始位置に移動
	moveto #tmp_seltopx + #offset, #tmp_seltopy;
	
	//選択範囲を元に戻す
	beginsel;
	moveto #tmp_selendx + #offset, #tmp_selendy;
	endsel;

//範囲選択中ではない場合
} else {
	//現在のカーソル位置を退避
	#tmp_x = x;
	#tmp_y = y;
	//行頭に移動
	golinetop2;
	//先頭の文字が"/"の場合
	if(code == 0x2F) {
		//右へ1文字移動
		right;
		//次の文字も"/"の場合、BSを2回発行してコメント化を解除する。
		if(code == 0x2F) {
			right;
			backspace;
			backspace;
		}
		#tmp_x = #tmp_x - 2;
		if(#tmp_x < 0) {
			#tmp_x = 0;
		}
	} else {
		insert "//";
		#tmp_x = #tmp_x + 2;
	}
	moveto #tmp_x, #tmp_y;
}

2010/05/09
日付と時間を挿入するショートカットキーを実現する秀丸マクロ

とってもいまさら感満載ですが・・・

エクセルで日付を入力をする際、『Ctrl + ;』、時間を入力する際は『 Ctrl + : 』のショートカットキーを多用するのですが、それを秀丸で出来ないものかとふと思って調べてみました。

①以下の一行マクロをそれぞれ適当なファイル名でマクロ用フォルダに保存します。

日付を挿入するマクロ: insertdate.mac(1kb)
insert year + "/" + month + "/" + day

時間を挿入するマクロ: inserttime.mac(1kb)
insert hour + ":" + minute

マクロ用フォルダはデフォルトでは秀丸をインストールしたフォルダですが、
その他>動作環境メニューの、「環境」の中のマクロファイル用のフォルダを変更することで
任意のフォルダにすることも可能です。

②マクロ>マクロ登録 メニューで作成したマクロを登録します。
例)
マクロ1: タイトル:日付挿入 ファイル名:insertdate.mac
マクロ2: タイトル:時間挿入 ファイル名:inserttime.mac

③ショートカットキーを割り当てる
その他>キー割り当て メニューでキー割り当ての画面を呼び出します。
そのままではCtrl + ; や Ctrl + : のショートカットキーを割り当てることができませんが、
「キー割り当て拡張」のチェックを入れると割り当てが出来るようになります。

Ctrlにチェックを入れて、キーで「 ; 」を選択(時間挿入の場合は「 : 」を選択)し、
コマンドで、プルダウンから「メニュー/マクロ」を選んで、
リストボックスで先ほど登録したマクロを指定してキーを割り当てます。

これで、エクセルと同じようにCtrl+;で日付、Ctrl+:で時間をカーソル位置に挿入できるようになります。