feat: initial release
This commit is contained in:
17 files changed
+306
No files matched your search
@@ -0,0 +1,62 @@
|
||||
# tiny-rooter.nvim
|
||||
|
||||
A tiny project root detector for Neovim 0.12+. Automatically sets the
|
||||
local working directory to the project root when opening a file.
|
||||
|
||||
Zero config. ~15 lines of Lua.
|
||||
|
||||
## Features
|
||||
|
||||
- Auto-detects project root via marker files
|
||||
- Sets local working directory (`lcd`) per window
|
||||
- Ships with a comprehensive default marker list
|
||||
- Configurable markers for custom project structures
|
||||
- Works out of the box — no setup call required
|
||||
|
||||
## Requirements
|
||||
|
||||
- Neovim >= 0.12
|
||||
|
||||
## Installation
|
||||
|
||||
Add to your `vim.pack.add()` call:
|
||||
|
||||
```lua
|
||||
"https://github.com/swaits/tiny-rooter.nvim",
|
||||
```
|
||||
|
||||
Done. The plugin auto-loads with sensible defaults.
|
||||
|
||||
## Configuration
|
||||
|
||||
All options are optional. Call `setup()` only if you want to customize:
|
||||
|
||||
```lua
|
||||
require("tiny-rooter").setup({
|
||||
markers = { ".git", ".jj", "Cargo.toml", "pyproject.toml", "Makefile", "go.mod", "package.json" },
|
||||
})
|
||||
```
|
||||
|
||||
## Default markers
|
||||
|
||||
The default marker list covers most common project types:
|
||||
|
||||
| Marker | Ecosystem |
|
||||
|--------|-----------|
|
||||
| `.git` | Git repositories |
|
||||
| `.jj` | Jujutsu repositories |
|
||||
| `Cargo.toml` | Rust |
|
||||
| `pyproject.toml` | Python |
|
||||
| `Makefile` | C/C++ and general |
|
||||
| `go.mod` | Go |
|
||||
| `package.json` | Node.js |
|
||||
|
||||
## How it works
|
||||
|
||||
On `BufReadPost` and `BufNewFile`, the plugin calls `vim.fs.root()` with
|
||||
the configured markers. If a root is found, it runs `lcd` to set the
|
||||
window-local working directory.
|
||||
|
||||
## License
|
||||
|
||||
[MIT](LICENSE)
|
||||
Reference in new issue
Block a user