差分

ナビゲーションに移動 検索に移動

対応する括弧に移動

2,884 バイト追加, 2019年12月1日 (日) 01:16
Redraw = true;
</source>
<br>
= masme 版 =
}
</source>
<br>
= 範囲選択の拡張 =
(sukemaru 2019/04/24)<br>
[[GetKeyState.exe(キー状態取得実行ファイル)]] を利用して、'''カッコを含めた全体を範囲選択'''、または'''カッコの内側部分だけを範囲選択'''するための追加コードです。<br>
[[#masme 版|masme 版]] (2019/04/12) のソースコードに追加コードを挿入してください('''2ヵ所''')。<br><br>
<span style="color:#c00;">ツールバーアイコンやメニュー(マクロメニューや右クリックメニュー)からマクロを実行するさいに Ctrl または Shift キーを押しながら実行すると、拡張コードが適用されます。 </span><br>
* <kbd>Ctrl</kbd> キーを押しながらマクロを実行した場合には、カッコを含めた全体を範囲選択します。
: :<span style="background:#bfdfff;">【 Ctrl ありでの選択範囲 】【 Ctrl ありでの選択範囲 】</span> → ※カーソルは 開きカッコの左 (選択範囲の先頭)
* <kbd>Shift</kbd> キーを押しながらマクロを実行した場合には、カッコの内側部分だけを範囲選択します。
: : 【<span style="background:#bfdfff;"> Shift ありでの選択範囲  Shift ありでの選択範囲 </span>】 → ※カーソルは 閉じカッコの左 (選択範囲の末尾)
* <kbd>Ctrl</kbd><kbd>Shift</kbd> キー両方が押されている(または両方とも押されていない)場合には、masme 版の設定変数「SHIFT」の true / false で指定された動作をします。
: :<span style="background:#bfdfff;">【 SHIFT【 SHIFT=true のばあい のばあい </span>】
※「対応する括弧に移動」を連続で実行(トグル移動)できるよう、拡張機能で範囲選択したあともカーソルは開きカッコか閉じカッコいずれかの「カッコの左」にセットされます。
: Ctrl → 開きカッコの左 (選択範囲の先頭): Shift → 閉じカッコの左 (選択範囲の末尾)<br><br>※ ショートカットキーでマクロを実行する場合、Ctrl キーを含むパターン、Shift キーを含むパターン、Ctrl と Shift 両方を含む(または両方を含まない)パターンのみっつのショートカットキーを登録する必要があります。すでに 両方を含む(または両方を含まない)パターンのみっつのショートカットキーを登録する必要があります。 すでに masme 版「対応する括弧に移動」にショートカットキーを割り当てて使用している場合、この追加コードを使用するにあたり、ショートカットの再割り当てをしてください。版「対応する括弧に移動」マクロにショートカットキーを割り当てて使用している場合、この追加コードを使用するにあたり、ショートカットの再割り当てをしてください。<br>
e.g. Ctrl+F9 / Shift+F9 / Ctrl+Shift+F9(または Alt+F9 など)
<span style="color:#c00;">※ 外部実行ファイル GetKeyState.exe を2回呼び出すため、拡張コードの処理にはタイムラグが生じます。選択範囲が確定するまで Ctrl または Shift キーを押しっぱなしにしてください。</span><br><br>
※ GetKeyState.exe のダウンロードや導入方法については、マクロライブラリ内の「[[GetKeyState.exe(キー状態取得実行ファイル)]] 」のページへ
<br><br>
;追加コード➀<br>
15行目<br> <syntaxhighlight lang="javascript" inline>if (iBrc===-1 || sBrc==="") { Status = "カーソル右側に括弧がありません"; break quit; }</syntaxhighlight><br>の下に追加するの下に'''追加'''する<br>※「[[#カーソルの右側にカッコがないなら左側のカッコで|カーソルの右側にカッコがないなら左側のカッコで]]」の改造コードと併用する場合は、改造コードの下に挿入してください。
<source lang="javascript">
// ▼ GetKeyState を利用した機能拡張 ▼
// ▲ GetKeyState を利用した機能拡張 ▲
</source>
<br>
;追加コード➁<br>
37行目<br> <syntaxhighlight lang="javascript" inline>Status = "対応する括弧の距離: "+(Math.abs(ePos - sPos)-1)+"文字";</syntaxhighlight><br>の下に追加するの下に'''追加'''する
<source lang="javascript">
// ▼ GetKeyState を利用した機能拡張 ▼
* 2019/05/12 変数名間違いを修正 sel → Sel (sukemaru)
<br><br>
 
= カーソルの右側にカッコがないなら左側のカッコで =
(sukemaru 2019/12/01)<br>
<span style="color:#c00;">カーソルの右側にカッコがないとき</span> で、左側にカッコがあるなら、そのカッコに対応するカッコに移動します。<br>
* <b style="color:#c00;">右側のカッコ優先</b> です。<br>
: 移動後は対応する '''カッコの左側''' にカーソルがセットされます(連続で実行しても元のカッコの左側に)。
<br>
[[#masme 版|masme 版]] (2019/04/12) のソースコードを以下のとおり書き換えてください。
 
'''変更箇所''': 15 行目<br>
<syntaxhighlight lang="javascript" inline>if (iBrc===-1 || sBrc==="") { Status = "カーソル右側に括弧がありません"; break quit; }</syntaxhighlight><br>
をコメントアウトして
<source lang="javascript">
// if (iBrc===-1 || sBrc==="") { Status = "カーソル右側に括弧がありません"; break quit; } // ※ 1行 コメントアウト
 
// ▼ カーソルの左側にカッコがある場合に対応 ▼
if (iBrc>-1 && sBrc) { /* empty */ ; }
else if (BRACKET.indexOf(txt.charAt(sPos-1))>-1) {
sPos = ePos = sPos-1;
sBrc = txt.charAt(sPos);
iBrc = BRACKET.indexOf(txt.charAt(sPos));
}
else { Status = "カーソルの側に括弧がありません"; break quit; }
// ▲ カーソルの左側にカッコがある場合に対応 ▲
</source>
 
※「[[#範囲選択の拡張|範囲選択の拡張]]」コードを併用する場合は、この変更箇所の下に「追加コード①」を挿入してください。
<br><br>
 
== おまけ ==
[[#masme 版|masme 版]] (2019/04/12) のソースコードに '''カッコの種類を追加''' します。<br>
4 行目<br>
<syntaxhighlight lang="javascript" inline>var BRACKET = "()<>[]{}「」『』【】()";</syntaxhighlight><br>
の下に追加する
<source lang="javascript">
BRACKET += "<>[]{}「」〖〗⦅⦆〈〉《》〚〛〔〕〘〙‹›«»≪≫〝〟‘’“”︵︶︿﹀︽︾︷︸﹁﹂﹃﹄︻︼︹︺";
</source>
 
※ 左右のカッコのかたち(文字)が異なるペアしか登録できないので、半角二重引用符 <syntaxhighlight lang="javascript" inline> "" </syntaxhighlight> や 半角一重引用符 <syntaxhighlight lang="javascript" inline> '' </syntaxhighlight> は不可。
1,141

回編集

スポンサーリンク

案内メニュー

スポンサーリンク
スポンサーリンク
スポンサーリンク