Skip to content

Commit

Permalink
fix(buffer_updates): handle :sort of already sorted buffer
Browse files Browse the repository at this point in the history
  • Loading branch information
bfredl committed Oct 8, 2021
1 parent 93d33ed commit ef687d3
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 4 deletions.
8 changes: 4 additions & 4 deletions src/nvim/ex_cmds.c
Expand Up @@ -702,11 +702,11 @@ void ex_sort(exarg_T *eap)
mark_adjust(eap->line2, MAXLNUM, -deleted, 0L, kExtmarkNOOP);
}

extmark_splice(curbuf, eap->line1-1, 0,
count, 0, old_count,
lnum - eap->line2, 0, new_count, kExtmarkUndo);

if (change_occurred || deleted != 0) {
extmark_splice(curbuf, eap->line1-1, 0,
count, 0, old_count,
lnum - eap->line2, 0, new_count, kExtmarkUndo);

changed_lines(eap->line1, 0, eap->line2 + 1, -deleted, true);
}

Expand Down
16 changes: 16 additions & 0 deletions test/functional/lua/buffer_updates_spec.lua
Expand Up @@ -1088,6 +1088,22 @@ describe('lua: nvim_buf_attach on_bytes', function()
}
end)

it(":sort lines", function()
local check_events = setup_eventcheck(verify, {"CCC", "BBB", "AAA"})

command "%sort"
check_events {
{ "test1", "bytes", 1, 3, 0, 0, 0, 3, 0, 12, 3, 0, 12 };
}
end)

it("handles already sorted lines", function()
local check_events = setup_eventcheck(verify, {"AAA", "BBB", "CCC"})

command "%sort"
check_events { }
end)

local function test_lockmarks(mode)
local description = (mode ~= "") and mode or "(baseline)"
it("test_lockmarks " .. description .. " %delete _", function()
Expand Down

0 comments on commit ef687d3

Please sign in to comment.