「選択範囲を上下に移動」の版間の差分
ナビゲーションに移動
検索に移動
ソースコードの整形 |
ソースコードの単語の先頭文字を小文字に修正 |
||
| 13行目: | 13行目: | ||
#title = "選択範囲を上へ移動" | #title = "選択範囲を上へ移動" | ||
var s = | var s = document.selection; | ||
var ty = s.GetTopPointY(mePosLogical); | var ty = s.GetTopPointY(mePosLogical); | ||
var by = s.GetBottomPointY(mePosLogical); | var by = s.GetBottomPointY(mePosLogical); | ||
| 22行目: | 22行目: | ||
// ブックマークの待避 | // ブックマークの待避 | ||
var bookmarkList = GetBookmarkList( | var bookmarkList = GetBookmarkList(document, ty - 1, by, true); | ||
// 選択行を上へ移動 | // 選択行を上へ移動 | ||
| 59行目: | 59行目: | ||
top = (top == null || top < 1) ? 1 : top; | top = (top == null || top < 1) ? 1 : top; | ||
bottom = (bottom == null || bottom > lines) ? lines : bottom; | bottom = (bottom == null || bottom > lines) ? lines : bottom; | ||
var s = doc. | var s = doc.selection; | ||
var b = []; | var b = []; | ||
if (lines == 1) { | if (lines == 1) { | ||
| 93行目: | 93行目: | ||
#title = "選択範囲を下へ移動" | #title = "選択範囲を下へ移動" | ||
var s = | var s = document.selection | ||
var ty = s.GetTopPointY(mePosLogical); | var ty = s.GetTopPointY(mePosLogical); | ||
var by = s.GetBottomPointY(mePosLogical); | var by = s.GetBottomPointY(mePosLogical); | ||
if ( | if (document.GetLines(0) > by) { | ||
Redraw = false; | Redraw = false; | ||
var sx = ScrollX; | var sx = ScrollX; | ||
| 102行目: | 102行目: | ||
// ブックマークの待避 | // ブックマークの待避 | ||
var bookmarkList = GetBookmarkList( | var bookmarkList = GetBookmarkList(document, ty, by + 1, true); | ||
// 選択行を下へ移動 | // 選択行を下へ移動 | ||
| 139行目: | 139行目: | ||
top = (top == null || top < 1) ? 1 : top; | top = (top == null || top < 1) ? 1 : top; | ||
bottom = (bottom == null || bottom > lines) ? lines : bottom; | bottom = (bottom == null || bottom > lines) ? lines : bottom; | ||
var s = doc. | var s = doc.selection; | ||
var b = []; | var b = []; | ||
if (lines == 1) { | if (lines == 1) { | ||
2025年9月1日 (月) 01:22時点における版
概要
選択されている範囲を1行上下します。
変更履歴
- 1.0.1 (2013-04-09)
- ブックマークがずれるのを修正
- 1.0.0 (2013-03-15)
- 初版
ソースコード
選択範囲を上へ移動
#title = "選択範囲を上へ移動"
var s = document.selection;
var ty = s.GetTopPointY(mePosLogical);
var by = s.GetBottomPointY(mePosLogical);
if (ty > 1) {
Redraw = false;
var sx = ScrollX;
var sy = ScrollY;
// ブックマークの待避
var bookmarkList = GetBookmarkList(document, ty - 1, by, true);
// 選択行を上へ移動
SelectLine(s, ty - 1, by);
var a = s.Text.split("\n");
a.push(a.shift());
s.Text = a.join("\n");
// ブックマークの復元
for (var i = 0; i < bookmarkList.length; i++) {
var y = bookmarkList[i] - 1;
if (y == ty - 2) {
y = by;
}
s.SetActivePoint(mePosLogical, 1, y);
s.SetBookmark();
}
// 選択の復元
ScrollX = sx;
ScrollY = sy;
SelectLine(s, ty - 1, by - 1);
Redraw = true;
}
function SelectLine(s, ty, by) {
s.SetAnchorPoint(mePosLogical, 1, ty);
s.SetActivePoint(mePosLogical, 1, by, true);
s.EndOfLine(true, mePosLogical);
}
// ブックマークの一覧を論理行単位で取得
// キャレットおよびスクロール位置が変更されるため必要なら待避
function GetBookmarkList(doc, top, bottom, isClear) {
var lines = doc.GetLines(0);
top = (top == null || top < 1) ? 1 : top;
bottom = (bottom == null || bottom > lines) ? lines : bottom;
var s = doc.selection;
var b = [];
if (lines == 1) {
s.SetActivePoint(mePosLogical, 2, 1);
if (s.PreviousBookmark()) {
b.push(1);
}
return b;
}
if (top == 1) {
s.SetActivePoint(mePosLogical, 1, 2);
if (s.PreviousBookmark()) {
b.push(1);
}
}
s.SetActivePoint(mePosLogical, 1, top - 1);
while (s.NextBookmark()) {
var y = s.GetActivePointY(mePosLogical);
if (y > bottom) {
break;
}
b.push(y);
if (isClear) {
s.ClearBookmark();
}
}
return b;
}
選択範囲を下へ移動
#title = "選択範囲を下へ移動"
var s = document.selection
var ty = s.GetTopPointY(mePosLogical);
var by = s.GetBottomPointY(mePosLogical);
if (document.GetLines(0) > by) {
Redraw = false;
var sx = ScrollX;
var sy = ScrollY;
// ブックマークの待避
var bookmarkList = GetBookmarkList(document, ty, by + 1, true);
// 選択行を下へ移動
SelectLine(s, ty, by + 1);
var a = s.Text.split("\n");
a.unshift(a.pop());
s.Text = a.join("\n");
// ブックマークの復元
for (var i = 0; i < bookmarkList.length; i++) {
var y = bookmarkList[i] + 1;
if (y == by + 2) {
y = ty;
}
s.SetActivePoint(mePosLogical, 1, y);
s.SetBookmark();
}
// 選択の復元
ScrollX = sx;
ScrollY = sy;
SelectLine(s, ty + 1, by + 1);
Redraw = true;
}
function SelectLine(s, ty, by) {
s.SetAnchorPoint(mePosLogical, 1, ty);
s.SetActivePoint(mePosLogical, 1, by, true);
s.EndOfLine(true, mePosLogical);
}
// ブックマークの一覧を論理行単位で取得
// キャレットおよびスクロール位置が変更されるため必要なら待避
function GetBookmarkList(doc, top, bottom, isClear) {
var lines = doc.GetLines(0);
top = (top == null || top < 1) ? 1 : top;
bottom = (bottom == null || bottom > lines) ? lines : bottom;
var s = doc.selection;
var b = [];
if (lines == 1) {
s.SetActivePoint(mePosLogical, 2, 1);
if (s.PreviousBookmark()) {
b.push(1);
}
return b;
}
if (top == 1) {
s.SetActivePoint(mePosLogical, 1, 2);
if (s.PreviousBookmark()) {
b.push(1);
}
}
s.SetActivePoint(mePosLogical, 1, top - 1);
while (s.NextBookmark()) {
var y = s.GetActivePointY(mePosLogical);
if (y > bottom) {
break;
}
b.push(y);
if (isClear) {
s.ClearBookmark();
}
}
return b;
}
スポンサーリンク