aboutsummaryrefslogtreecommitdiff
path: root/runtime/lua/vim/snippet.lua
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2024-03-15 09:32:03 +0100
committerGitHub <noreply@github.com>2024-03-15 09:32:03 +0100
commit8350839a8796bc37e5849d78eb919e3d100f332e (patch)
tree809947a55c2827788ce4bdf0d0d18bb88a9e9d25 /runtime/lua/vim/snippet.lua
parent062c0245e3455f0a483729479bda2fc242b3dec5 (diff)
parenta5ade3c63d88e93244c43ff0f0635f4774f890ce (diff)
downloadrneovim-8350839a8796bc37e5849d78eb919e3d100f332e.tar.gz
rneovim-8350839a8796bc37e5849d78eb919e3d100f332e.tar.bz2
rneovim-8350839a8796bc37e5849d78eb919e3d100f332e.zip
Merge pull request #27674 from glepnir/snippet_indent
fix(snippet): correct indent with newline
Diffstat (limited to 'runtime/lua/vim/snippet.lua')
-rw-r--r--runtime/lua/vim/snippet.lua10
1 files changed, 7 insertions, 3 deletions
diff --git a/runtime/lua/vim/snippet.lua b/runtime/lua/vim/snippet.lua
index 5e60efa778..2ffd89367f 100644
--- a/runtime/lua/vim/snippet.lua
+++ b/runtime/lua/vim/snippet.lua
@@ -446,14 +446,18 @@ function M.expand(input)
base_indent = base_indent .. (snippet_lines[#snippet_lines]:match('(^%s*)%S') or '') --- @type string
end
+ local shiftwidth = vim.fn.shiftwidth()
+ local curbuf = vim.api.nvim_get_current_buf()
+ local expandtab = vim.bo[curbuf].expandtab
local lines = vim.iter.map(function(i, line)
-- Replace tabs by spaces.
- if vim.o.expandtab then
- line = line:gsub('\t', (' '):rep(vim.fn.shiftwidth())) --- @type string
+ if expandtab then
+ line = line:gsub('\t', (' '):rep(shiftwidth)) --- @type string
end
-- Add the base indentation.
if i > 1 then
- line = base_indent .. line
+ line = #line ~= 0 and base_indent .. line
+ or (expandtab and (' '):rep(shiftwidth) or '\t'):rep(vim.fn.indent('.') / shiftwidth + 1)
end
return line
end, ipairs(text_to_lines(text)))