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
|
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