Home

Awesome

track.nvim

More neovim plugins

Dependencies

Usage

<img src="https://github.com/niuiic/assets/blob/main/track.nvim/usage.gif" />

Available functions.

functiondesc
setup(config)set config
mark(bufnr?, lnum?, id?, desc?)mark line
unmark(bufnr?, lnum?)unmark line
is_marked(bufnr?, lnum?)check if this line is marked
toggle(bufnr?, lnum?)mark/unmark line
store(path)store marks
restore(path)restore marks
remove()remove all marks
edit(bufnr?, lnum?, desc?)edit mark
search(opts?)search marks
jump_to_next()jump to next mark in this buffer
jump_to_prev()jump to previous mark in this buffer

Remember to call setup before use.

You may need a session plugin for storing/restoring marks. Check niuiic/multiple-session.nvim.

If there is no highlight on your telescope preview window, try to set filetype.

vim.filetype.add({
	extension = {
		ts = "typescript",
	},
})

Config

Default config.

require("track").setup({
	sign = {
		text = "󰍒",
		text_color = "#00ff00",
		priority = 10,
	},
	search = {
		---@param mark track.Mark
		entry_label = function(mark)
			return string.format("[%s] %s | %s:%s", mark.id, mark.desc, mark.file, mark.lnum)
		end,
		---@param marks track.Mark[]
		---@return track.Mark[]
		sort_entry = function(marks)
			return require("core").lua.list.sort(marks, function(prev, cur)
				return prev.id < cur.id
			end)
		end,
	},
})

Keymap example.

local keys = {
	{
		"mm",
		function()
			require("track").toggle()
		end,
		desc = "toggle mark",
	},
	{
		"mc",
		function()
			require("track").remove()
		end,
		desc = "remove all marks",
	},
	{
		"mj",
		function()
			require("track").jump_to_next()
		end,
		desc = "jump to next mark",
	},
	{
		"mk",
		function()
			require("track").jump_to_prev()
		end,
		desc = "jump to prev mark",
	},
	{
		"me",
		function()
			require("track").edit()
		end,
		desc = "edit mark",
	},
	{
		"<space>om",
		function()
			require("track").search()
		end,
		desc = "search marks",
	},
}