aboutsummaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/custom-autocmd.lua92
1 files changed, 92 insertions, 0 deletions
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
+})