Add jj.nvim, diffview.nvim, and code-review.nvim with <leader>v (+VCS) and <leader>r (+Review) keybinding groups
This commit is contained in:
@@ -9,6 +9,9 @@
|
|||||||
./plugins/harpoon.nix
|
./plugins/harpoon.nix
|
||||||
./plugins/hunk.nix
|
./plugins/hunk.nix
|
||||||
./plugins/jj-diffconflicts.nix
|
./plugins/jj-diffconflicts.nix
|
||||||
|
./plugins/jj-nvim.nix
|
||||||
|
./plugins/code-review.nix
|
||||||
|
./plugins/diffview.nix
|
||||||
./plugins/lsp.nix
|
./plugins/lsp.nix
|
||||||
./plugins/mini.nix
|
./plugins/mini.nix
|
||||||
./plugins/oil.nix
|
./plugins/oil.nix
|
||||||
|
|||||||
@@ -117,16 +117,54 @@
|
|||||||
action = ":Pick visit_paths<CR>";
|
action = ":Pick visit_paths<CR>";
|
||||||
options.desc = "Visit paths (cwd)";
|
options.desc = "Visit paths (cwd)";
|
||||||
}
|
}
|
||||||
# g - git
|
# v - vcs
|
||||||
{
|
{
|
||||||
mode = "n";
|
mode = "n";
|
||||||
key = "<leader>gc";
|
key = "<leader>va";
|
||||||
|
action = ":J annotate<CR>";
|
||||||
|
options.desc = "Annotate (blame)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vc";
|
||||||
action = ":JJDiffConflicts<CR>";
|
action = ":JJDiffConflicts<CR>";
|
||||||
options.desc = "Resolve conflicts";
|
options.desc = "Resolve conflicts";
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
mode = "n";
|
mode = "n";
|
||||||
key = "<leader>gg";
|
key = "<leader>vd";
|
||||||
|
action.__raw = ''
|
||||||
|
function()
|
||||||
|
require('jj.cmd').diff()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
options.desc = "Diff (current file)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vD";
|
||||||
|
action = ":DiffviewOpen<CR>";
|
||||||
|
options.desc = "Diffview (all changes)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>ve";
|
||||||
|
action.__raw = ''
|
||||||
|
function()
|
||||||
|
require('jj.cmd').describe()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
options.desc = "Describe (edit message)";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vf";
|
||||||
|
action = ":J fetch<CR>";
|
||||||
|
options.desc = "Fetch";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vv";
|
||||||
action.__raw = ''
|
action.__raw = ''
|
||||||
function()
|
function()
|
||||||
require('toggleterm.terminal').Terminal:new({ cmd = 'jjui', direction = 'float' }):toggle()
|
require('toggleterm.terminal').Terminal:new({ cmd = 'jjui', direction = 'float' }):toggle()
|
||||||
@@ -134,6 +172,115 @@
|
|||||||
'';
|
'';
|
||||||
options.desc = "jjui";
|
options.desc = "jjui";
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vh";
|
||||||
|
action = ":DiffviewFileHistory %<CR>";
|
||||||
|
options.desc = "File history";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vH";
|
||||||
|
action = ":DiffviewFileHistory<CR>";
|
||||||
|
options.desc = "Branch history";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vl";
|
||||||
|
action.__raw = ''
|
||||||
|
function()
|
||||||
|
require('jj.cmd').log()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
options.desc = "Log";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vn";
|
||||||
|
action.__raw = ''
|
||||||
|
function()
|
||||||
|
require('jj.cmd').new()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
options.desc = "New change";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vp";
|
||||||
|
action = ":J git push<CR>";
|
||||||
|
options.desc = "Push";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vq";
|
||||||
|
action = ":DiffviewClose<CR>";
|
||||||
|
options.desc = "Close diffview";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>vs";
|
||||||
|
action.__raw = ''
|
||||||
|
function()
|
||||||
|
require('jj.cmd').status()
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
options.desc = "Status";
|
||||||
|
}
|
||||||
|
# r - review
|
||||||
|
{
|
||||||
|
mode = ["n" "v"];
|
||||||
|
key = "<leader>rc";
|
||||||
|
action = ":CodeReviewComment<CR>";
|
||||||
|
options.desc = "Add comment";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>rd";
|
||||||
|
action = ":CodeReviewDeleteComment<CR>";
|
||||||
|
options.desc = "Delete comment";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>rl";
|
||||||
|
action = ":CodeReviewList<CR>";
|
||||||
|
options.desc = "List comments";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>ro";
|
||||||
|
action = ":CodeReviewResolve<CR>";
|
||||||
|
options.desc = "Resolve thread";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>rp";
|
||||||
|
action = ":CodeReviewPreview<CR>";
|
||||||
|
options.desc = "Preview review";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>rr";
|
||||||
|
action = ":CodeReviewReply<CR>";
|
||||||
|
options.desc = "Reply to comment";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>rs";
|
||||||
|
action = ":CodeReviewShowComment<CR>";
|
||||||
|
options.desc = "Show comment";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>rx";
|
||||||
|
action = ":CodeReviewClear<CR>";
|
||||||
|
options.desc = "Clear all comments";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
mode = "n";
|
||||||
|
key = "<leader>ry";
|
||||||
|
action = ":CodeReviewCopy<CR>";
|
||||||
|
options.desc = "Copy review to clipboard";
|
||||||
|
}
|
||||||
# l - lsp/formatter
|
# l - lsp/formatter
|
||||||
{
|
{
|
||||||
mode = "n";
|
mode = "n";
|
||||||
|
|||||||
37
modules/_neovim/plugins/code-review.nix
Normal file
37
modules/_neovim/plugins/code-review.nix
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{pkgs, ...}: let
|
||||||
|
code-review-nvim =
|
||||||
|
pkgs.vimUtils.buildVimPlugin {
|
||||||
|
pname = "code-review-nvim";
|
||||||
|
version = "unstable-2026-03-10";
|
||||||
|
src =
|
||||||
|
pkgs.fetchFromGitHub {
|
||||||
|
owner = "choplin";
|
||||||
|
repo = "code-review.nvim";
|
||||||
|
rev = "ed91462e20bd08c3be71efb11a4a7d00459f0b47";
|
||||||
|
hash = "sha256-WpbQswkUpB4Nblos8+5UE5I/PHUQOi+RQ+hj4CCdL4o=";
|
||||||
|
};
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [
|
||||||
|
code-review-nvim
|
||||||
|
];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require('code-review').setup({
|
||||||
|
comment = {
|
||||||
|
storage = {
|
||||||
|
backend = "file",
|
||||||
|
file = {
|
||||||
|
dir = ".code-review",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
output = {
|
||||||
|
format = "minimal",
|
||||||
|
},
|
||||||
|
keymaps = false,
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
26
modules/_neovim/plugins/diffview.nix
Normal file
26
modules/_neovim/plugins/diffview.nix
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{pkgs, ...}: {
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = with pkgs.vimPlugins; [
|
||||||
|
diffview-nvim
|
||||||
|
];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require('diffview').setup({
|
||||||
|
enhanced_diff_hl = true,
|
||||||
|
view = {
|
||||||
|
default = { layout = "diff2_horizontal" },
|
||||||
|
merge_tool = { layout = "diff3_mixed", disable_diagnostics = true },
|
||||||
|
file_history = { layout = "diff2_horizontal" },
|
||||||
|
},
|
||||||
|
default_args = {
|
||||||
|
DiffviewOpen = { "--imply-local" },
|
||||||
|
},
|
||||||
|
hooks = {
|
||||||
|
diff_buf_read = function(bufnr)
|
||||||
|
vim.opt_local.wrap = false
|
||||||
|
vim.opt_local.list = false
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
42
modules/_neovim/plugins/jj-nvim.nix
Normal file
42
modules/_neovim/plugins/jj-nvim.nix
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
{pkgs, ...}: let
|
||||||
|
jj-nvim =
|
||||||
|
pkgs.vimUtils.buildVimPlugin {
|
||||||
|
pname = "jj-nvim";
|
||||||
|
version = "unstable-2026-03-10";
|
||||||
|
src =
|
||||||
|
pkgs.fetchFromGitHub {
|
||||||
|
owner = "NicolasGB";
|
||||||
|
repo = "jj.nvim";
|
||||||
|
rev = "bbba4051c862473637e98277f284d12b050588ca";
|
||||||
|
hash = "sha256-nokftWcAmmHX6UcH6O79xkLwbUpq1W8N9lf1e+NyGqE=";
|
||||||
|
};
|
||||||
|
doCheck = false;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [
|
||||||
|
jj-nvim
|
||||||
|
];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require('jj').setup({
|
||||||
|
diff = {
|
||||||
|
backend = "diffview",
|
||||||
|
},
|
||||||
|
cmd = {
|
||||||
|
describe = {
|
||||||
|
editor = { type = "buffer" },
|
||||||
|
},
|
||||||
|
log = {
|
||||||
|
close_on_edit = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Disable default keymaps — we set our own in mappings.nix
|
||||||
|
ui = {
|
||||||
|
log = {
|
||||||
|
keymaps = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -27,11 +27,13 @@
|
|||||||
{
|
{
|
||||||
{ mode = 'n', keys = '<Leader>e', desc = '+Explore/+Edit' },
|
{ mode = 'n', keys = '<Leader>e', desc = '+Explore/+Edit' },
|
||||||
{ mode = 'n', keys = '<Leader>f', desc = '+Find' },
|
{ mode = 'n', keys = '<Leader>f', desc = '+Find' },
|
||||||
{ mode = 'n', keys = '<Leader>g', desc = '+Git' },
|
{ mode = 'n', keys = '<Leader>v', desc = '+VCS' },
|
||||||
{ mode = 'n', keys = '<Leader>l', desc = '+LSP' },
|
{ mode = 'n', keys = '<Leader>l', desc = '+LSP' },
|
||||||
{ mode = 'x', keys = '<Leader>l', desc = '+LSP' },
|
{ mode = 'x', keys = '<Leader>l', desc = '+LSP' },
|
||||||
{ mode = 'n', keys = '<Leader>o', desc = '+OpenCode' },
|
{ mode = 'n', keys = '<Leader>o', desc = '+OpenCode' },
|
||||||
{ mode = 'x', keys = '<Leader>o', desc = '+OpenCode' },
|
{ mode = 'x', keys = '<Leader>o', desc = '+OpenCode' },
|
||||||
|
{ mode = 'n', keys = '<Leader>r', desc = '+Review' },
|
||||||
|
{ mode = 'v', keys = '<Leader>r', desc = '+Review' },
|
||||||
require("mini.clue").gen_clues.builtin_completion(),
|
require("mini.clue").gen_clues.builtin_completion(),
|
||||||
require("mini.clue").gen_clues.g(),
|
require("mini.clue").gen_clues.g(),
|
||||||
require("mini.clue").gen_clues.marks(),
|
require("mini.clue").gen_clues.marks(),
|
||||||
|
|||||||
Reference in New Issue
Block a user