mirror of
https://github.com/zoriya/jj.nvim.git
synced 2026-08-05 02:36:07 +00:00
5aaf396b70b2b1140e41abe3f45d6f859618e589
…
jj.nvim
⚠️ WORK IN PROGRESS ⚠️
A Neovim plugin for Jujutsu (jj) version control system.
About
This plugin aims to be something like vim-fugitive but for driving the jj-vcs CLI. The goal is to eventually provide features similar to git status, diffs, and pickers for managing Jujutsu repositories directly from Neovim.
Current Features
- Basic jj command execution through
:Jcommand - Terminal-based output display for jj commands
- Support jj subcommands including your aliases through the cmdline.
- First class citizens with ui integration
describe- Set change descriptionsstatus/st- Show repository statuslog- Display log history with configurable optionsdiff- Show changesnew- Create a new changeedit- Edit a changesquash- Squash the current diff to it's parent
- Picker
git statuslike for Snacks.nvim
Installation
Using lazy.nvim:
{
"nicolasgb/jj.nvim",
config = function()
require("jj").setup({})
end,
}
Cmdline Usage
The plugin provides a :J command that accepts jj subcommands:
:J status
:J log
:J describe "Your change description"
:J new
:J # This will use your defined default command
:J <your-alias>
Example config
{
"nicolasgb/jj.nvim",
config = function()
require("jj").setup({})
local cmd = require "jj.cmd"
vim.keymap.set("n", "<leader>jd", cmd.describe, { desc = "JJ describe" })
vim.keymap.set("n", "<leader>jl", cmd.log, { desc = "JJ log" })
vim.keymap.set("n", "<leader>je", cmd.edit, { desc = "JJ edit" })
vim.keymap.set("n", "<leader>jn", cmd.new, { desc = "JJ new" })
vim.keymap.set("n", "<leader>js", cmd.status, { desc = "JJ status" })
vim.keymap.set("n", "<leader>dj", cmd.diff, { desc = "JJ diff" })
vim.keymap.set("n", "<leader>sj", cmd.squash, { desc = "JJ squash" })
vim.keymap.set("n", "<leader>gj", function()
require("jj.picker").status()
end, { desc = "JJ Picker status" })
-- Some functions like `describe` or `log` can take parameters
vim.keymap.set("n", "<leader>jl", function()
cmd.log {
revisions = "all()",
}
end, { desc = "JJ log" })
-- This is an alias i use for moving bookmarks its so good
vim.keymap.set("n", "<leader>jt", function()
cmd.j "tug"
cmd.log {}
end, { desc = "JJ tug" })
end,
}
Requirements
- Jujutsu installed and available in PATH
Contributing
This is an early-stage project. Contributions are welcome, but please be aware that the API and features are likely to change significantly.
License
Languages
Lua
100%
