nvim: add function to insert/update modeline
This commit is contained in:
parent
08f834ff08
commit
1b6a74520c
|
@ -14,3 +14,42 @@ vim.api.nvim_create_autocmd(
|
|||
callback = my_remove_trailing_whitespace
|
||||
}
|
||||
)
|
||||
|
||||
function my_insert_modeline()
|
||||
local comment_string = vim.o.commentstring
|
||||
local space_maybe = ''
|
||||
if (string.match(comment_string, '%%s(.*)') ~= '') then
|
||||
space_maybe = ' '
|
||||
end
|
||||
|
||||
local fenc = vim.o.fileencoding
|
||||
if (fenc == '') then
|
||||
fenc = 'utf-8'
|
||||
end
|
||||
|
||||
local modeline_elements = {
|
||||
' vim: set',
|
||||
' fenc=' .. fenc,
|
||||
' ts=' .. vim.o.tabstop,
|
||||
' sw=' .. vim.o.shiftwidth,
|
||||
(vim.o.expandtab and ' et' or ' noet'),
|
||||
' tw=' .. vim.o.textwidth,
|
||||
':',
|
||||
space_maybe
|
||||
}
|
||||
local modeline = comment_string:gsub('%%s', table.concat(modeline_elements))
|
||||
modeline = modeline:gsub(' ', ' ')
|
||||
|
||||
local buffer = vim.api.nvim_win_get_buf(0)
|
||||
local current = vim.api.nvim_buf_get_lines(buffer, -2, -1, true)[1]
|
||||
if (current == modeline) then
|
||||
print('modeline already exists')
|
||||
elseif (string.match(current, 'vim:')) then
|
||||
vim.api.nvim_buf_set_lines(buffer, -2, -1, true, { modeline })
|
||||
print('modeline updated')
|
||||
else
|
||||
vim.api.nvim_buf_set_lines(buffer, -1, -1, true, { '', modeline })
|
||||
print('modeline inserted')
|
||||
end
|
||||
end
|
||||
vim.cmd([[command! ModelineInsert lua my_insert_modeline()]])
|
||||
|
|
Loading…
Reference in New Issue
Block a user