Home

Awesome

NeoRoot.lua

This project is now deprecated

Changing your project root (i.e. global current-directory, see :h current-directory) just for grepping files, showing less files on your file tree is not a good practice. If you once did this, you misused Vim. (To achieve the same result, you should always call :tcd instead.)

Besides this, I will recommend you trying my new project session plugin: https://github.com/nyngwang/suave.lua, which follows this good practice:

Never touch the global current-directory unless you want to change to another project.

and it's designed to help you restore your project with ease. (Now supports restoring colorscheme, too)

DEMO

https://user-images.githubusercontent.com/24765272/150794108-890b2ef3-3b4f-4fdb-8b47-0aa7f5d3ccf5.mov

New Intro. (updated 2022/04/19)

With NeoRoot.lua, you will be able to:

Old Promo.

Now you won't have a hard time :cd to the right place to see more files before executing commands that takes your current working directory into account (i.e. you need to go up some levels to make tools like rg/fd to "see" more files). You can also change your project root in the runtime, without typing any command, anymore!

Features

Compatibility

Setup

Packer.nvim

local NOREF_NOERR_TRUNC = { noremap = true, silent = true, nowait = true }
use {
  'nyngwang/NeoRoot.lua',
  config = function()
    require('neo-root').setup {
      CUR_MODE = 2 -- 1 for file/buffer mode, 2 for proj-mode
    }
  end
}
vim.cmd'au BufEnter * NeoRoot'
vim.keymap.set('n', '<Leader>p', function() vim.cmd('NeoRootSwitchMode') end, NOREF_NOERR_TRUNC)
vim.keymap.set('n', '<Leader>pre', function() vim.cmd('NeoRootChange') end, NOREF_NOERR_TRUNC)

Hint

To see your current working directory, simply call NeoRootSwitchMode twice.

TODO list