aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjdhao <jdhao@hotmail.com>2022-08-20 02:02:12 -0500
committerGitHub <noreply@github.com>2022-08-20 02:02:12 -0500
commit2372d9159f52d77842474e8cd3ea90ca309c2903 (patch)
tree4ccf8303e0650897ad4199ab73383109f851fc45
parentfdf8236fc26a20498b4b342cfc742c8482d95731 (diff)
parente9a3d16260ffe25590dfef4d52f9c6d8226263e8 (diff)
Merge pull request #70 from jdhao/lua-autuocmd
refactor: move part of autocmd to lua script
-rw-r--r--core/autocommands.vim40
-rw-r--r--lua/custom-autocmd.lua92
2 files changed, 95 insertions, 37 deletions
diff --git a/core/autocommands.vim b/core/autocommands.vim
index c0c01d2..0fad842 100644
--- a/core/autocommands.vim
+++ b/core/autocommands.vim
@@ -41,26 +41,6 @@ function s:resume_cursor_position() abort
endif
endfunction
-" 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!
- " we can not use `lua vim.notify()`: it will error out E5107 parsing lua.
- autocmd BufRead * if &fileencoding != 'utf-8' | call v:lua.vim.notify('File not in UTF-8 format!', 'warn', {'title': 'nvim-config'}) | 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 FileChangedShellPost * call v:lua.vim.notify("File changed on disk. Buffer reloaded!", 'warn', {'title': 'nvim-config'})
- autocmd FocusGained,CursorHold * if getcmdwintype() == '' | checktime | endif
-augroup END
-
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif
@@ -88,12 +68,6 @@ function! s:custom_highlight() abort
highlight MatchParen cterm=bold,underline gui=bold,underline
endfunction
-" highlight yanked region, see `:h lua-highlight`
-augroup highlight_yank
- autocmd!
- au TextYankPost * silent! lua vim.highlight.on_yank{higroup="YankColor", timeout=300, on_visual=false}
-augroup END
-
augroup auto_close_win
autocmd!
autocmd BufEnter * call s:quit_current_win()
@@ -125,17 +99,6 @@ augroup git_repo_check
autocmd VimEnter,DirChanged * call utils#Inside_git_repo()
augroup END
-" Auto-generate packer_compiled.lua file
-augroup packer_auto_compile
- autocmd!
- autocmd BufWritePost */nvim/lua/plugins.lua source <afile> | PackerCompile
-augroup END
-
-augroup auto_create_dir
- autocmd!
- autocmd BufWritePre * lua require('utils').may_create_dir(vim.fn.fnamemodify(vim.fn.expand('<afile>'), ":p:h"))
-augroup END
-
" ref: https://vi.stackexchange.com/a/169/15292
function! s:handle_large_file() abort
let g:large_file = 10485760 " 10MB
@@ -155,3 +118,6 @@ augroup LargeFile
autocmd!
autocmd BufReadPre * call s:handle_large_file()
augroup END
+
+" Load auto-command defined in Lua
+lua require("custom-autocmd")
diff --git a/lua/custom-autocmd.lua b/lua/custom-autocmd.lua
new file mode 100644
index 0000000..87ed449
--- /dev/null
+++ b/lua/custom-autocmd.lua
@@ -0,0 +1,92 @@
+local fn = vim.fn
+local api = vim.api
+
+local utils = require("utils")
+
+
+-- 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
+api.nvim_create_augroup("non_utf8_file", {
+ clear = true
+})
+
+api.nvim_create_autocmd({ "BufRead" }, {
+ pattern = "*",
+ group = "non_utf8_file",
+ callback = function()
+ if vim.bo.fileencoding ~= 'utf-8' then
+ vim.notify("File not in UTF-8 format!", vim.log.levels.WARN, { title = "nvim-config" })
+ end
+ end
+})
+
+-- highlight yanked region, see `:h lua-highlight`
+api.nvim_create_augroup("highlight_yank", {
+ clear = true
+})
+
+api.nvim_create_autocmd({ "TextYankPost" }, {
+ pattern = "*",
+ group = "highlight_yank",
+ callback = function()
+ vim.highlight.on_yank { higroup = "YankColor", timeout = 300, on_visual = false }
+ end
+})
+
+-- Auto-generate packer_compiled.lua file
+api.nvim_create_augroup("packer_auto_compile", {
+ clear = true
+})
+
+api.nvim_create_autocmd({ "BufWritePost" }, {
+ pattern = "*/nvim/lua/plugins.lua",
+ group = "packer_auto_compile",
+ callback = function()
+ local fpath = fn.expand("<afile>")
+ local cmd = "source " .. fpath
+ vim.cmd(cmd)
+ vim.cmd("PackerCompile")
+ end
+})
+
+-- Auto-create dir when saving a file, in case some intermediate directory does not exist
+api.nvim_create_augroup("auto_create_dir", {
+ clear = true
+})
+
+api.nvim_create_autocmd({ "BufWritePre" }, {
+ pattern = "*",
+ group = "auto_create_dir",
+ callback = function()
+ local fpath = fn.expand('<afile>')
+ local dir = fn.fnamemodify(fpath, ":p:h")
+
+ utils.may_create_dir(dir)
+ end
+})
+
+-- Automatically reload the file if it is changed outside of Nvim, see https://unix.stackexchange.com/a/383044/221410.
+-- It seems that `checktime` 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 .
+api.nvim_create_augroup("auto_read", {
+ clear = true
+})
+
+api.nvim_create_autocmd({ "FileChangedShellPost" }, {
+ pattern = "*",
+ group = "auto_read",
+ callback = function()
+ vim.notify("File changed on disk. Buffer reloaded!", vim.log.levels.WARN, { title = "nvim-config" })
+ end
+})
+
+api.nvim_create_autocmd({ "FocusGained", "CursorHold" }, {
+ pattern = "*",
+ group = "auto_read",
+ callback = function()
+ if fn.getcmdwintype() == '' then
+ vim.cmd("checktime")
+ end
+ end
+})