aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2025-02-26 14:31:03 -0800
committerGitHub <noreply@github.com>2025-02-26 14:31:03 -0800
commit4f42b69b4ad0d0034581d756ef9bcb0e55f3491d (patch)
tree0c40b6f8c3569e339d375cb5842820590c5f3103 /src
parentf4921e2b7deb4812414998a521c33f920f571c20 (diff)
parent4a997a1732fdb7a1c99cadf780b789f1ac84d990 (diff)
downloadrneovim-4f42b69b4ad0d0034581d756ef9bcb0e55f3491d.tar.gz
rneovim-4f42b69b4ad0d0034581d756ef9bcb0e55f3491d.tar.bz2
rneovim-4f42b69b4ad0d0034581d756ef9bcb0e55f3491d.zip
Merge #32601 vim.text.indent()
Diffstat (limited to 'src')
-rwxr-xr-xsrc/gen/gen_eval_files.lua12
-rw-r--r--src/gen/gen_help_html.lua22
-rw-r--r--src/nvim/CMakeLists.txt3
3 files changed, 7 insertions, 30 deletions
diff --git a/src/gen/gen_eval_files.lua b/src/gen/gen_eval_files.lua
index 74e45507e5..f99f6bafbd 100755
--- a/src/gen/gen_eval_files.lua
+++ b/src/gen/gen_eval_files.lua
@@ -766,18 +766,8 @@ local function scope_more_doc(o)
end
--- @param x string
---- @return string
local function dedent(x)
- local xs = split(x)
- local leading_ws = xs[1]:match('^%s*') --[[@as string]]
- local leading_ws_pat = '^' .. leading_ws
-
- for i in ipairs(xs) do
- local strip_pat = xs[i]:match(leading_ws_pat) and leading_ws_pat or '^%s*'
- xs[i] = xs[i]:gsub(strip_pat, '')
- end
-
- return table.concat(xs, '\n')
+ return (vim.text.indent(0, (x:gsub('\n%s-([\n]?)$', '\n%1'))))
end
--- @return table<string,vim.option_meta>
diff --git a/src/gen/gen_help_html.lua b/src/gen/gen_help_html.lua
index 53a65fd65f..57210f6ac1 100644
--- a/src/gen/gen_help_html.lua
+++ b/src/gen/gen_help_html.lua
@@ -148,10 +148,6 @@ local function url_encode(s)
)
end
-local function expandtabs(s)
- return s:gsub('\t', (' '):rep(8)) --[[ @as string ]]
-end
-
local function to_titlecase(s)
local text = ''
for w in vim.gsplit(s, '[ \t]+') do
@@ -275,25 +271,13 @@ end
---
--- Blank lines (empty or whitespace-only) are ignored.
local function get_indent(s)
- local min_indent = nil
- for line in vim.gsplit(s, '\n') do
- if line and not is_blank(line) then
- local ws = expandtabs(line:match('^%s+') or '')
- min_indent = (not min_indent or ws:len() < min_indent) and ws:len() or min_indent
- end
- end
- return min_indent or 0
+ local _, indent = vim.text.indent(0, s, { expandtab = 8 })
+ return indent
end
--- Removes the common indent level, after expanding tabs to 8 spaces.
local function trim_indent(s)
- local indent_size = get_indent(s)
- local trimmed = ''
- for line in vim.gsplit(s, '\n') do
- line = expandtabs(line)
- trimmed = ('%s%s\n'):format(trimmed, line:sub(indent_size + 1))
- end
- return trimmed:sub(1, -2)
+ return vim.text.indent(0, s, { expandtab = 8 })
end
--- Gets raw buffer text in the node's range (+/- an offset), as a newline-delimited string.
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index 8112045d11..36bcd5fbce 100644
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -342,6 +342,7 @@ set(LUA_KEYMAP_MODULE_SOURCE ${NVIM_RUNTIME_DIR}/lua/vim/keymap.lua)
set(LUA_LOADER_MODULE_SOURCE ${NVIM_RUNTIME_DIR}/lua/vim/loader.lua)
set(LUA_OPTIONS_MODULE_SOURCE ${NVIM_RUNTIME_DIR}/lua/vim/_options.lua)
set(LUA_SHARED_MODULE_SOURCE ${NVIM_RUNTIME_DIR}/lua/vim/shared.lua)
+set(LUA_TEXT_MODULE_SOURCE ${NVIM_RUNTIME_DIR}/lua/vim/text.lua)
file(GLOB API_HEADERS CONFIGURE_DEPENDS api/*.h)
list(REMOVE_ITEM API_HEADERS ${CMAKE_CURRENT_LIST_DIR}/api/ui_events.in.h)
@@ -624,6 +625,7 @@ add_custom_command(
${LUA_DEFAULTS_MODULE_SOURCE} "vim._defaults"
${LUA_OPTIONS_MODULE_SOURCE} "vim._options"
${LUA_SHARED_MODULE_SOURCE} "vim.shared"
+ ${LUA_TEXT_MODULE_SOURCE} "vim.text"
DEPENDS
${CHAR_BLOB_GENERATOR}
${LUA_INIT_PACKAGES_MODULE_SOURCE}
@@ -637,6 +639,7 @@ add_custom_command(
${LUA_DEFAULTS_MODULE_SOURCE}
${LUA_OPTIONS_MODULE_SOURCE}
${LUA_SHARED_MODULE_SOURCE}
+ ${LUA_TEXT_MODULE_SOURCE}
VERBATIM
)