From be1fbe38b31b6046d396407c4efbf238941c6b08 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 21 Feb 2025 02:02:32 +0100 Subject: feat(lua): vim.text.indent() Problem: Indenting text is a common task in plugins/scripts for presentation/formatting, yet vim has no way of doing it (especially "dedent", and especially non-buffer text). Solution: Introduce `vim.text.indent()`. It sets the *exact* indentation because that's a more difficult (and thus more useful) task than merely "increasing the current indent" (which is somewhat easy with a `gsub()` one-liner). --- runtime/lua/vim/health.lua | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'runtime/lua/vim/health.lua') diff --git a/runtime/lua/vim/health.lua b/runtime/lua/vim/health.lua index a265e2b901..0d42e8fed6 100644 --- a/runtime/lua/vim/health.lua +++ b/runtime/lua/vim/health.lua @@ -186,18 +186,13 @@ local function get_healthcheck(plugin_names) return healthchecks end ---- Indents lines *except* line 1 of a string if it contains newlines. +--- Indents lines *except* line 1 of a multiline string. --- --- @param s string --- @param columns integer --- @return string local function indent_after_line1(s, columns) - local lines = vim.split(s, '\n') - local indent = string.rep(' ', columns) - for i = 2, #lines do - lines[i] = indent .. lines[i] - end - return table.concat(lines, '\n') + return (vim.text.indent(columns, s):gsub('^%s+', '')) end --- Changes ':h clipboard' to ':help |clipboard|'. -- cgit