From a11caa4c503f6a76e2ad9d570ec92ea71b32f334 Mon Sep 17 00:00:00 2001 From: Pagwin Date: Thu, 25 Sep 2025 01:09:18 -0400 Subject: [PATCH] split into multiple files --- init.lua | 16 ++++++---------- lua/.gitkeep | 0 sentence_lines.lua | 23 +++++++++++++++++++++++ 3 files changed, 29 insertions(+), 10 deletions(-) delete mode 100644 lua/.gitkeep create mode 100644 sentence_lines.lua diff --git a/init.lua b/init.lua index e4373f7..969f0c8 100644 --- a/init.lua +++ b/init.lua @@ -1,11 +1,7 @@ -local function split_sentences() - local view = vim.fn.winsaveview() -- keep cursor & view stable - vim.cmd([[%s/\([.?!]\)\s\+/\1\r/ge]]) - vim.fn.winrestview(view) -end +-- get directory of this file +local config_dir = vim.fn.fnamemodify(debug.getinfo(1, "S").source:sub(2), ":h") --- run after leaving insert mode -vim.api.nvim_create_autocmd({ "InsertLeave", "TextChanged" }, { - pattern = { "*.md", "*.txt" }, - callback = split_sentences -}) +-- prepend it to Lua's search path +package.path = config_dir .. "/?.lua;" .. config_dir .. "/?/init.lua;" .. package.path + +require("sentence_lines") diff --git a/lua/.gitkeep b/lua/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/sentence_lines.lua b/sentence_lines.lua new file mode 100644 index 0000000..b17984f --- /dev/null +++ b/sentence_lines.lua @@ -0,0 +1,23 @@ +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" }, { + pattern = { "*.md", "*.txt" }, + callback = split_sentences_paragraph +})