aboutsummaryrefslogtreecommitdiff
path: root/core/autocommands.vim
diff options
context:
space:
mode:
Diffstat (limited to 'core/autocommands.vim')
-rw-r--r--core/autocommands.vim77
1 files changed, 77 insertions, 0 deletions
diff --git a/core/autocommands.vim b/core/autocommands.vim
new file mode 100644
index 0000000..a64770d
--- /dev/null
+++ b/core/autocommands.vim
@@ -0,0 +1,77 @@
+"{ Auto commands
+" 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 edit position when opening a file
+augroup resume_edit_position
+ autocmd!
+ autocmd BufReadPost *
+ \ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' | execute "normal! g`\"zvzz" | endif
+augroup END
+
+" Display a message when the current file is not in utf-8 format.
+" Note that we need to use `unsilent` command here because of this issue:
+" https://github.com/vim/vim/issues/4379
+augroup non_utf8_file_warn
+ autocmd!
+ autocmd BufRead * if &fileencoding != 'utf-8' | unsilent echomsg 'File not in UTF-8 format!' | endif
+augroup END
+
+" Automatically reload the file if it is changed outside of Nvim, see
+" https://unix.stackexchange.com/a/383044/221410. It seems that `checktime`
+" command does not work in command line. We need to check if we are in command
+" line before executing this command. See also
+" https://vi.stackexchange.com/a/20397/15292.
+augroup auto_read
+ autocmd!
+ autocmd FocusGained,BufEnter,CursorHold,CursorHoldI *
+ \ if mode() == 'n' && getcmdwintype() == '' | checktime | endif
+ autocmd FileChangedShellPost * echohl WarningMsg
+ \ | echo "File changed on disk. Buffer reloaded!" | echohl None
+augroup END
+
+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
+
+" highlight yanked region, see `:h lua-highlight`
+augroup custom_highlight
+ autocmd!
+ autocmd ColorScheme * highlight YankColor ctermfg=59 ctermbg=41 guifg=#34495E guibg=#2ECC71
+augroup END
+
+augroup highlight_yank
+ autocmd!
+ au TextYankPost * silent! lua vim.highlight.on_yank{higroup="YankColor", timeout=300}
+augroup END
+
+" Clear cmd line message
+function! s:empty_message(timer)
+ if mode() ==# 'n' | echo '' | endif
+endfunction
+
+augroup cmd_msg_cls
+ autocmd!
+ autocmd CursorHold * call timer_start(25000, funcref('s:empty_message'))
+augroup END
+"}