Skip to content

wizarttk/undotree

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

undotree

A neovim undotree plugin written in lua.

Screenshot

preview

Diff previewer window shows the difference between the current node and the node under the cursor.

Requirements

  • nvim 0.7.0 or above

Download and Install

Using Vim's built-in package manager:

mkdir -p ~/.config/nvim/pack/github/start/
cd ~/.config/nvim/pack/github/start/
git clone https://github.com/nvim-lua/plenary.nvim.git
git clone https://github.com/jiaoshijie/undotree.git

Using vim-plug

Plug 'nvim-lua/plenary.nvim'
Plug 'jiaoshijie/undotree'

Using packer.nvim

use {
  "jiaoshijie/undotree",
  requires = {
    "nvim-lua/plenary.nvim",
  },
}

Using lazy.nvim

{
  "jiaoshijie/undotree",
  dependencies = "nvim-lua/plenary.nvim",
  config = true,
  keys = { -- load the plugin only when using it's keybinding:
    { "<leader>u", "<cmd>lua require('undotree').toggle()<cr>" },
  },
}

Usage

Basic setup

require('undotree').setup()

If using packer.nvim undotree can be setup directly in the plugin spec:

use {
  "jiaoshijie/undotree",
  config = function()
    require('undotree').setup()
  end,
  requires = {
    "nvim-lua/plenary.nvim",
  },
}

Configuration can be passed to the setup function. Here is an example with the default settings:

local undotree = require('undotree')

undotree.setup({
  float_diff = true,  -- using float window previews diff, set this `true` will disable layout option
  layout = "left_bottom", -- "left_bottom", "left_left_bottom"
  position = "left", -- "right", "bottom"
  ignore_filetype = { 'undotree', 'undotreeDiff', 'qf', 'TelescopePrompt', 'spectre_panel', 'tsplayground' },
  window = {
    winblend = 30,
  },
  keymaps = {
    ['j'] = "move_next",
    ['k'] = "move_prev",
    ['gj'] = "move2parent",
    ['J'] = "move_change_next",
    ['K'] = "move_change_prev",
    ['<cr>'] = "action_enter",
    ['p'] = "enter_diffbuf",
    ['q'] = "quit",
  },
})

You can directly use :lua require('undotree').toggle() for toggling undotree panel, or set the following keymaps for convenient using.

vim.keymap.set('n', '<leader>u', require('undotree').toggle, { noremap = true, silent = true })

-- or
vim.keymap.set('n', '<leader>uo', require('undotree').open, { noremap = true, silent = true })
vim.keymap.set('n', '<leader>uc', require('undotree').close, { noremap = true, silent = true })
  1. Some Mappings
Mappings Action
j jump to next undo node
gj jump to the parent node of the node under the cursor
k jump to prev undo node
J jump to next undo node and undo to this state
K jump to prev undo node and undo to this state
q quit undotree
p jump into the undotree diff window
Enter undo to this state

License

MIT

About

neovim undotree written in lua

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Lua 100.0%