web404

左または右方向に単語を選択するマクロ

左または右方向に単語を選択します。
連続して実行すると、指定方向の次の単語を選択します。
記号や改行は飛ばして、単語のみを選択します。
つまり、秀丸標準の単語選択(selectword)とは異なる動きをします。

このマクロにショートカットキーを割り当てて使います。
個人的には、「Alt+←」「Alt+→」に設定しています。
サルネン風単語範囲選択マクロと相性がいいです。

日本語でも使えますが、英語のほうがより効果的です。
ソースコードの編集に適しています。


ダウンロード

word_lr.zip


ソースコード

左方向に単語を選択するマクロ

#x = x; #y = y;
disabledraw;

call CheckLeft;
while (code == 13) call CheckLeft;	//行末の処理
call SelectLeft;

goto End;

CheckLeft:	//単語の左を調べる
	wordleft2;
	if (!(x + y)) {	//ファイル先頭の処理
		call SelectLeft;
		if (!selendcolumn) {
			moveto #x, #y;
			call SelectLeft;
		}
		goto End;
	}
	return;

SelectLeft:	//左方向に単語を選択
	wordrightsalnen2;
	beginsel;
	wordleft2;
	endsel;
	return;

End:	//終了処理
	enabledraw;
	endmacro;

右方向に単語を選択するマクロ

#x = x; #y = y;
disabledraw;

call CheckRight;
if (column && code == 13) {	//行末の処理
	#col = column;
	wordleft2;
	wordrightsalnen2;
	if (column < #col) {	//単語左と単語右の範囲が一致しない場合
		wordrightsalnen2;
		call CheckRight;
	}
}
wordleft2;
while (code == 13) {	//行またぎの範囲は対象外
	wordrightsalnen2;
	call CheckRight;
	wordleft2;
}
goto SelectRight;

CheckRight:	//単語の右を調べる
	wordrightsalnen2;
	if (code == -1) {	//ファイル末尾の処理
		wordleft2;
		if (code == 13) {
			moveto #x, #y;
			goto End;
		}
		goto SelectRight;
	}
	return;

SelectRight:	//右方向に単語を選択
	beginsel;
	wordrightsalnen2;
	endsel;
	goto End;

End:	//終了処理
	enabledraw;
	endmacro;

目的とする機能は単純なんですが、左方向と右方向でソースコードはかなり異なります。
特に、右方向は改行周辺の処理がややこしく、相対的に長くなっています。