nxhung2304/lastplace.nvim

github github
utility
stars 18
issues 0
subscribers 0
forks 0
CREATED

UPDATED


🎯 lastplace.nvim

Intelligently restore your cursor position when reopening files in Neovim

License: MIT Neovim

✨ Features

  • Smart Detection - Automatically ignores git commits, help files, and other special buffers
  • Highly Configurable - Extensive options for fine-tuning behavior
  • Precise Positioning - Optional cursor centering and fold opening
  • Manual Control - Commands for manual jumping and configuration

📦 Installation

lazy.nvim

{
  "nxhung2304/lastplace.nvim",
  config = function()
    require("lastplace").setup({
      -- your configuration here
    })
  end,
}

packer.nvim

use {
  "nxhung2304/lastplace.nvim",
  config = function()
    require("lastplace").setup()
  end,
}

vim-plug

Plug 'nxhung2304/lastplace.nvim'

⚙️ Configuration

Default Configuration

require("lastplace").setup({
  -- Filetypes to ignore
  ignore_filetypes = {
    "gitcommit", "gitrebase", "svn", "hgcommit", "xxd", "COMMIT_EDITMSG"
  },
  
  -- Buffer types to ignore  
  ignore_buftypes = {
    "quickfix", "nofile", "help", "terminal"
  },
  
  -- Center cursor after jumping
  center_on_jump = true,
  
  -- Only jump if target line is not visible
  jump_only_if_not_visible = false,
  
  -- Minimum lines required to enable jumping
  min_lines = 10,
  
  -- Maximum line to jump to (0 = no limit)
  max_line = 0,
  
  -- Open folds after jumping
  open_folds = true,
  
  -- Enable debug messages
  debug = false,
})

Debug Mode

require("lastplace").setup({
  debug = true,
  -- Watch debug messages with :messages
})

🔧 Commands

Command Description
:LastPlaceJump Manually jump to last cursor position
:LastPlaceToggle Toggle cursor centering feature
:LastPlaceInfo Show current plugin status and config
:LastPlaceReset Reset configuration to defaults

📋 API

Basic Usage

local lastplace = require("lastplace")

-- Setup with custom config
lastplace.setup({
  center_on_jump = false,
  ignore_filetypes = {"dart", "kotlin"},
})

-- Manual operations
lastplace.jump()              -- Jump to last position
lastplace.is_ignored()        -- Check if current buffer is ignored
local config = lastplace.config()  -- Get current configuration

Advanced Integration

-- Conditional jumping
vim.api.nvim_create_autocmd("BufReadPost", {
  pattern = {"*.lua", "*.py", "*.js"},
  callback = function()
    local lastplace = require("lastplace")
    if not lastplace.is_ignored() then
      lastplace.jump()
    end
  end,
})

🙏 Acknowledgments