TeraPadのCtrl↑と同じような動作をするマクロ

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

2chで要望があったので作ってみました。
window内に表示されている文章行数を取得する方法を思いついたので。

/*
TeraPadのCtrl+↑と同じような動作
*/
 
// カーソル位置を保存
var cursorX=Document.Selection.GetActivePointX(mePosView);
var cursorY=Document.Selection.GetActivePointY(mePosView);
// スクロール位置を保存
var sx = ScrollX;
var sy = ScrollY;
 
//表示されている一番下の行は sy+viewLines で表すことが出来る
 
if (ScrollY == 1){//スクロール出来なくなったときはカーソルが上がるだけ
	Document.Selection.SetActivePoint(mePosView , cursorX, cursorY -1, false);
}else{
	//window内に表示されている文章行数を取得
	window.Redraw=false;
	Document.Selection.SetActivePoint(mePosView , 1, ScrollY, false);
	Document.Selection.PageDown(true);
	var viewLines =Document.Selection.GetBottomPointY(mePosView ) - Document.Selection.GetTopPointY(mePosView );
	Document.Selection.PageUp (false);
	Document.Selection.SetActivePoint(mePosView , cursorX, cursorY, false);
	window.Redraw=true;
 
	if (cursorY > sy+viewLines - 3){//カーソルが表示されているところからなくならないように
		Document.Selection.SetActivePoint(mePosView , cursorX, cursorY -1, false);
	}
	ScrollX = sx;
	ScrollY = sy -1;
}