]> Git — Sourcephile - julm/julm-nix.git/blob - home-manager/profiles/nvim/lua/plugins/jj.lua
neovim: configure, using ghostty and tmux
[julm/julm-nix.git] / home-manager / profiles / nvim / lua / plugins / jj.lua
1 -- This plugin aims to be something like vim-fugitive but for driving the jj-vcs CLI.
2 -- https://github.com/NicolasGB/jj.nvim
3 return {
4 "jj.nvim",
5 cmd = { "J" },
6 after = function()
7 require("jj").setup({ ["describe_editor"] = "input" })
8 local jj = require("jj.cmd")
9 vim.keymap.set("n", "<leader>jl", jj.log, { desc = "JJ log" })
10 vim.keymap.set("n", "<leader>jl", jj.log, { desc = "JJ log" })
11 vim.keymap.set("n", "<leader>jd", jj.describe, { desc = "JJ describe" })
12 vim.keymap.set("n", "<leader>je", jj.edit, { desc = "JJ edit" })
13 vim.keymap.set("n", "<leader>jn", jj.new, { desc = "JJ new" })
14 vim.keymap.set("n", "<leader>js", jj.status, { desc = "JJ status" })
15 vim.keymap.set("n", "<leader>dj", jj.diff, { desc = "JJ diff" })
16 vim.keymap.set("n", "<leader>sj", jj.squash, { desc = "JJ squash" })
17
18 -- Pickers
19 local picker = require("jj.picker")
20 vim.keymap.set("n", "<leader>gj", picker.status, { desc = "JJ Picker status" })
21 vim.keymap.set("n", "<leader>gl", picker.file_history, { desc = "JJ Picker file history" })
22
23 -- Some functions like `describe` or `log` can take parameters
24 vim.keymap.set("n", "<leader>jL", function()
25 jj.log({
26 revisions = "'all()'",
27 })
28 end, { desc = "JJ log all" })
29
30 -- tug is an alias to move a bookmark
31 vim.keymap.set("n", "<leader>jt", function()
32 local cmd = require("jj.cmd")
33 cmd.j("tug")
34 cmd.log({})
35 end, { desc = "JJ tug" })
36 end,
37 }