大文字/小文字/頭文字 トグル変換

提供: MeryWiki
移動先: 案内検索

編集メニュー >> 選択範囲を変換 の

  • 大文字に変換
  • 小文字に変換
  • 単語の最初の文字を大文字に変換

をトグル操作で実行します。

選択範囲に大文字/小文字が混在 → 「大文字に変換」
選択範囲が大文字のみ → 「小文字に変換」
選択範囲が小文字のみ → 「単語の最初の文字を大文字に変換」


変換を実行する前に「選択範囲に欧文文字があるかどうか」の判定をしない仕様なので、ラテンアルファベット(全角/半角 A~Z)以外にも、ローマ数字(Ⅰ~Ⅿ)やギリシャ文字(Α~Ω)、キリル文字(А~Я)、ダイアクリティカルマークつきの文字(À~Ý, Ç, Ş など)、リガチャ(合字 Æ, Œ など)等の追加文字にも対応します。[1][2]


  • 範囲選択がないときは、カーソル位置から右側を単語選択して変換します(変換後に範囲選択を解除する)
  • 「大文字/小文字変換」されなかったときは、編集履歴を巻き戻して「変更行」の強調表示や「未保存*」のフラグを残さないようにしてあります


全角/半角の相互変換は >> 「全角/半角 トグル変換」マクロ または「全角/半角変換」マクロ


ソースコード[編集]

ダウンロード
ファイル:大文字/小文字変換.zip」(アイコン入り)
  • 2019/05/11: 空行で実行すると無用にアンドゥするバグを修正
  • 2019/05/20: 選択範囲が1文字のときに大文字に変換できない不具合(「単語の最初の文字を大文字に変換」コマンドの仕様)を修正
#title = "大文字/小文字変換"
#tooltip = "大文字/小文字/頭文字 トグル変換"
// #icon = "A_a[9].ico"
// #icon = "Mery用 マテリアルデザインっぽいアイコン.icl",73

/**
 * 選択範囲のトグル変換
 *   大文字 → 小文字 → 先頭のみ大文字
 * 
 * 変換されなかったときは「変更行」の強調表示や「未保存*」のフラグを残さない
 * 
 * 範囲選択がなければカーソル位置から右側を単語選択して変換
 * (変換後に範囲選択を解除する)
 */

var d = editor.ActiveDocument;
var s = editor.ActiveDocument.selection;
var saved = d.Saved;
if ( s.IsEmpty ) {
  var pos = s.GetActivePos();
  s.WordRight( true );
}
var st = s.Text;

if ( st ) {
  // 選択範囲が大文字のみ → 「小文字に変換」
  if ( st.toLowerCase() != st
    && st.toUpperCase() == st ) {
    s.ChangeCase( meCaseLowerCase );
  }
  // 選択範囲が小文字のみ → 「単語の最初の文字を大文字に変換」
  else if ( st.length > 1
         && st.toLowerCase() == st
         && st.toUpperCase() != st ) {
    editor.ExecuteCommandByID( MEID_EDIT_CAPITALIZE = 2116 );
    // s.ChangeCase( meCaseCapitalize );
  }
  // 選択範囲に大文字/小文字が混在 → 「大文字に変換」
  else {
    s.ChangeCase( meCaseUpperCase );
    if ( s.Text == st ) {
      d.Undo();
      d.Saved = saved;
    }
  }
  if ( pos >= 0 ) {
    s.SetActivePos( pos );
  }
}
if ( d.ReadOnly ) {
  Status = " このドキュメントは書き換え禁止です。";
}

謝辞[編集]

「マテリアルデザインっぽいアイコンと『小マクロ集』」で紹介させていただいている「 大文字小文字変換」マクロを提供してくださった papagoat 氏に感謝を申しあげます。その折は大変お世話になり、ありがとうございました。

メモ[編集]

ツールバーアイコンを減らしたり、おぼえなきゃいけないショートカットキーを減らしたりするためにつくりました。

スポンサーリンク