From b03171b93af79dc937a4cd70090ebcfe380876e2 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Tue, 5 Mar 2024 21:30:54 +0000 Subject: [PATCH] Add autocmd to restore the cursor position across sessions --- init.lua | 1 + lua/autocmds.lua | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 lua/autocmds.lua diff --git a/init.lua b/init.lua index d5ca1ef..0ce3f8e 100644 --- a/init.lua +++ b/init.lua @@ -1,6 +1,7 @@ require('settings') require('mappings') require('netrw') +require('autocmds') local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then diff --git a/lua/autocmds.lua b/lua/autocmds.lua new file mode 100644 index 0000000..2ca5239 --- /dev/null +++ b/lua/autocmds.lua @@ -0,0 +1,24 @@ +-- Create a group to namespace autocmds +local group = vim.api.nvim_create_augroup('benie', { clear = true }) + +-- Restore cursor position across sessions +-- https://github.com/neovim/neovim/issues/16339#issuecomment-1457394370 +vim.api.nvim_create_autocmd('BufRead', { + group = group, + callback = function(opts) + vim.api.nvim_create_autocmd('BufWinEnter', { + once = true, + buffer = opts.buf, + callback = function() + local ft = vim.bo[opts.buf].filetype + local last_known_line = vim.api.nvim_buf_get_mark(opts.buf, '"')[1] + if not (ft:match('commit') and ft:match('rebase')) + and last_known_line > 1 + and last_known_line <= vim.api.nvim_buf_line_count(opts.buf) + then + vim.api.nvim_feedkeys([[g`"]], 'nx', false) + end + end + }) + end +})