diff options
| author | Michal Hanus <mikehanus@protonmail.com> | 2025-12-29 19:02:55 +0100 |
|---|---|---|
| committer | Michal Hanus <mikehanus@protonmail.com> | 2025-12-29 19:02:55 +0100 |
| commit | 5eda7770be54f222e27e87190a95847e6d0e2c8c (patch) | |
| tree | 6974ac951d1f955f1a05144f1504a41fcf990251 /.config/nvim/viml_conf/autocommands.vim | |
| parent | 688a636a43e70da5337c8dd671d4269621fae80b (diff) | |
nvim setup
Diffstat (limited to '.config/nvim/viml_conf/autocommands.vim')
| -rw-r--r-- | .config/nvim/viml_conf/autocommands.vim | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/.config/nvim/viml_conf/autocommands.vim b/.config/nvim/viml_conf/autocommands.vim new file mode 100644 index 0000000..0fad842 --- /dev/null +++ b/.config/nvim/viml_conf/autocommands.vim @@ -0,0 +1,123 @@ +" Do not use smart case in command line mode, extracted from https://vi.stackexchange.com/a/16511/15292. +augroup dynamic_smartcase + autocmd! + autocmd CmdLineEnter : set nosmartcase + autocmd CmdLineLeave : set smartcase +augroup END + +augroup term_settings + autocmd! + " Do not use number and relative number for terminal inside nvim + autocmd TermOpen * setlocal norelativenumber nonumber + " Go to insert mode by default to start typing command + autocmd TermOpen * startinsert +augroup END + +" More accurate syntax highlighting? (see `:h syn-sync`) +augroup accurate_syn_highlight + autocmd! + autocmd BufEnter * :syntax sync fromstart +augroup END + +" Return to last cursor position when opening a file +augroup resume_cursor_position + autocmd! + autocmd BufReadPost * call s:resume_cursor_position() +augroup END + +" Only resume last cursor position when there is no go-to-line command (something like '+23'). +function s:resume_cursor_position() abort + if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' + let l:args = v:argv " command line arguments + for l:cur_arg in l:args + " Check if a go-to-line command is given. + let idx = match(l:cur_arg, '\v^\+(\d){1,}$') + if idx != -1 + return + endif + endfor + + execute "normal! g`\"zvzz" + endif +endfunction + +augroup numbertoggle + autocmd! + autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif + autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif +augroup END + +" Define or override some highlight groups +augroup custom_highlight + autocmd! + autocmd ColorScheme * call s:custom_highlight() +augroup END + +function! s:custom_highlight() abort + " For yank highlight + highlight YankColor ctermfg=59 ctermbg=41 guifg=#34495E guibg=#2ECC71 + + " For cursor colors + highlight Cursor cterm=bold gui=bold guibg=#00c918 guifg=black + highlight Cursor2 guifg=red guibg=red + + " For floating windows border highlight + highlight FloatBorder guifg=LightGreen guibg=NONE + + " highlight for matching parentheses + highlight MatchParen cterm=bold,underline gui=bold,underline +endfunction + +augroup auto_close_win + autocmd! + autocmd BufEnter * call s:quit_current_win() +augroup END + +" Quit Nvim if we have only one window, and its filetype match our pattern. +function! s:quit_current_win() abort + let l:quit_filetypes = ['qf', 'vista', 'NvimTree'] + + let l:should_quit = v:true + + let l:tabwins = nvim_tabpage_list_wins(0) + for w in l:tabwins + let l:buf = nvim_win_get_buf(w) + let l:bf = getbufvar(l:buf, '&filetype') + + if index(l:quit_filetypes, l:bf) == -1 + let l:should_quit = v:false + endif + endfor + + if l:should_quit + qall + endif +endfunction + +augroup git_repo_check + autocmd! + autocmd VimEnter,DirChanged * call utils#Inside_git_repo() +augroup END + +" ref: https://vi.stackexchange.com/a/169/15292 +function! s:handle_large_file() abort + let g:large_file = 10485760 " 10MB + let f = expand("<afile>") + + if getfsize(f) > g:large_file || getfsize(f) == -2 + set eventignore+=all + " turning off relative number helps a lot + set norelativenumber + setlocal noswapfile bufhidden=unload buftype=nowrite undolevels=-1 + else + set eventignore-=all relativenumber + endif +endfunction + +augroup LargeFile + autocmd! + autocmd BufReadPre * call s:handle_large_file() +augroup END + +" Load auto-command defined in Lua +lua require("custom-autocmd") |
