aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/sort.lua10
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)