[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kate] part/script/data: move lines up/down: make it work with line
From: Dominik Haumann <dhdev () gmx ! de>
Date: 2011-09-11 17:00:56
Message-ID: 20110911170056.2CEFEA607A () git ! kde ! org
[Download RAW message or body]
Git commit 540aa847218b037cda5ad4a52498dae30d83eea2 by Dominik Haumann.
Committed on 11/09/2011 at 18:58.
Pushed by dhaumann into branch 'master'.
move lines up/down: make it work with line modification indicators
M +63 -34 part/script/data/utils.js
http://commits.kde.org/kate/540aa847218b037cda5ad4a52498dae30d83eea2
diff --git a/part/script/data/utils.js b/part/script/data/utils.js
index f59e49e..f7d77f4 100644
--- a/part/script/data/utils.js
+++ b/part/script/data/utils.js
@@ -1,7 +1,7 @@
/* kate-script
* author: Dominik Haumann <dhdev@gmx.de>, Milian Wolff <mail@milianw.de>
* license: LGPL
- * revision: 3
+ * revision: 4
* kate-version: 3.4
* type: commands
* functions: sort, moveLinesDown, moveLinesUp, natsort, uniq, rtrim, ltrim, trim, \
join, rmblank, unwrap, each, filter, map, duplicateLinesUp, duplicateLinesDown @@ \
-126,54 +126,83 @@ function unwrap ()
function moveLinesDown()
{
- var fromLine = -1;
- var toLine = -1;
-
+ var cursorPosition = view.cursorPosition();
var selectionRange = view.selection();
+
if (selectionRange.isValid() && selectionRange.end.line < document.lines() - 1) \
{
- toLine = selectionRange.start.line;
- fromLine = selectionRange.end.line + 1;
- if (selectionRange.end.column == 0) fromLine--;
- } else if (view.cursorPosition().line < document.lines() - 1) {
- toLine = view.cursorPosition().line;
- fromLine = toLine + 1;
- }
- if (fromLine != -1 && toLine != -1) {
- var text = document.line(fromLine);
+ // extend selection to span complete lines
+ var extendedRange = new Range(selectionRange);
+ extendedRange.start.column = 0;
+ extendedRange.end.column = document.lineLength(extendedRange.end.line);
+
+ // save the text
+ var text = document.text(extendedRange);
+ // remove text, and insert at new correct position
+ document.editBegin();
+ document.removeText(extendedRange.start, new \
Cursor(extendedRange.end.line+1, 0)); + var destination = new \
Cursor(extendedRange.start.line + 1, 0); + \
document.insertLine(selectionRange.start.line+1, ""); + \
document.insertText(destination, text); +
+ // restore correct cursor position
+ cursorPosition.line++;
+ view.setCursorPosition(cursorPosition);
+
+ // restore selection, moved down by one line
+ selectionRange.start.line++;
+ selectionRange.end.line++;
+ view.setSelection(selectionRange);
+ document.editEnd();
+ } else if (!selectionRange.isValid() && cursorPosition.line < document.lines() - \
1) { + var text = document.line(cursorPosition.line);
document.editBegin();
- document.removeLine(fromLine);
- document.insertLine(toLine, text);
+ document.removeLine(cursorPosition.line);
+ document.insertLine(cursorPosition.line + 1, text);
+ cursorPosition.line += 1;
+ view.setCursorPosition(cursorPosition);
document.editEnd();
}
}
function moveLinesUp()
{
- var fromLine = -1;
- var toLine = -1;
-
- var selectionRange = view.selection();
var cursorPosition = view.cursorPosition();
+ var selectionRange = view.selection();
+
if (selectionRange.isValid() && selectionRange.start.line > 0) {
- fromLine = selectionRange.start.line - 1;
- toLine = selectionRange.end.line;
- if (selectionRange.end.column == 0) toLine--;
- } else if (view.cursorPosition().line > 0) {
- toLine = view.cursorPosition().line;
- fromLine = toLine - 1;
- }
- if (fromLine != -1 && toLine != -1) {
- var text = document.line(fromLine);
+ // extend selection to span complete lines
+ var extendedRange = new Range(selectionRange);
+ extendedRange.start.column = 0;
+ extendedRange.end.column = document.lineLength(extendedRange.end.line);
+
+ // save the text
+ var text = document.text(extendedRange);
+ // remove text, and insert at new correct position
document.editBegin();
- document.removeLine(fromLine);
- document.insertLine(toLine, text);
+ document.removeText(extendedRange.start, new \
Cursor(extendedRange.end.line+1, 0)); + var destination = new \
Cursor(extendedRange.start.line - 1, 0); + \
document.insertLine(selectionRange.start.line-1, ""); + \
document.insertText(destination, text); +
+ // restore correct cursor position
+ cursorPosition.line--;
+ view.setCursorPosition(cursorPosition);
+
+ // restore selection, moved up by one line
+ selectionRange.start.line--;
+ selectionRange.end.line--;
+ view.setSelection(selectionRange);
+ document.editEnd();
+ } else if (!selectionRange.isValid() && cursorPosition.line > 0) {
+ var text = document.line(cursorPosition.line);
+ document.editBegin();
+ document.removeLine(cursorPosition.line);
+ document.insertLine(cursorPosition.line - 1, text);
+ cursorPosition.line -= 1;
+ view.setCursorPosition(cursorPosition);
document.editEnd();
-
- view.setCursorPosition(new Cursor(cursorPosition.line-1, \
cursorPosition.column));
- view.setSelection(new Range(selectionRange.start.line-1, \
selectionRange.start.column,
- selectionRange.end.line-1, \
selectionRange.end.column)); }
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic