From 00008754892d8ece014fda5abce905eae64ae331 Mon Sep 17 00:00:00 2001 From: rxi Date: Wed, 29 Apr 2020 10:46:37 +0100 Subject: Made `sort` plugin automatically select to line edges --- plugins/sort.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'plugins/sort.lua') 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) -- cgit v1.2.3