全角/半角 トグル変換

提供: MeryWiki
ナビゲーションに移動 検索に移動

選択範囲の文字列の 全角/半角 トグル変換

  • 選択範囲なしのときは、カーソル位置の単語を範囲選択する。
  • 選択範囲の文字列が変更されなかったときは履歴を巻き戻して「変更行」のマーキングを残さない(はず)。


大文字/小文字の相互変換は >> 「大文字/小文字/頭文字 トグル変換」マクロ
全角または半角を指定しての変換は >> 「全角/半角変換」マクロ(※要 GetKeyState.exe


ソースコード[編集]

ダウンロード: 「ファイル:全角/半角 トグル変換.zip」(アイコン入り)
  • 2019/05/20: 初版
#title = "全角/半角変換"
#tooltip = "全角/半角 トグル変換"
// #icon = "AA[4].ico"

var d = editor.ActiveDocument;
var s = editor.ActiveDocument.selection;

// 非選択時には単語を選択
if ( s.IsEmpty ) {
  var pos = s.GetActivePos();
  s.SelectWord();
}
var st = s.Text;
var sv = d.Saved;

if ( st ) {
  s.ChangeWidth( meWidthHalfWidth );
  if ( s.Text == st ) {
    d.Undo();
    s.ChangeWidth( meWidthFullWidth );
    if ( s.Text == st ) {
      d.Undo();
      d.Saved = sv;
    }
  }
  if ( pos >= 0 ) {
    s.SetActivePos( pos );
  }
}
if ( d.ReadOnly ) {
  Status = " このドキュメントは書き換え禁止です。";
}

メモ[編集]

  • アルファベットや数字、記号、カタカナが混在していても使いやすいよう、「選択範囲なしのときは、カーソル位置の単語を範囲選択する」仕様にしてあります。
    「行全体を自動選択する」仕様に変更したい場合は、ソースコード内の s.SelectWord(); の行を以下のように書き換えてください。
  s.SelectLine();
  • 大文字/小文字変換と同じように変換実行前の文字列の構成から変換可能であるかを判別するのは面倒なので、「半角に変換」を実行→文字列に変更がなければ「全角に変換」を実行→文字列に変更がなければ undo する、という仕様にしてあります。
    なんらかの条件により undo 処理が誤爆する可能性もあるので、とりあえず【実験】マクロという扱いで置いておきます。
d.Undo(); の行2ヶ所をコメントアウトすれば、なんら憂慮なく使用できますが、文字列に変更がなかった場合にも「未保存*」フラグ、「変更行」の強調表示、アンドゥ履歴(操作履歴)が残ります。
→ sukemaru の自家使用では誤爆などのバグが発生しないようなので、【実験】カテゴリから 変換・ソート・整形 カテゴリに移動しました。(2019/07/06 sukemaru)
スポンサーリンク