mirror of
https://github.com/neovim/neovim.git
synced 2026-01-04 02:17:09 +10:00
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).
This commit is contained in:
@@ -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|'.
|
||||
|
||||
Reference in New Issue
Block a user