#4255

匿名

個人的には、標準コマンドで用意してほしいんですけど、利用者が日本人となると、日本語版だけ用意するってのも大変なんですかね。この機能のプラグインがないのは不思議ですね。正確に作るのはややこしいのでしょうかね。自分も使う機会ありそうなので、一応マクロで作ってみました。 即席なので、作りが荒いのはお許しを。

//平とカナで対応がない文字もあるようなので、対応がある一般的な文字だけのひらカナ変換マクロです。
//
//カタカナを選ぶと、選択範囲中の全ての平仮名が全てのカタカナになります。
//ひらがなを選ぶと、選択範囲中の全てのカタカナが全て平仮名になります。
//カタカタ→平仮名 平仮名→カタカナ同時入れ替えとかは、自分で作ってください。
//ポップアップメニューが面倒な場合は、はずしてマクロを分けてください。

var hirakana = new ConvertHiraganaKatakana();
var mm = new Array(
{ title: ‘カタカナ(&K)’, act: hirakana.Katakana },
{ title: ‘ひらがな(&H)’, act: hirakana.Hiragana }
);

var menu = CreatePopupMenu();
mm.unshift({});
if( !document.selection.IsEmpty ) {
for( var i =1; i<mm.length; i++) { menu.Add( mm.title, i );}
menu.Add( "", 0, eeMenuSeparator );
}
menu.Add( ScriptName+"(&C)", 0, eeMenuGrayed );
var result = menu.Track();
if(result == 0) Quit();
document.selection.text = mm[result].act(document.selection.text);
//editor.NewFile();
//document.selection.text = hirakana.TableDisp().join("n");
Quit();

function ConvertHiraganaKatakana () {

// 一般的なものだけに絞る
// 参考ヘルプ http://jp.emeditor.com/modules/xoopsfaq/index.php?cat_id=4#q39
//ひらがな [x{3041}-x{309e}]
//全角カタカナ [x{309b}-x{309c}x{30a1}-x{30fe}]

var table = CreateHiraKanaTable();

this.Katakana = function (str) {
return str.replace(
/[u3041-u3094]/g,
function (chr){ return table[ chr ] }
);
}

this.Hiragana = function (str) {
return str.replace(
/[u30a1-u30e4]/g,
function (chr){ return table[ chr ] }
);
}

this.TableDisp = function () {
var t = new Array();
for( var key in table ) { t.push( key + table[key] );}
return t;
}

function CreateHiraKanaTable() {
var hira
var table = {};
// for( var i = 0x3041; i<0x309e; i++ ) {
for( var i = 0x3041; i<0x3094; i++ ) {
hira = String.fromCharCode( i );
table[ hira ] = String.fromCharCode( i + 0x60);
table[ table[ hira ] ] = hira;
}
return table;
}
}