aboutsummaryrefslogtreecommitdiff
path: root/plugins/sort.lua
diff options
context:
space:
mode:
authorrxi <rxi@users.noreply.github.com>2020-04-29 10:46:37 +0100
committerrxi <rxi@users.noreply.github.com>2020-04-29 10:46:37 +0100
commit00008754892d8ece014fda5abce905eae64ae331 (patch)
treec169a0ae47204825d91e644fb36d8241dd954d2b /plugins/sort.lua
parent24ffdf7e545e157d768e3057ad2c9d892c188220 (diff)
downloadlite-xl-plugins-00008754892d8ece014fda5abce905eae64ae331.tar.gz
lite-xl-plugins-00008754892d8ece014fda5abce905eae64ae331.zip
Made `sort` plugin automatically select to line edges
Diffstat (limited to 'plugins/sort.lua')
-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)