feat(log): Implement squash and quick squash from the log buffer.

- Squash: behaves like rebase, the user can select 1 or more
      revisions to squash and then a destination
    - Quick squash: `-r {rev} -u --ignore-immutable` flag from jj allowing
      for quick visuall squashes
This commit is contained in:
NicolasGB
2026-01-08 18:29:04 +01:00
committed by Nicolas GB
parent a23997d3bc
commit 9d9e2379fd
5 changed files with 311 additions and 118 deletions
+16
View File
@@ -46,7 +46,11 @@ local status_module = require("jj.cmd.status")
--- @field open_pr? string|string[]
--- @field open_pr_list? string|string[]
--- @field bookmark? string|string[]
--- @field rebase? string|string[]
--- @field rebase_mode? jj.cmd.rebase.keymaps
--- @field squash? string|string[]
--- @field squash_mode? jj.cmd.squash.keymaps
--- @field quick_squash? string|string[]
--- @class jj.cmd.rebase.keymaps
--- @field onto? string|string[]
@@ -57,6 +61,11 @@ local status_module = require("jj.cmd.status")
--- @field before_immutable? string|string[]
--- @field exit_mode? string|string[]
--- @class jj.cmd.squash.keymaps
--- @field into? string|string[]
--- @field into_immutable? string|string[]
--- @field exit_mode? string|string[]
--- @class jj.cmd.bookmark
--- @field prefix? string Prefix to append when creating a bookmark
@@ -138,6 +147,13 @@ M.config = {
before_immutable = "<S-b>",
exit_mode = { "<Esc>", "<C-c>" },
},
squash = "s",
squash_mode = {
into = "<CR>",
into_immutable = "<S-CR>",
exit_mode = { "<Esc>", "<C-c>" },
},
quick_squash = "<S-s>",
},
status = {
open_file = "<CR>",