diff options
-rw-r--r-- | plugins/sort.lua | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/plugins/sort.lua b/plugins/sort.lua index ce899e9..2e865ab 100644 --- a/plugins/sort.lua +++ b/plugins/sort.lua @@ -1,5 +1,6 @@ local core = require "core" local command = require "core.command" +local translate = require "core.doc.translate" local function split_lines(text) local res = {} @@ -11,7 +12,14 @@ end command.add("core.docview", { ["sort:sort"] = function() - core.active_view.doc:replace(function(text) + local doc = core.active_view.doc + + local l1, c1, l2, c2, swap = doc:get_selection(true) + l1, c1 = translate.start_of_line(doc, l1, c1) + l2, c2 = translate.end_of_line(doc, l2, c2) + doc:set_selection(l1, c1, l2, c2, swap) + + doc:replace(function(text) local head, body, foot = text:match("(\n*)(.-)(\n*)$") local lines = split_lines(body) table.sort(lines, function(a, b) return a:lower() < b:lower() end) |