From 04d22db60447cab8587d6a592f2ceeda7df78e59 Mon Sep 17 00:00:00 2001 From: Igor Timofeev Date: Fri, 11 May 2018 23:57:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81=20=D0=B2=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B8=D0=B7=20=D0=B1=D1=83=D1=84?= =?UTF-8?q?=D0=B5=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Applications/MineCodeIDE/Main.lua | 40 +++++++++++++++++-------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/Applications/MineCodeIDE/Main.lua b/Applications/MineCodeIDE/Main.lua index 5f3289fd..860f5590 100755 --- a/Applications/MineCodeIDE/Main.lua +++ b/Applications/MineCodeIDE/Main.lua @@ -662,19 +662,11 @@ end local function splitStringIntoLines(s) s = removeWindowsLineEndings(removeTabs(s)) - local splitLines, searchLineEndingFrom, maximumLineLength, lineEndingFoundAt, line = {}, 1, 0 - repeat - lineEndingFoundAt = string.unicodeFind(s, "\n", searchLineEndingFrom) - if lineEndingFoundAt then - line = unicode.sub(s, searchLineEndingFrom, lineEndingFoundAt - 1) - searchLineEndingFrom = lineEndingFoundAt + 1 - else - line = unicode.sub(s, searchLineEndingFrom, -1) - end - - table.insert(splitLines, line) + local splitLines, maximumLineLength = {}, 0 + for line in s:gmatch("[^\n]+") do maximumLineLength = math.max(maximumLineLength, unicode.len(line)) - until not lineEndingFoundAt + table.insert(splitLines, line) + end return splitLines, maximumLineLength end @@ -998,12 +990,21 @@ local function paste(data, notTable) lines[cursorPositionLine] = firstPart .. data .. secondPart setCursorPositionAndClearSelection(cursorPositionSymbol + unicode.len(data), cursorPositionLine) else - lines[cursorPositionLine] = firstPart .. data[1] - for pasteLine = #data - 1, 2, -1 do - table.insert(lines, cursorPositionLine + 1, data[pasteLine]) + if #data == 1 then + lines[cursorPositionLine] = firstPart .. data[1] .. secondPart + setCursorPositionAndClearSelection(unicode.len(firstPart .. data[1]) + 1, cursorPositionLine) + else + lines[cursorPositionLine] = firstPart .. data[1] + + if #data > 2 then + for pasteLine = #data - 1, 2, -1 do + table.insert(lines, cursorPositionLine + 1, data[pasteLine]) + end + end + + table.insert(lines, cursorPositionLine + #data - 1, data[#data] .. secondPart) + setCursorPositionAndClearSelection(unicode.len(data[#data]) + 1, cursorPositionLine + #data - 1) end - table.insert(lines, cursorPositionLine + #data - 1, data[#data] .. secondPart) - setCursorPositionAndClearSelection(unicode.len(data[#data]) + 1, cursorPositionLine + #data - 1) end updateAutocompleteDatabaseFromFile() @@ -1552,7 +1553,10 @@ codeView.eventHandler = function(mainContainer, object, e1, e2, e3, e4, e5) scroll(e5, config.scrollSpeed) tick(cursorBlinkState) elseif e1 == "clipboard" then - paste(splitStringIntoLines(e3)) + local lines = splitStringIntoLines(e3) + table.insert(lines, "") + paste(lines) + tick(cursorBlinkState) elseif not e1 then tick(not cursorBlinkState)