1,199
回編集
(sukemaru 第2版。ZIP 書庫更新) |
(修正版) |
||
1行目: | 1行目: | ||
== ひらがな/カタカナ トグル変換 == | == ひらがな/カタカナ トグル変換 == | ||
実行するごとに「ひらがな ⇔ カタカナ」の相互変換をします。 | 実行するごとに「ひらがな ⇔ カタカナ」の相互変換をします。<br> | ||
※ ひらがなとカタカナが混在した文字列はカタカナに統一します。 | |||
=== マルチカーソル/複数選択範囲での動作 === | |||
'''マルチカーソル/複数選択範囲''' での推奨動作要件: Mery ver <b style="color:#c00;">3.0.1</b> 以上 | |||
<br><br> | <br><br> | ||
; 制限事項<br> | |||
* <span style="color:#c00;">複数の選択範囲にたいして統一的に「ひらがな化」または「カタカナ化」の変換を適用することはできません。</span><br> それぞれの選択範囲ごとに「ひらがな化/カタカナ化」の変換方式が個別に適用されます(「カタカナ」の選択範囲と「ひらがな」の選択範囲がある場合、前者の選択範囲の文字列は「ひらがなに変換」され、後者の選択範囲の文字列は「カタカナに変換」されます。<br> また、ひらがな/カタカナの混在した文字列の場合はカタカナ化されます)。 | |||
<br> | |||
* エディタが折り返し表示になっているとき、<span style="color:#c00;">折り返しより後ろ(改行まで)の文字列は矩形選択範囲内の文字列とみなされません。</span><br> また、同一論理行内で完結した矩形選択では変換しません。<br> あらかじめ、変換の必用な部分だけを Ctrl+ドラッグ で複数選択範囲にするか「選択範囲を行に分ける」コマンド(右クリックメニュー用コマンド)を適用してから、このマクロを実行してください。 | |||
* <span style="color:#c00;">矩形選択範囲から実行した場合も変換後に選択範囲を復帰しますが、矩形選択範囲ではなく、複数選択状態になります</span> (文字幅が変わるため矩形選択ではズレてしまい、正常に復帰できない)。 | |||
<br> | |||
=== ソースコード === | |||
; ダウンロード >> 「[[ファイル:ひらがな/カタカナ変換.zip]]」(アイコン入り) | ; ダウンロード >> 「[[ファイル:ひらがな/カタカナ変換.zip]]」(アイコン入り) | ||
2020/06/24: | 2020/07/08: 第2版の修正版<br> | ||
* ひらがな/カタカナのない複数選択範囲から実行したときに UNDO 履歴が残らないように変更<br> | |||
2020/06/24: 第2版 | |||
* Mery ver 3.0.1 以降のマルチカーソル/複数選択範囲に対応 | |||
* ブックマーク保守の処理を最適化 | |||
2020/01/03: 初版 | 2020/01/03: 初版 | ||
<br><br> | <br><br> | ||
17行目: | 34行目: | ||
* -------------------------------------------------------- | * -------------------------------------------------------- | ||
* ひらがな/カタカナ トグル変換 | * ひらがな/カタカナ トグル変換 | ||
* sukemaru, 2020/01/03 - 2020/ | * sukemaru, 2020/01/03 - 2020/07/08 | ||
* -------------------------------------------------------- | * -------------------------------------------------------- | ||
* ※ Mery ver 3.0.1 以降の矩形選択範囲とマルチカーソル/複数選択範囲に対応 | * ※ Mery ver 3.0.1 以降の矩形選択範囲とマルチカーソル/複数選択範囲に対応 | ||
51行目: | 68行目: | ||
var arg = [ autoSelection ]; | var arg = [ autoSelection ]; | ||
// 選択範囲が1つで矩形選択ではないとき | // 選択範囲が1つで矩形選択ではないとき | ||
if ( ! s.Mode || s.Mode | if ( ! s.Mode || s.Mode == 1 ) { | ||
KanaGanaConv( arg ); | KanaGanaConv( arg ); | ||
} | } | ||
// 矩形選択または複数選択のとき | // 矩形選択または複数選択のとき | ||
else { | else { | ||
var st = s.Text; | |||
BeginUndoGroup(); | BeginUndoGroup(); | ||
AddUndo(); | AddUndo(); | ||
MultiFunction( KanaGanaConv, arg ); | MultiFunction( KanaGanaConv, arg ); | ||
EndUndoGroup(); | EndUndoGroup(); | ||
// 変換なしなら AddUndo を破棄する ◆2020/07/08◆ | |||
if ( s.Text === st ) { d.Undo(); } | |||
} | } | ||
100行目: | 120行目: | ||
if ( st ) { | if ( st ) { | ||
// ひらがな | // ● ひらがな ⇒ 全角カタカナ変換 「ゔ ゕ ゖ ⇒ ヴ ヵ ヶ」含む | ||
tmp = st.replace( /う[゛゙\u3099]/g, "ヴ" ) | tmp = st.replace( /う[゛゙\u3099]/g, "ヴ" ) | ||
.replace( /[\u3041-\u3096\u309D\u309E]/g, function( chr ) { | .replace( /[\u3041-\u3096\u309D\u309E]/g, function( chr ) { | ||
112行目: | 132行目: | ||
if ( st === tmp ) { | if ( st === tmp ) { | ||
// 全角カタカナ | // ● 全角カタカナ ⇒ ひらがな変換 | ||
// ※ 「ヷ ヸ ヹ ヺ」は「かな+濁点」に分解する | // ※ 「ヷ ヸ ヹ ヺ」は「かな+濁点」に分解する | ||
tmp = st.replace( /\u30F7/g, "わ゛" ).replace( /\u30F8/g, "ゐ゛" ) | tmp = st.replace( /\u30F7/g, "わ゛" ).replace( /\u30F8/g, "ゐ゛" ) | ||
125行目: | 145行目: | ||
} ); | } ); | ||
} | } | ||
// ※ Shift_JIS などでは「ヴ ヵ ヶ | // ※ Shift_JIS などでは「ヴ ヵ ヶ ⇒ う゛ ヵ ヶ」 | ||
else { | else { | ||
tmp = tmp.replace( /\u30F4/g, "う゛" ); | tmp = tmp.replace( /\u30F4/g, "う゛" ); | ||
213行目: | 233行目: | ||
* 関数 MultiFunction( Fn, arg1 ) | * 関数 MultiFunction( Fn, arg1 ) | ||
* マルチカーソル(複数選択範囲)に対応させる | * マルチカーソル(複数選択範囲)に対応させる | ||
* ※ 文字数が変化しないマクロ用: 矩形選択を復帰可 | |||
* | * | ||
* 第1引数: Function; 選択範囲ごとに適用する処理の関数 | * 第1引数: Function; 選択範囲ごとに適用する処理の関数 | ||
223行目: | 244行目: | ||
// 矩形選択範囲は行に分ける | // 矩形選択範囲は行に分ける | ||
var sMode = s.Mode; | var sMode = s.Mode; | ||
if ( sMode == | if ( sMode == 2 ) { | ||
var act = s.GetActivePos(), anc = s.GetAnchorPos(); | var act = s.GetActivePos(), anc = s.GetAnchorPos(); | ||
} | } | ||
s.Mode = | s.Mode = 3; | ||
// 選択範囲の座標を取得 | // 選択範囲の座標を取得 | ||
253行目: | 274行目: | ||
// 矩形選択範囲を復帰(文字数が変化していた場合はズレる) | // 矩形選択範囲を復帰(文字数が変化していた場合はズレる) | ||
if ( sMode == | if ( sMode == 2 ) { | ||
s.SetAnchorPos( anc ); | s.SetAnchorPos( anc ); | ||
s.SetActivePos( act, true ); | s.SetActivePos( act, true ); | ||
s.Mode = | s.Mode = 2; | ||
} | } | ||
// マルチカーソル(複数選択範囲)を復帰 | // マルチカーソル(複数選択範囲)を復帰 | ||
269行目: | 290行目: | ||
---- | ---- | ||
<br> | <br> | ||
以下2件、<b>参照 >> 『[[テキスト整形#字種/数値変換|テキスト整形]]』マクロ</b> | |||
== ひらがな → カタカナ変換 == | |||
<source lang="javascript"> | <source lang="javascript"> | ||
#title = "ひらがな → カタカナ変換" | #title = "ひらがな → カタカナ変換" | ||
284行目: | 305行目: | ||
</source> | </source> | ||
== カタカナ → ひらがな変換 == | |||
<source lang="javascript"> | <source lang="javascript"> | ||
#title = "全角カタカナ → ひらがな変換" | #title = "全角カタカナ → ひらがな変換" | ||
489行目: | 510行目: | ||
} | } | ||
</source> | </source> | ||
== メモ == | |||
@ Kuro さん <br> | |||
: 第2版でマルチカーソル/複数選択範囲からの実行と、選択範囲の復帰ができるようになりました。<br> | |||
また、ほかのテキスト操作・変換系マクロも同様にマルチカーソル対応にすることができました。<br> | |||
参考コードをいただき、ありがとうございました。(sukemaru, 2020/06/24 - 2020/07/08)<br> |
回編集