80 lines
2.4 KiB
Nix
80 lines
2.4 KiB
Nix
{ ... }:
|
|
{
|
|
programs.nixvim = {
|
|
autoCmd = [
|
|
## Close nvim on last buffer closed, not leaving neovim-tree open
|
|
{
|
|
event = [ "BufEnter" ];
|
|
pattern = [ "NvimTree_*" ];
|
|
callback = {
|
|
__raw = ''
|
|
function()
|
|
local layout = vim.api.nvim_call_function("winlayout", {})
|
|
if layout[1] == "leaf" and vim.api.nvim_buf_get_option(vim.api.nvim_win_get_buf(layout[2]), "filetype") == "NvimTree" and layout[3] == nil then vim.cmd("confirm quit") end
|
|
end
|
|
'';
|
|
};
|
|
}
|
|
## Go to same line in file next time it is open
|
|
{
|
|
event = [ "BufReadPost" ];
|
|
pattern = [ "*" ];
|
|
callback = {
|
|
__raw = ''
|
|
function()
|
|
if vim.fn.line("'\"") > 1 and vim.fn.line("'\"") <= vim.fn.line("$") then
|
|
vim.api.nvim_exec("normal! g'\"",false)
|
|
end
|
|
end
|
|
'';
|
|
};
|
|
}
|
|
## Highlight tabs and trailing whitespace
|
|
{
|
|
event = [ "BufEnter" ];
|
|
pattern = [ "*" ];
|
|
callback = {
|
|
__raw = ''
|
|
function()
|
|
vim.cmd([[
|
|
if exists('w:extratabs')
|
|
call matchdelete(w:extratabs)
|
|
unlet w:extratabs
|
|
endif
|
|
if exists('w:trailingwhitespace')
|
|
call matchdelete(w:trailingwhitespace)
|
|
unlet w:trailingwhitespace
|
|
endif
|
|
highlight ExtraTabs ctermbg=red guibg=red
|
|
highlight TrailingWhitespace ctermbg=red guibg=red
|
|
if &ft != 'help'
|
|
let w:extratabs=matchadd('ExtraTabs', '\t\+')
|
|
let w:trailingwhitespace=matchadd('TrailingWhitespace', '\s\+$')
|
|
endif
|
|
]])
|
|
end
|
|
'';
|
|
};
|
|
}
|
|
## Trim tailing whitespace on save
|
|
{
|
|
event = [ "BufWritePre" ];
|
|
pattern = [ "*" ];
|
|
callback = {
|
|
__raw = ''
|
|
function()
|
|
vim.cmd([[
|
|
if &ft =~ 'javascript\|html\|jade\|json\|css\|less\|php\|python\|sh\|c\|cpp\|markdown\|yaml\|vim\|nix'
|
|
:%s/\s\+$//e
|
|
elseif expand('%:t') =~ '\.gltf$' || expand('%:t') =~ '\.glsl$'
|
|
:%s/\s\+$//e
|
|
endif
|
|
]])
|
|
end
|
|
'';
|
|
};
|
|
}
|
|
];
|
|
};
|
|
}
|
|
|