#3857

ShuHei
メンバー

emacs等には用意されていた機能と思います

すみません、思いっきり誤解してました。
emacsのtranspose-charsだと大体こんな感じですね。
参考までにどうぞ。

transpose_chars.jsee

Redraw= false;
transpose_chars();
Redraw = true;
Quit();

// Functions
function transpose_chars()
{
if(isStartOfDocument())
{
status = “Beginning of buffer”
return;
}

transpose_chars = document.selection.Text;

if(transpose_chars == “”)
{
with(document.selection)
{
if(!isEndOfLine())
CharRight(false,1)

CharLeft(true,2);

transpose_chars = Text;

line = transpose_chars.split(“”).reverse()

if(line[1] == “n” && line[2] == “r”)
{
//CR+LFの帳尻あわせ
nline = new Array;
nline[0] = line[0];
nline[1] = line[2]+line[1];
line = nline;
}
Text = line.join(“”);
}
}
}

function isStartOfDocument()
{
var p = new Object;
p = getPos()
return (p[‘x’] == 1 && p[‘y’] == 1) ? true : false;
}

function isEndOfLine()
{
var p;
with(document.selection)
{

p = getPos();
x1 = GetActivePointX(eePosLogical);
EndOfLine()
x2 = GetActivePointX(eePosLogical);
setPos(p);
}
return (x1 == x2) ? true : false;
}

function getPos()
{
var pos = new Object;
with(document.selection)
{
pos = {
x : GetActivePointX(eePosLogical),
y : GetActivePointY(eePosLogical)
}
}
return pos
}

function setPos(pos)
{
with(document.selection)
{
SetActivePoint(eePosLogical,pos[‘x’],pos[‘y’])
}
}

#functionの名前はswap->convcase, reverse->transposeに書き換えさせてもらいました。
#ぜいたくを言うと、メニュー無しのショートカットキーで起動したいところですが、これはマクロでは無理ですよね。

ショートカットキーはマクロを一度実行後にヘルプメニューの「キーボードマップ」から割り当てられます。

ちなみに大文字小文字をスワップするマクロは
ライブラリにあるtakuyaさんのマクロを使ったほうが
様々なケースでも変換できるのでオススメです。