From f2dd175f64d2439bf80ab4abca62aacf52345962 Mon Sep 17 00:00:00 2001 From: Chen Mulong Date: Thu, 17 Apr 2025 13:55:59 +0800 Subject: [PATCH] Fix missing empty lines when paste --- lua/richclip/utils.lua | 9 ++++----- tests/spec/utils_spec.lua | 6 +++++- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lua/richclip/utils.lua b/lua/richclip/utils.lua index 45209f9..18aa560 100644 --- a/lua/richclip/utils.lua +++ b/lua/richclip/utils.lua @@ -45,11 +45,10 @@ end ---Separate string into lines UTILS.str_to_lines = function(str) - local result = {} - for line in str:gmatch '[^\n\r]+' do - table.insert(result, line) - end - return result + -- TODO: This feels slow + str = str:gsub("\r\n", "\n") + str = str:gsub("\r", "\n") + return vim.split(str, "\n") end ---Combines lines into a single string diff --git a/tests/spec/utils_spec.lua b/tests/spec/utils_spec.lua index ef15324..373cc27 100644 --- a/tests/spec/utils_spec.lua +++ b/tests/spec/utils_spec.lua @@ -30,7 +30,7 @@ describe("ser tests", function() str = "" lines = utils.str_to_lines(str) - assert.same(lines, {}) + assert.same(lines, {""}) str = "a\rb" lines = utils.str_to_lines(str) @@ -39,6 +39,10 @@ describe("ser tests", function() str = "a\r\nb" lines = utils.str_to_lines(str) assert.same(lines, { "a", "b" }) + + str = "a\n\nb" + lines = utils.str_to_lines(str) + assert.same(lines, { "a", "", "b" }) end) it('lines_to_str', function()