22 lines
739 B
Lua
22 lines
739 B
Lua
local function split_sentences_paragraph()
|
|
-- save cursor and window view
|
|
local view = vim.fn.winsaveview()
|
|
|
|
-- find the paragraph boundaries
|
|
local start_line = vim.fn.search('^\\s*$', 'bnW') + 1
|
|
if start_line == 1 then start_line = 1 end
|
|
local end_line = vim.fn.search('^\\s*$', 'nW') - 1
|
|
if end_line < start_line then end_line = vim.fn.line('$') end
|
|
|
|
-- build a range and run substitute with 'e' flag
|
|
local cmd = string.format("%d,%ds/\\([.?!]\\)\\s\\+/\\1\r/ge", start_line, end_line)
|
|
vim.cmd(cmd)
|
|
|
|
-- restore cursor
|
|
vim.fn.winrestview(view)
|
|
end
|
|
|
|
-- run after leaving insert mode
|
|
vim.api.nvim_create_autocmd({ "InsertLeave", "TextChanged" }, {
|
|
callback = split_sentences_paragraph
|
|
})
|