Variable: byte-compile-form-stack

byte-compile-form-stack is a variable defined in macroexp.el.gz.

Value

Large value
((magit-define-section-jumper magit-jump-to-stashes "Stashes" stashes "refs/stash" magit-insert-stashes)
 (transient-define-prefix magit-stash-push
   (&optional transient args)
   "Create stash using \"git stash push\".\n\nThis differs from Magit's other stashing commands, which don't\nuse \"git stash\" and are generally more flexible but don't allow\nspecifying a list of files to be stashed." :man-page "git-stash"
   ["Arguments"
    (magit:-- :reader
	      (lambda
		(prompt initial-input history)
		(magit-read-files prompt initial-input history #'magit-modified-files)))
    ("-u" "Also save untracked files"
     ("-u" "--include-untracked"))
    ("-a" "Also save untracked and ignored files"
     ("-a" "--all"))
    ("-k" "Keep index"
     ("-k" "--keep-index"))
    ("-K" "Don't keep index" "--no-keep-index")]
   ["Actions"
    ("P" "push" magit-stash-push)]
   (interactive
    (if
	(eq transient-current-command 'magit-stash-push)
	(list nil
	      (transient-args 'magit-stash-push))
      (list t)))
   (if transient
       (transient-setup 'magit-stash-push)
     (magit-run-git "stash" "push"
		    (seq-filter #'atom args)
		    (assoc "--" args))))
 (transient-define-prefix magit-stash nil "Stash uncommitted changes." :man-page "git-stash"
   ["Arguments"
    ("-u" "Also save untracked files"
     ("-u" "--include-untracked"))
    ("-a" "Also save untracked and ignored files"
     ("-a" "--all"))]
   [["Stash"
     ("z" "both" magit-stash-both)
     ("i" "index" magit-stash-index)
     ("w" "worktree" magit-stash-worktree)
     ("x" "keeping index" magit-stash-keep-index)
     ("P" "push" magit-stash-push :level 5)]
    ["Snapshot"
     ("Z" "both" magit-snapshot-both)
     ("I" "index" magit-snapshot-index)
     ("W" "worktree" magit-snapshot-worktree)
     ("r" "to wip ref" magit-wip-commit)]
    ["Use"
     ("a" "Apply" magit-stash-apply)
     ("p" "Pop" magit-stash-pop)
     ("k" "Drop" magit-stash-drop)]
    ["Inspect"
     ("l" "List" magit-stash-list)
     ("v" "Show" magit-stash-show)]
    ["Transform"
     ("b" "Branch" magit-stash-branch)
     ("B" "Branch here" magit-stash-branch-here)
     ("f" "Format patch" magit-stash-format-patch)]])
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-argument magit-blame:-C nil :description "Detect lines moved or copied between files" :class 'transient-option :argument "-C" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-argument magit-blame:-M nil :description "Detect lines moved or copied within a file" :class 'transient-option :argument "-M" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-blame nil "Show the commits that added or removed lines in the visited file." :man-page "git-blame" :value
   '("-w")
   ["Arguments"
    ("-w" "Ignore whitespace" "-w")
    ("-r" "Do not treat root commits as boundaries" "--root")
    ("-P" "Follow only first parent" "--first-parent")
    (magit-blame:-M)
    (magit-blame:-C)]
   ["Actions"
    ("b" "Show commits adding lines" magit-blame-addition)
    ("r" "Show commits removing lines" magit-blame-removal)
    ("f" "Show last commits that still have lines" magit-blame-reverse)
    ("m" "Blame echo" magit-blame-echo)
    ("q" "Quit blaming" magit-blame-quit)]
   ["Refresh" :if-non-nil magit-blame-mode
    ("c" "Cycle style" magit-blame-cycle-style :transient t)])
 (transient-define-suffix magit-blame-quit nil "Turn off Magit-Blame mode.\nIf the buffer was created during a recursive blame,\nthen also kill the buffer." :if-non-nil 'magit-blame-mode
   (interactive)
   (magit-blame-mode -1)
   (when magit-blame-recursive-p
     (kill-buffer)))
 (transient-define-suffix magit-blame-reverse
   (args)
   "For each line show the last revision in which it still exists." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'final)
   (magit-blame--pre-blame-setup 'final)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-removal
   (args)
   "For each line show the revision in which it was removed." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'removal)
   (magit-blame--pre-blame-setup 'removal)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-addition
   (args)
   "For each line show the revision in which it was added."
   (interactive
    (list
     (magit-blame-arguments)))
   (magit-blame--pre-blame-assert 'addition)
   (magit-blame--pre-blame-setup 'addition)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-echo
   (args)
   "For each line show the revision in which it was added.\nShow the information about the chunk at point in the echo area\nwhen moving between chunks.  Unlike other blaming commands, do\nnot turn on `read-only-mode'." :if
   (## and buffer-file-name
	   (or
	    (not magit-blame-mode)
	    buffer-read-only))
   (interactive
    (list
     (magit-blame-arguments)))
   (when magit-buffer-file-name
     (user-error "Blob buffers aren't supported"))
   (setq-local magit-blame--style
	       (assq magit-blame-echo-style magit-blame-styles))
   (setq-local magit-blame-disable-modes
	       (cons 'eldoc-mode magit-blame-disable-modes))
   (if
       (not magit-blame-mode)
       (let
	   ((magit-blame-read-only nil))
	 (magit-blame--pre-blame-assert 'addition)
	 (magit-blame--pre-blame-setup 'addition)
	 (magit-blame--run args))
     (read-only-mode -1)
     (magit-blame--update-overlays)))
 (transient-define-argument magit-blame:-C nil :description "Detect lines moved or copied between files" :class 'transient-option :argument "-C" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-argument magit-blame:-M nil :description "Detect lines moved or copied within a file" :class 'transient-option :argument "-M" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-blame nil "Show the commits that added or removed lines in the visited file." :man-page "git-blame" :value
   '("-w")
   ["Arguments"
    ("-w" "Ignore whitespace" "-w")
    ("-r" "Do not treat root commits as boundaries" "--root")
    ("-P" "Follow only first parent" "--first-parent")
    (magit-blame:-M)
    (magit-blame:-C)]
   ["Actions"
    ("b" "Show commits adding lines" magit-blame-addition)
    ("r" "Show commits removing lines" magit-blame-removal)
    ("f" "Show last commits that still have lines" magit-blame-reverse)
    ("m" "Blame echo" magit-blame-echo)
    ("q" "Quit blaming" magit-blame-quit)]
   ["Refresh" :if-non-nil magit-blame-mode
    ("c" "Cycle style" magit-blame-cycle-style :transient t)])
 (transient-define-suffix magit-blame-quit nil "Turn off Magit-Blame mode.\nIf the buffer was created during a recursive blame,\nthen also kill the buffer." :if-non-nil 'magit-blame-mode
   (interactive)
   (magit-blame-mode -1)
   (when magit-blame-recursive-p
     (kill-buffer)))
 (transient-define-suffix magit-blame-reverse
   (args)
   "For each line show the last revision in which it still exists." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'final)
   (magit-blame--pre-blame-setup 'final)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-removal
   (args)
   "For each line show the revision in which it was removed." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'removal)
   (magit-blame--pre-blame-setup 'removal)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-addition
   (args)
   "For each line show the revision in which it was added."
   (interactive
    (list
     (magit-blame-arguments)))
   (magit-blame--pre-blame-assert 'addition)
   (magit-blame--pre-blame-setup 'addition)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-echo
   (args)
   "For each line show the revision in which it was added.\nShow the information about the chunk at point in the echo area\nwhen moving between chunks.  Unlike other blaming commands, do\nnot turn on `read-only-mode'." :if
   (## and buffer-file-name
	   (or
	    (not magit-blame-mode)
	    buffer-read-only))
   (interactive
    (list
     (magit-blame-arguments)))
   (when magit-buffer-file-name
     (user-error "Blob buffers aren't supported"))
   (setq-local magit-blame--style
	       (assq magit-blame-echo-style magit-blame-styles))
   (setq-local magit-blame-disable-modes
	       (cons 'eldoc-mode magit-blame-disable-modes))
   (if
       (not magit-blame-mode)
       (let
	   ((magit-blame-read-only nil))
	 (magit-blame--pre-blame-assert 'addition)
	 (magit-blame--pre-blame-setup 'addition)
	 (magit-blame--run args))
     (read-only-mode -1)
     (magit-blame--update-overlays)))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-argument magit-blame:-C nil :description "Detect lines moved or copied between files" :class 'transient-option :argument "-C" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-argument magit-blame:-M nil :description "Detect lines moved or copied within a file" :class 'transient-option :argument "-M" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-blame nil "Show the commits that added or removed lines in the visited file." :man-page "git-blame" :value
   '("-w")
   ["Arguments"
    ("-w" "Ignore whitespace" "-w")
    ("-r" "Do not treat root commits as boundaries" "--root")
    ("-P" "Follow only first parent" "--first-parent")
    (magit-blame:-M)
    (magit-blame:-C)]
   ["Actions"
    ("b" "Show commits adding lines" magit-blame-addition)
    ("r" "Show commits removing lines" magit-blame-removal)
    ("f" "Show last commits that still have lines" magit-blame-reverse)
    ("m" "Blame echo" magit-blame-echo)
    ("q" "Quit blaming" magit-blame-quit)]
   ["Refresh" :if-non-nil magit-blame-mode
    ("c" "Cycle style" magit-blame-cycle-style :transient t)])
 (transient-define-suffix magit-blame-quit nil "Turn off Magit-Blame mode.\nIf the buffer was created during a recursive blame,\nthen also kill the buffer." :if-non-nil 'magit-blame-mode
   (interactive)
   (magit-blame-mode -1)
   (when magit-blame-recursive-p
     (kill-buffer)))
 (transient-define-suffix magit-blame-reverse
   (args)
   "For each line show the last revision in which it still exists." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'final)
   (magit-blame--pre-blame-setup 'final)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-removal
   (args)
   "For each line show the revision in which it was removed." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'removal)
   (magit-blame--pre-blame-setup 'removal)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-addition
   (args)
   "For each line show the revision in which it was added."
   (interactive
    (list
     (magit-blame-arguments)))
   (magit-blame--pre-blame-assert 'addition)
   (magit-blame--pre-blame-setup 'addition)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-echo
   (args)
   "For each line show the revision in which it was added.\nShow the information about the chunk at point in the echo area\nwhen moving between chunks.  Unlike other blaming commands, do\nnot turn on `read-only-mode'." :if
   (## and buffer-file-name
	   (or
	    (not magit-blame-mode)
	    buffer-read-only))
   (interactive
    (list
     (magit-blame-arguments)))
   (when magit-buffer-file-name
     (user-error "Blob buffers aren't supported"))
   (setq-local magit-blame--style
	       (assq magit-blame-echo-style magit-blame-styles))
   (setq-local magit-blame-disable-modes
	       (cons 'eldoc-mode magit-blame-disable-modes))
   (if
       (not magit-blame-mode)
       (let
	   ((magit-blame-read-only nil))
	 (magit-blame--pre-blame-assert 'addition)
	 (magit-blame--pre-blame-setup 'addition)
	 (magit-blame--run args))
     (read-only-mode -1)
     (magit-blame--update-overlays)))
 (transient-define-argument magit-blame:-C nil :description "Detect lines moved or copied between files" :class 'transient-option :argument "-C" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-argument magit-blame:-M nil :description "Detect lines moved or copied within a file" :class 'transient-option :argument "-M" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-blame nil "Show the commits that added or removed lines in the visited file." :man-page "git-blame" :value
   '("-w")
   ["Arguments"
    ("-w" "Ignore whitespace" "-w")
    ("-r" "Do not treat root commits as boundaries" "--root")
    ("-P" "Follow only first parent" "--first-parent")
    (magit-blame:-M)
    (magit-blame:-C)]
   ["Actions"
    ("b" "Show commits adding lines" magit-blame-addition)
    ("r" "Show commits removing lines" magit-blame-removal)
    ("f" "Show last commits that still have lines" magit-blame-reverse)
    ("m" "Blame echo" magit-blame-echo)
    ("q" "Quit blaming" magit-blame-quit)]
   ["Refresh" :if-non-nil magit-blame-mode
    ("c" "Cycle style" magit-blame-cycle-style :transient t)])
 (transient-define-suffix magit-blame-quit nil "Turn off Magit-Blame mode.\nIf the buffer was created during a recursive blame,\nthen also kill the buffer." :if-non-nil 'magit-blame-mode
   (interactive)
   (magit-blame-mode -1)
   (when magit-blame-recursive-p
     (kill-buffer)))
 (transient-define-suffix magit-blame-reverse
   (args)
   "For each line show the last revision in which it still exists." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'final)
   (magit-blame--pre-blame-setup 'final)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-removal
   (args)
   "For each line show the revision in which it was removed." :if-nil 'buffer-file-name
   (interactive
    (list
     (magit-blame-arguments)))
   (unless magit-buffer-file-name
     (user-error "Only blob buffers can be blamed in reverse"))
   (magit-blame--pre-blame-assert 'removal)
   (magit-blame--pre-blame-setup 'removal)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-addition
   (args)
   "For each line show the revision in which it was added."
   (interactive
    (list
     (magit-blame-arguments)))
   (magit-blame--pre-blame-assert 'addition)
   (magit-blame--pre-blame-setup 'addition)
   (magit-blame--run args))
 (transient-define-suffix magit-blame-echo
   (args)
   "For each line show the revision in which it was added.\nShow the information about the chunk at point in the echo area\nwhen moving between chunks.  Unlike other blaming commands, do\nnot turn on `read-only-mode'." :if
   (## and buffer-file-name
	   (or
	    (not magit-blame-mode)
	    buffer-read-only))
   (interactive
    (list
     (magit-blame-arguments)))
   (when magit-buffer-file-name
     (user-error "Blob buffers aren't supported"))
   (setq-local magit-blame--style
	       (assq magit-blame-echo-style magit-blame-styles))
   (setq-local magit-blame-disable-modes
	       (cons 'eldoc-mode magit-blame-disable-modes))
   (if
       (not magit-blame-mode)
       (let
	   ((magit-blame-read-only nil))
	 (magit-blame--pre-blame-assert 'addition)
	 (magit-blame--pre-blame-setup 'addition)
	 (magit-blame--run args))
     (read-only-mode -1)
     (magit-blame--update-overlays)))
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-refs-set-show-commit-count nil "Change for which refs the commit count is shown." :description "Change verbosity" :key "v" :transient nil :if-derived 'magit-refs-mode
   (interactive)
   (setq-local magit-refs-show-commit-count
	       (magit-read-char-case "Show commit counts for " nil
		 (97 "[a]ll refs" 'all)
		 (98 "[b]ranches only" t)
		 (110 "[n]othing" nil)))
   (magit-refresh))
 (transient-define-argument magit-for-each-ref:--sort nil :description "Sort" :class 'transient-option :key "-s" :argument "--sort=" :reader #'magit-read-ref-sort)
 (transient-define-argument magit-for-each-ref:--contains nil :description "Contains" :class 'transient-option :key "-c" :argument "--contains=" :reader #'magit-transient-read-revision)
 (transient-define-prefix magit-show-refs
   (&optional transient)
   "List and compare references in a dedicated buffer." :man-page "git-branch" :value
   (## magit-show-refs-arguments magit-prefix-use-buffer-arguments)
   ["Arguments"
    (magit-for-each-ref:--contains)
    ("-M" "Merged" "--merged=" magit-transient-read-revision)
    ("-m" "Merged to HEAD" "--merged")
    ("-N" "Not merged" "--no-merged=" magit-transient-read-revision)
    ("-n" "Not merged to HEAD" "--no-merged")
    (magit-for-each-ref:--sort)]
   ["Actions"
    ("y" "Show refs, comparing them with HEAD" magit-show-refs-head)
    ("c" "Show refs, comparing them with current branch" magit-show-refs-current)
    ("o" "Show refs, comparing them with other branch" magit-show-refs-other)
    ("r" "Show refs, changing commit count display" magit-refs-set-show-commit-count)]
   (interactive
    (list
     (or
      (derived-mode-p 'magit-refs-mode)
      current-prefix-arg)))
   (if transient
       (transient-setup 'magit-show-refs)
     (magit-refs-setup-buffer "HEAD"
			      (magit-show-refs-arguments))))
 (transient-define-suffix magit-refs-set-show-commit-count nil "Change for which refs the commit count is shown." :description "Change verbosity" :key "v" :transient nil :if-derived 'magit-refs-mode
   (interactive)
   (setq-local magit-refs-show-commit-count
	       (magit-read-char-case "Show commit counts for " nil
		 (97 "[a]ll refs" 'all)
		 (98 "[b]ranches only" t)
		 (110 "[n]othing" nil)))
   (magit-refresh))
 (transient-define-argument magit-for-each-ref:--sort nil :description "Sort" :class 'transient-option :key "-s" :argument "--sort=" :reader #'magit-read-ref-sort)
 (transient-define-argument magit-for-each-ref:--contains nil :description "Contains" :class 'transient-option :key "-c" :argument "--contains=" :reader #'magit-transient-read-revision)
 (transient-define-prefix magit-show-refs
   (&optional transient)
   "List and compare references in a dedicated buffer." :man-page "git-branch" :value
   (## magit-show-refs-arguments magit-prefix-use-buffer-arguments)
   ["Arguments"
    (magit-for-each-ref:--contains)
    ("-M" "Merged" "--merged=" magit-transient-read-revision)
    ("-m" "Merged to HEAD" "--merged")
    ("-N" "Not merged" "--no-merged=" magit-transient-read-revision)
    ("-n" "Not merged to HEAD" "--no-merged")
    (magit-for-each-ref:--sort)]
   ["Actions"
    ("y" "Show refs, comparing them with HEAD" magit-show-refs-head)
    ("c" "Show refs, comparing them with current branch" magit-show-refs-current)
    ("o" "Show refs, comparing them with other branch" magit-show-refs-other)
    ("r" "Show refs, changing commit count display" magit-refs-set-show-commit-count)]
   (interactive
    (list
     (or
      (derived-mode-p 'magit-refs-mode)
      current-prefix-arg)))
   (if transient
       (transient-setup 'magit-show-refs)
     (magit-refs-setup-buffer "HEAD"
			      (magit-show-refs-arguments))))
 (transient-define-infix magit-remote.<remote>.followremotehead nil "How \"git fetch\" handles updates to \"remotes/<remote>/HEAD\".\n\nThis command sets the local value of the Git variable\n`remote.<remote>.followRemoteHEAD', where <remote> is a stand-in for\nthe actual remote, as displayed in the menu, from which this command\nis invoked.  This variable is documented in (man \"git-config(1)\").\n\nUnfortunately Git does not provide a variable to set a default for\nall remotes of all repositories, but you can set the global value for\na remote name used in multiple repository, which will then be used as\nthe default for that remote in all repositories.  You should consider\nusing \"always\" for remotes named \"origin\".\n\n  git config set --global remote.origin.followRemoteHEAD always" :class 'magit--git-variable:choices :scope #'magit--read-remote-scope :variable "remote.%s.followRemoteHEAD" :choices
   '("create" "always" "warn")
   :default "create")
 (transient-define-infix magit-remote.<remote>.tagopt nil :class 'magit--git-variable:choices :scope #'magit--read-remote-scope :variable "remote.%s.tagOpt" :choices
   '("--no-tags" "--tags"))
 (transient-define-infix magit-remote.<remote>.push nil :class 'magit--git-variable :scope #'magit--read-remote-scope :variable "remote.%s.push")
 (transient-define-infix magit-remote.<remote>.pushurl nil :class 'magit--git-variable:urls :scope #'magit--read-remote-scope :variable "remote.%s.pushurl" :multi-value t :history-key 'magit-remote.<remote>.*url :seturl-arg "--push")
 (transient-define-infix magit-remote.<remote>.fetch nil :class 'magit--git-variable :scope #'magit--read-remote-scope :variable "remote.%s.fetch" :multi-value t)
 (transient-define-infix magit-remote.<remote>.url nil :class 'magit--git-variable:urls :scope #'magit--read-remote-scope :variable "remote.%s.url" :multi-value t :history-key 'magit-remote.<remote>.*url)
 (transient-define-prefix magit-remote-configure
   (remote)
   "Configure a remote." :man-page "git-remote"
   [:description
    (## concat
	(propertize "Configure " 'face 'transient-heading)
	(propertize
	 (transient-scope)
	 'face 'magit-branch-remote))
    ("u" magit-remote.<remote>.url)
    ("U" magit-remote.<remote>.fetch)
    ("s" magit-remote.<remote>.pushurl)
    ("S" magit-remote.<remote>.push)
    ("O" magit-remote.<remote>.tagopt)
    ("h" magit-remote.<remote>.followremotehead)]
   (interactive
    (list
     (or
      (and
       (not current-prefix-arg)
       (not
	(and magit-remote-direct-configure
	     (eq transient-current-command 'magit-remote)))
       (magit-get-current-remote))
      (magit--read-remote-scope))))
   (transient-setup 'magit-remote-configure nil nil :scope remote))
 (transient-define-suffix magit-update-default-branch nil "Update name of the default branch after upstream changed it." :description "Update default branch" :inapt-if-not #'magit-get-some-remote
   (interactive)
   (pcase-let
       ((`(,_remote ,oldname)
	 (magit--get-default-branch))
	(`(,remote ,newname)
	 (magit--get-default-branch t)))
     (cond
      ((equal oldname newname)
       (setq oldname
	     (read-string
	      (format "Name of default branch is still `%s', %s\n%s `%s': " oldname "but the upstreams of some local branches might need updating." "Name of upstream branches to replace with" newname)))
       (magit--set-default-branch newname oldname)
       (magit-refresh))
      (t
       (unless oldname
	 (setq oldname
	       (magit-read-other-local-branch
		(format "Name of old default branch to be renamed to `%s'" newname)
		newname "master")))
       (cond
	((y-or-n-p
	  (format "Default branch changed from `%s' to `%s' on %s.%s?" oldname newname remote "  Do the same locally"))
	 (magit--set-default-branch newname oldname)
	 (magit-refresh))
	((user-error "Abort")))))))
 (transient-define-prefix magit-remote
   (remote)
   "Add, configure or remove a remote." :man-page "git-remote" :value
   '("-f")
   ["Variables" :if
    (## and magit-remote-direct-configure
	    (transient-scope))
    ("u" magit-remote.<remote>.url)
    ("U" magit-remote.<remote>.fetch)
    ("s" magit-remote.<remote>.pushurl)
    ("S" magit-remote.<remote>.push)
    ("O" magit-remote.<remote>.tagopt)
    ("h" magit-remote.<remote>.followremotehead)]
   ["Arguments for add"
    ("-f" "Fetch after add" "-f")]
   ["Actions"
    [("a" "Add" magit-remote-add)
     ("r" "Rename" magit-remote-rename)
     ("k" "Remove" magit-remote-remove)]
    [("C" "Configure..." magit-remote-configure)
     ("p" "Prune stale branches" magit-remote-prune)
     ("P" "Prune stale refspecs" magit-remote-prune-refspecs)
     (7 "z" "Unshallow remote" magit-remote-unshallow)]
    [("d u" magit-update-default-branch)]]
   (interactive
    (list
     (magit-get-current-remote)))
   (transient-setup 'magit-remote nil nil :scope remote))
 (transient-define-infix magit-remote.<remote>.followremotehead nil "How \"git fetch\" handles updates to \"remotes/<remote>/HEAD\".\n\nThis command sets the local value of the Git variable\n`remote.<remote>.followRemoteHEAD', where <remote> is a stand-in for\nthe actual remote, as displayed in the menu, from which this command\nis invoked.  This variable is documented in (man \"git-config(1)\").\n\nUnfortunately Git does not provide a variable to set a default for\nall remotes of all repositories, but you can set the global value for\na remote name used in multiple repository, which will then be used as\nthe default for that remote in all repositories.  You should consider\nusing \"always\" for remotes named \"origin\".\n\n  git config set --global remote.origin.followRemoteHEAD always" :class 'magit--git-variable:choices :scope #'magit--read-remote-scope :variable "remote.%s.followRemoteHEAD" :choices
   '("create" "always" "warn")
   :default "create")
 (transient-define-infix magit-remote.<remote>.tagopt nil :class 'magit--git-variable:choices :scope #'magit--read-remote-scope :variable "remote.%s.tagOpt" :choices
   '("--no-tags" "--tags"))
 (transient-define-infix magit-remote.<remote>.push nil :class 'magit--git-variable :scope #'magit--read-remote-scope :variable "remote.%s.push")
 (transient-define-infix magit-remote.<remote>.pushurl nil :class 'magit--git-variable:urls :scope #'magit--read-remote-scope :variable "remote.%s.pushurl" :multi-value t :history-key 'magit-remote.<remote>.*url :seturl-arg "--push")
 (transient-define-infix magit-remote.<remote>.fetch nil :class 'magit--git-variable :scope #'magit--read-remote-scope :variable "remote.%s.fetch" :multi-value t)
 (transient-define-infix magit-remote.<remote>.url nil :class 'magit--git-variable:urls :scope #'magit--read-remote-scope :variable "remote.%s.url" :multi-value t :history-key 'magit-remote.<remote>.*url)
 (transient-define-prefix magit-remote-configure
   (remote)
   "Configure a remote." :man-page "git-remote"
   [:description
    (## concat
	(propertize "Configure " 'face 'transient-heading)
	(propertize
	 (transient-scope)
	 'face 'magit-branch-remote))
    ("u" magit-remote.<remote>.url)
    ("U" magit-remote.<remote>.fetch)
    ("s" magit-remote.<remote>.pushurl)
    ("S" magit-remote.<remote>.push)
    ("O" magit-remote.<remote>.tagopt)
    ("h" magit-remote.<remote>.followremotehead)]
   (interactive
    (list
     (or
      (and
       (not current-prefix-arg)
       (not
	(and magit-remote-direct-configure
	     (eq transient-current-command 'magit-remote)))
       (magit-get-current-remote))
      (magit--read-remote-scope))))
   (transient-setup 'magit-remote-configure nil nil :scope remote))
 (transient-define-suffix magit-update-default-branch nil "Update name of the default branch after upstream changed it." :description "Update default branch" :inapt-if-not #'magit-get-some-remote
   (interactive)
   (pcase-let
       ((`(,_remote ,oldname)
	 (magit--get-default-branch))
	(`(,remote ,newname)
	 (magit--get-default-branch t)))
     (cond
      ((equal oldname newname)
       (setq oldname
	     (read-string
	      (format "Name of default branch is still `%s', %s\n%s `%s': " oldname "but the upstreams of some local branches might need updating." "Name of upstream branches to replace with" newname)))
       (magit--set-default-branch newname oldname)
       (magit-refresh))
      (t
       (unless oldname
	 (setq oldname
	       (magit-read-other-local-branch
		(format "Name of old default branch to be renamed to `%s'" newname)
		newname "master")))
       (cond
	((y-or-n-p
	  (format "Default branch changed from `%s' to `%s' on %s.%s?" oldname newname remote "  Do the same locally"))
	 (magit--set-default-branch newname oldname)
	 (magit-refresh))
	((user-error "Abort")))))))
 (transient-define-prefix magit-remote
   (remote)
   "Add, configure or remove a remote." :man-page "git-remote" :value
   '("-f")
   ["Variables" :if
    (## and magit-remote-direct-configure
	    (transient-scope))
    ("u" magit-remote.<remote>.url)
    ("U" magit-remote.<remote>.fetch)
    ("s" magit-remote.<remote>.pushurl)
    ("S" magit-remote.<remote>.push)
    ("O" magit-remote.<remote>.tagopt)
    ("h" magit-remote.<remote>.followremotehead)]
   ["Arguments for add"
    ("-f" "Fetch after add" "-f")]
   ["Actions"
    [("a" "Add" magit-remote-add)
     ("r" "Rename" magit-remote-rename)
     ("k" "Remove" magit-remote-remove)]
    [("C" "Configure..." magit-remote-configure)
     ("p" "Prune stale branches" magit-remote-prune)
     ("P" "Prune stale refspecs" magit-remote-prune-refspecs)
     (7 "z" "Unshallow remote" magit-remote-unshallow)]
    [("d u" magit-update-default-branch)]]
   (interactive
    (list
     (magit-get-current-remote)))
   (transient-setup 'magit-remote nil nil :scope remote))
 (transient-define-prefix magit-fetch-modules
   (&optional transient args)
   "Fetch all populated submodules.\n\nFetching is done using \"git fetch --recurse-submodules\", which\nmeans that the super-repository and recursively all submodules\nare also fetched.\n\nTo set and potentially save other arguments invoke this command\nwith a prefix argument." :man-page "git-fetch" :value
   (list "--verbose" "--jobs=4")
   ["Arguments"
    ("-v" "verbose" "--verbose")
    ("-j" "number of jobs" "--jobs=" :reader transient-read-number-N+)]
   ["Action"
    ("m" "fetch modules" magit-fetch-modules)]
   (interactive
    (if current-prefix-arg
	(list t)
      (list nil
	    (transient-args 'magit-fetch-modules))))
   (if transient
       (transient-setup 'magit-fetch-modules)
     (magit-with-toplevel
       (magit-run-git-async "fetch" "--recurse-submodules" args))
     (unless
	 (magit-list-remotes)
       (message "Cannot fetch modules if super-repository has no remotes"))))
 (transient-define-suffix magit-fetch-from-upstream
   (remote args)
   "Fetch from the \"current\" remote, usually the upstream.\n\nIf the upstream is configured for the current branch and names\nan existing remote, then use that.  Otherwise try to use another\nremote: If only a single remote is configured, then use that.\nOtherwise if a remote named \"origin\" exists, then use that.\n\nIf no remote can be determined, then this command is not available\nfrom the `magit-fetch' transient prefix and invoking it directly\nresults in an error." :if
   (## magit-get-current-remote t)
   :description
   (## magit-get-current-remote t)
   (interactive
    (list
     (magit-get-current-remote t)
     (magit-fetch-arguments)))
   (unless remote
     (error "The \"current\" remote could not be determined"))
   (magit-git-fetch remote args))
 (transient-define-suffix magit-fetch-from-pushremote
   (args)
   "Fetch from the current push-remote.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :description #'magit-fetch--pushremote-description
   (interactive
    (list
     (magit-fetch-arguments)))
   (let
       ((remote
	 (magit-get-push-remote)))
     (when
	 (or current-prefix-arg
	     (not
	      (member remote
		      (magit-list-remotes))))
       (let
	   ((var
	     (magit--push-remote-variable)))
	 (setq remote
	       (magit-read-remote
		(format "Set %s and fetch from there" var)))
	 (magit-set remote var)))
     (magit-git-fetch remote args)))
 (transient-define-prefix magit-fetch nil "Fetch from another repository." :man-page "git-fetch"
   ["Arguments"
    ("-p" "Prune deleted branches"
     ("-p" "--prune"))
    ("-t" "Fetch all tags"
     ("-t" "--tags"))
    ("-u" "Fetch full history" "--unshallow" :level 7)
    ("-F" "Force"
     ("-f" "--force"))]
   ["Fetch from"
    ("p" magit-fetch-from-pushremote)
    ("u" magit-fetch-from-upstream)
    ("e" "elsewhere" magit-fetch-other)
    ("a" "all remotes" magit-fetch-all)]
   ["Fetch"
    ("o" "another branch" magit-fetch-branch)
    ("r" "explicit refspec" magit-fetch-refspec)
    ("m" "submodules" magit-fetch-modules)]
   ["Configure"
    ("C" "variables..." magit-branch-configure)])
 (transient-define-prefix magit-fetch-modules
   (&optional transient args)
   "Fetch all populated submodules.\n\nFetching is done using \"git fetch --recurse-submodules\", which\nmeans that the super-repository and recursively all submodules\nare also fetched.\n\nTo set and potentially save other arguments invoke this command\nwith a prefix argument." :man-page "git-fetch" :value
   (list "--verbose" "--jobs=4")
   ["Arguments"
    ("-v" "verbose" "--verbose")
    ("-j" "number of jobs" "--jobs=" :reader transient-read-number-N+)]
   ["Action"
    ("m" "fetch modules" magit-fetch-modules)]
   (interactive
    (if current-prefix-arg
	(list t)
      (list nil
	    (transient-args 'magit-fetch-modules))))
   (if transient
       (transient-setup 'magit-fetch-modules)
     (magit-with-toplevel
       (magit-run-git-async "fetch" "--recurse-submodules" args))
     (unless
	 (magit-list-remotes)
       (message "Cannot fetch modules if super-repository has no remotes"))))
 (transient-define-suffix magit-fetch-from-upstream
   (remote args)
   "Fetch from the \"current\" remote, usually the upstream.\n\nIf the upstream is configured for the current branch and names\nan existing remote, then use that.  Otherwise try to use another\nremote: If only a single remote is configured, then use that.\nOtherwise if a remote named \"origin\" exists, then use that.\n\nIf no remote can be determined, then this command is not available\nfrom the `magit-fetch' transient prefix and invoking it directly\nresults in an error." :if
   (## magit-get-current-remote t)
   :description
   (## magit-get-current-remote t)
   (interactive
    (list
     (magit-get-current-remote t)
     (magit-fetch-arguments)))
   (unless remote
     (error "The \"current\" remote could not be determined"))
   (magit-git-fetch remote args))
 (transient-define-suffix magit-fetch-from-pushremote
   (args)
   "Fetch from the current push-remote.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :description #'magit-fetch--pushremote-description
   (interactive
    (list
     (magit-fetch-arguments)))
   (let
       ((remote
	 (magit-get-push-remote)))
     (when
	 (or current-prefix-arg
	     (not
	      (member remote
		      (magit-list-remotes))))
       (let
	   ((var
	     (magit--push-remote-variable)))
	 (setq remote
	       (magit-read-remote
		(format "Set %s and fetch from there" var)))
	 (magit-set remote var)))
     (magit-git-fetch remote args)))
 (transient-define-prefix magit-fetch nil "Fetch from another repository." :man-page "git-fetch"
   ["Arguments"
    ("-p" "Prune deleted branches"
     ("-p" "--prune"))
    ("-t" "Fetch all tags"
     ("-t" "--tags"))
    ("-u" "Fetch full history" "--unshallow" :level 7)
    ("-F" "Force"
     ("-f" "--force"))]
   ["Fetch from"
    ("p" magit-fetch-from-pushremote)
    ("u" magit-fetch-from-upstream)
    ("e" "elsewhere" magit-fetch-other)
    ("a" "all remotes" magit-fetch-all)]
   ["Fetch"
    ("o" "another branch" magit-fetch-branch)
    ("r" "explicit refspec" magit-fetch-refspec)
    ("m" "submodules" magit-fetch-modules)]
   ["Configure"
    ("C" "variables..." magit-branch-configure)])
 (transient-define-suffix magit-push-to-remote
   (remote args)
   "Push to REMOTE without using an explicit refspec.\nThe REMOTE is read in the minibuffer.\n\nThis command simply runs \"git push -v [ARGS] REMOTE\".  ARGS\nare the arguments specified in the popup buffer.  No refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nYou can add this command as a suffix using something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"x\" magit-push-to-remote))" :description #'magit-push-to-remote--desc
   (interactive
    (list
     (magit-read-remote "Push to remote")
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args remote))
 (transient-define-suffix magit-push-implicitly
   (args)
   "Push somewhere without using an explicit refspec.\n\nThis command simply runs \"git push -v [ARGS]\".  ARGS are the\narguments specified in the popup buffer.  No explicit refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nIf you add this suffix to a transient prefix without explicitly\nspecifying the description, then an attempt is made to predict\nwhat this command will do.  To add it use something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"i\" magit-push-implicitly))" :description #'magit-push-implicitly--desc
   (interactive
    (list
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args))
 (transient-define-suffix magit-push-current-to-upstream
   (args)
   "Push the current branch to its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-push--upstream-description
   (interactive
    (list
     (magit-push-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(remote
	 (magit-get "branch" branch "remote"))
	(merge
	 (magit-get "branch" branch "merge")))
     (when
	 (or current-prefix-arg
	     (not
	      (or
	       (magit-get-upstream-branch branch)
	       (magit--unnamed-upstream-p remote merge)
	       (magit--valid-upstream-p remote merge))))
       (let
	   ((upstream
	     (magit-completing-read
	      (format "Set upstream of %s and push there" branch)
	      (seq-union
	       (mapcar
		(## concat % "/" branch)
		(magit-list-remotes))
	       (magit-list-remote-branch-names))
	      nil 'any nil 'magit-revision-history
	      (or
	       (magit-remote-branch-at-point)
	       (and$
		(magit-primary-remote)
		(magit-main-branch $))))))
	 (pcase-setq
	  `(,remote \, merge)
	  (or
	   (magit-get-tracked upstream)
	   (magit-split-branch-name upstream)))
	 (unless
	     (string-prefix-p "refs/" merge)
	   (setq merge
		 (concat "refs/heads/" merge)))
	 (magit-confirm 'set-and-push
	   (list "Really use \"%s\" as upstream and push \"%s\" there" upstream branch)))
       (cl-pushnew "--set-upstream" args :test #'equal))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (concat branch ":" merge))))
 (transient-define-suffix magit-push-current-to-pushremote
   (args)
   "Push the current branch to its push-remote.\n\nWhen the push-remote is not configured, then read the push-remote\nfrom the user, set it, and then push to it.  With a prefix\nargument the push-remote can be changed before pushed to it." :if #'magit-get-current-branch :description #'magit-push--pushbranch-description
   (interactive
    (list
     (magit-push-arguments)))
   (pcase-let
       ((`(,branch ,remote ,changed)
	 (magit--select-push-remote "push there")))
     (when changed
       (magit-confirm 'set-and-push
	 (list "Really use \"%s\" as push-remote and push \"%s\" there" remote branch)))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (format "refs/heads/%s:refs/heads/%s" branch branch))))
 (transient-define-infix magit-push:--push-option nil :description "Set push-options" :class 'transient-option :shortarg "-o" :argument "--push-option=" :multi-value 'repeat :choices
   (lambda nil magit-push-options))
 (transient-define-prefix magit-push nil "Push to another repository." :man-page "git-push"
   ["Arguments"
    ("-f" "Force with lease"
     (nil "--force-with-lease"))
    ("-F" "Force"
     ("-f" "--force"))
    ("-h" "Disable hooks" "--no-verify")
    ("-n" "Dry run"
     ("-n" "--dry-run"))
    ("-u" "Set upstream" "--set-upstream" :level 5)
    ("-T" "Include all tags" "--tags")
    ("-t" "Include related annotated tags" "--follow-tags")
    ("-o" magit-push:--push-option :level 5)]
   [:if magit-get-current-branch :description
	(## format
	    (propertize "Push %s to" 'face 'transient-heading)
	    (propertize
	     (magit-get-current-branch)
	     'face 'magit-branch-local))
	("p" magit-push-current-to-pushremote)
	("u" magit-push-current-to-upstream)
	("e" "elsewhere" magit-push-current)]
   ["Push"
    [("o" "another branch" magit-push-other)
     ("r" "explicit refspecs" magit-push-refspecs)
     ("m" "matching branches" magit-push-matching)]
    [("T" "a tag" magit-push-tag)
     ("t" "all tags" magit-push-tags)
     (6 "n" "a note ref" magit-push-notes-ref)]]
   ["Configure"
    ("C" "Set variables..." magit-branch-configure)])
 (transient-define-suffix magit-push-to-remote
   (remote args)
   "Push to REMOTE without using an explicit refspec.\nThe REMOTE is read in the minibuffer.\n\nThis command simply runs \"git push -v [ARGS] REMOTE\".  ARGS\nare the arguments specified in the popup buffer.  No refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nYou can add this command as a suffix using something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"x\" magit-push-to-remote))" :description #'magit-push-to-remote--desc
   (interactive
    (list
     (magit-read-remote "Push to remote")
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args remote))
 (transient-define-suffix magit-push-implicitly
   (args)
   "Push somewhere without using an explicit refspec.\n\nThis command simply runs \"git push -v [ARGS]\".  ARGS are the\narguments specified in the popup buffer.  No explicit refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nIf you add this suffix to a transient prefix without explicitly\nspecifying the description, then an attempt is made to predict\nwhat this command will do.  To add it use something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"i\" magit-push-implicitly))" :description #'magit-push-implicitly--desc
   (interactive
    (list
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args))
 (transient-define-suffix magit-push-current-to-upstream
   (args)
   "Push the current branch to its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-push--upstream-description
   (interactive
    (list
     (magit-push-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(remote
	 (magit-get "branch" branch "remote"))
	(merge
	 (magit-get "branch" branch "merge")))
     (when
	 (or current-prefix-arg
	     (not
	      (or
	       (magit-get-upstream-branch branch)
	       (magit--unnamed-upstream-p remote merge)
	       (magit--valid-upstream-p remote merge))))
       (let
	   ((upstream
	     (magit-completing-read
	      (format "Set upstream of %s and push there" branch)
	      (seq-union
	       (mapcar
		(## concat % "/" branch)
		(magit-list-remotes))
	       (magit-list-remote-branch-names))
	      nil 'any nil 'magit-revision-history
	      (or
	       (magit-remote-branch-at-point)
	       (and$
		(magit-primary-remote)
		(magit-main-branch $))))))
	 (pcase-setq
	  `(,remote \, merge)
	  (or
	   (magit-get-tracked upstream)
	   (magit-split-branch-name upstream)))
	 (unless
	     (string-prefix-p "refs/" merge)
	   (setq merge
		 (concat "refs/heads/" merge)))
	 (magit-confirm 'set-and-push
	   (list "Really use \"%s\" as upstream and push \"%s\" there" upstream branch)))
       (cl-pushnew "--set-upstream" args :test #'equal))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (concat branch ":" merge))))
 (transient-define-suffix magit-push-current-to-pushremote
   (args)
   "Push the current branch to its push-remote.\n\nWhen the push-remote is not configured, then read the push-remote\nfrom the user, set it, and then push to it.  With a prefix\nargument the push-remote can be changed before pushed to it." :if #'magit-get-current-branch :description #'magit-push--pushbranch-description
   (interactive
    (list
     (magit-push-arguments)))
   (pcase-let
       ((`(,branch ,remote ,changed)
	 (magit--select-push-remote "push there")))
     (when changed
       (magit-confirm 'set-and-push
	 (list "Really use \"%s\" as push-remote and push \"%s\" there" remote branch)))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (format "refs/heads/%s:refs/heads/%s" branch branch))))
 (transient-define-infix magit-push:--push-option nil :description "Set push-options" :class 'transient-option :shortarg "-o" :argument "--push-option=" :multi-value 'repeat :choices
   (lambda nil magit-push-options))
 (transient-define-prefix magit-push nil "Push to another repository." :man-page "git-push"
   ["Arguments"
    ("-f" "Force with lease"
     (nil "--force-with-lease"))
    ("-F" "Force"
     ("-f" "--force"))
    ("-h" "Disable hooks" "--no-verify")
    ("-n" "Dry run"
     ("-n" "--dry-run"))
    ("-u" "Set upstream" "--set-upstream" :level 5)
    ("-T" "Include all tags" "--tags")
    ("-t" "Include related annotated tags" "--follow-tags")
    ("-o" magit-push:--push-option :level 5)]
   [:if magit-get-current-branch :description
	(## format
	    (propertize "Push %s to" 'face 'transient-heading)
	    (propertize
	     (magit-get-current-branch)
	     'face 'magit-branch-local))
	("p" magit-push-current-to-pushremote)
	("u" magit-push-current-to-upstream)
	("e" "elsewhere" magit-push-current)]
   ["Push"
    [("o" "another branch" magit-push-other)
     ("r" "explicit refspecs" magit-push-refspecs)
     ("m" "matching branches" magit-push-matching)]
    [("T" "a tag" magit-push-tag)
     ("t" "all tags" magit-push-tags)
     (6 "n" "a note ref" magit-push-notes-ref)]]
   ["Configure"
    ("C" "Set variables..." magit-branch-configure)])
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-subtree:--onto nil :description "Onto" :class 'transient-option :key "-o" :argument "--onto=" :reader #'magit-transient-read-revision)
 (transient-define-argument magit-subtree:--branch nil :description "Branch" :class 'transient-option :shortarg "-b" :argument "--branch=")
 (transient-define-argument magit-subtree:--annotate nil :description "Annotate" :class 'transient-option :key "-a" :argument "--annotate=")
 (transient-define-argument magit-subtree:--message nil :description "Message" :class 'transient-option :shortarg "-m" :argument "--message=")
 (transient-define-argument magit-subtree:--prefix nil :description "Prefix" :class 'transient-option :shortarg "-P" :argument "--prefix=" :reader #'magit-subtree-read-prefix)
 (transient-define-prefix magit-subtree-export nil "Export subtrees." :man-page "git-subtree"
   ["Arguments"
    (magit-subtree:--prefix)
    (magit-subtree:--annotate)
    (magit-subtree:--branch)
    (magit-subtree:--onto)
    ("-i" "Ignore joins" "--ignore-joins")
    ("-j" "Rejoin" "--rejoin")]
   ["Subtree export actions"
    ("p" "Push" magit-subtree-push)
    ("s" "Split" magit-subtree-split)])
 (transient-define-prefix magit-subtree-import nil "Import subtrees." :man-page "git-subtree"
   ["Arguments"
    (magit-subtree:--prefix)
    (magit-subtree:--message)
    ("-s" "Squash" "--squash")]
   ["Subtree import actions"
    [("a" "Add" magit-subtree-add)
     ("c" "Add commit" magit-subtree-add-commit)]
    [("m" "Merge" magit-subtree-merge)
     ("f" "Pull" magit-subtree-pull)]])
 (transient-define-prefix magit-subtree nil "Import or export subtrees." :man-page "git-subtree"
   ["Subtree actions"
    ("i" "Import" magit-subtree-import)
    ("e" "Export" magit-subtree-export)])
 (transient-define-argument magit-subtree:--onto nil :description "Onto" :class 'transient-option :key "-o" :argument "--onto=" :reader #'magit-transient-read-revision)
 (transient-define-argument magit-subtree:--branch nil :description "Branch" :class 'transient-option :shortarg "-b" :argument "--branch=")
 (transient-define-argument magit-subtree:--annotate nil :description "Annotate" :class 'transient-option :key "-a" :argument "--annotate=")
 (transient-define-argument magit-subtree:--message nil :description "Message" :class 'transient-option :shortarg "-m" :argument "--message=")
 (transient-define-argument magit-subtree:--prefix nil :description "Prefix" :class 'transient-option :shortarg "-P" :argument "--prefix=" :reader #'magit-subtree-read-prefix)
 (transient-define-prefix magit-subtree-export nil "Export subtrees." :man-page "git-subtree"
   ["Arguments"
    (magit-subtree:--prefix)
    (magit-subtree:--annotate)
    (magit-subtree:--branch)
    (magit-subtree:--onto)
    ("-i" "Ignore joins" "--ignore-joins")
    ("-j" "Rejoin" "--rejoin")]
   ["Subtree export actions"
    ("p" "Push" magit-subtree-push)
    ("s" "Split" magit-subtree-split)])
 (transient-define-prefix magit-subtree-import nil "Import subtrees." :man-page "git-subtree"
   ["Arguments"
    (magit-subtree:--prefix)
    (magit-subtree:--message)
    ("-s" "Squash" "--squash")]
   ["Subtree import actions"
    [("a" "Add" magit-subtree-add)
     ("c" "Add commit" magit-subtree-add-commit)]
    [("m" "Merge" magit-subtree-merge)
     ("f" "Pull" magit-subtree-pull)]])
 (transient-define-prefix magit-subtree nil "Import or export subtrees." :man-page "git-subtree"
   ["Subtree actions"
    ("i" "Import" magit-subtree-import)
    ("e" "Export" magit-subtree-export)])
 (transient-define-prefix cider-macroexpand-menu nil "Transient menu for CIDER's macroexpansion commands.\nThe display arguments control how the popup macroexpansion renders\nnamespaces and metadata for this invocation."
   ["Display"
    ("-n" "Namespaces (tidy/qualified/none)" "--ns=" :reader cider-macroexpand-menu--read-display-ns)
    ("-m" "Include metadata" "--meta")]
   [["Macroexpand (popup buffer)"
     ("1" "Macroexpand-1" cider-macroexpand-menu--expand-1)
     ("a" "Macroexpand all" cider-macroexpand-menu--expand-all)
     ("v" "Macroexpand-1 at point" cider-macroexpand-menu--expand-1-at-point)
     ("V" "Macroexpand all at point" cider-macroexpand-menu--expand-all-at-point)]
    ["Inline (macrostep)"
     ("e" "Expand-1 inline" cider-macrostep-expand)
     ("E" "Expand all inline" cider-macrostep-expand-all)
     ("b" "Stepping session in popup" cider-macrostep-expand-in-buffer)]])
 (transient-define-suffix cider-macroexpand-menu--expand-all
   (args)
   "Fully macroexpand into a popup buffer, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-all))
 (transient-define-suffix cider-macroexpand-menu--expand-all-at-point
   (args)
   "Fully macroexpand the call form around point, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-all-at-point))
 (transient-define-suffix cider-macroexpand-menu--expand-1-at-point
   (args)
   "Macroexpand-1 the call form around point, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-1-at-point))
 (transient-define-suffix cider-macroexpand-menu--expand-1
   (args)
   "Macroexpand-1 into a popup buffer, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-1))
 (transient-define-prefix cider-macroexpand-menu nil "Transient menu for CIDER's macroexpansion commands.\nThe display arguments control how the popup macroexpansion renders\nnamespaces and metadata for this invocation."
   ["Display"
    ("-n" "Namespaces (tidy/qualified/none)" "--ns=" :reader cider-macroexpand-menu--read-display-ns)
    ("-m" "Include metadata" "--meta")]
   [["Macroexpand (popup buffer)"
     ("1" "Macroexpand-1" cider-macroexpand-menu--expand-1)
     ("a" "Macroexpand all" cider-macroexpand-menu--expand-all)
     ("v" "Macroexpand-1 at point" cider-macroexpand-menu--expand-1-at-point)
     ("V" "Macroexpand all at point" cider-macroexpand-menu--expand-all-at-point)]
    ["Inline (macrostep)"
     ("e" "Expand-1 inline" cider-macrostep-expand)
     ("E" "Expand all inline" cider-macrostep-expand-all)
     ("b" "Stepping session in popup" cider-macrostep-expand-in-buffer)]])
 (transient-define-suffix cider-macroexpand-menu--expand-all
   (args)
   "Fully macroexpand into a popup buffer, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-all))
 (transient-define-suffix cider-macroexpand-menu--expand-all-at-point
   (args)
   "Fully macroexpand the call form around point, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-all-at-point))
 (transient-define-suffix cider-macroexpand-menu--expand-1-at-point
   (args)
   "Macroexpand-1 the call form around point, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-1-at-point))
 (transient-define-suffix cider-macroexpand-menu--expand-1
   (args)
   "Macroexpand-1 into a popup buffer, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-macroexpand-menu)))
   (cider-macroexpand-menu--apply-args args #'cider-macroexpand-1))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix magit-push-to-remote
   (remote args)
   "Push to REMOTE without using an explicit refspec.\nThe REMOTE is read in the minibuffer.\n\nThis command simply runs \"git push -v [ARGS] REMOTE\".  ARGS\nare the arguments specified in the popup buffer.  No refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nYou can add this command as a suffix using something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"x\" magit-push-to-remote))" :description #'magit-push-to-remote--desc
   (interactive
    (list
     (magit-read-remote "Push to remote")
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args remote))
 (transient-define-suffix magit-push-implicitly
   (args)
   "Push somewhere without using an explicit refspec.\n\nThis command simply runs \"git push -v [ARGS]\".  ARGS are the\narguments specified in the popup buffer.  No explicit refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nIf you add this suffix to a transient prefix without explicitly\nspecifying the description, then an attempt is made to predict\nwhat this command will do.  To add it use something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"i\" magit-push-implicitly))" :description #'magit-push-implicitly--desc
   (interactive
    (list
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args))
 (transient-define-suffix magit-push-current-to-upstream
   (args)
   "Push the current branch to its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-push--upstream-description
   (interactive
    (list
     (magit-push-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(remote
	 (magit-get "branch" branch "remote"))
	(merge
	 (magit-get "branch" branch "merge")))
     (when
	 (or current-prefix-arg
	     (not
	      (or
	       (magit-get-upstream-branch branch)
	       (magit--unnamed-upstream-p remote merge)
	       (magit--valid-upstream-p remote merge))))
       (let
	   ((upstream
	     (magit-completing-read
	      (format "Set upstream of %s and push there" branch)
	      (seq-union
	       (mapcar
		(## concat % "/" branch)
		(magit-list-remotes))
	       (magit-list-remote-branch-names))
	      nil 'any nil 'magit-revision-history
	      (or
	       (magit-remote-branch-at-point)
	       (and$
		(magit-primary-remote)
		(magit-main-branch $))))))
	 (pcase-setq
	  `(,remote \, merge)
	  (or
	   (magit-get-tracked upstream)
	   (magit-split-branch-name upstream)))
	 (unless
	     (string-prefix-p "refs/" merge)
	   (setq merge
		 (concat "refs/heads/" merge)))
	 (magit-confirm 'set-and-push
	   (list "Really use \"%s\" as upstream and push \"%s\" there" upstream branch)))
       (cl-pushnew "--set-upstream" args :test #'equal))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (concat branch ":" merge))))
 (transient-define-suffix magit-push-current-to-pushremote
   (args)
   "Push the current branch to its push-remote.\n\nWhen the push-remote is not configured, then read the push-remote\nfrom the user, set it, and then push to it.  With a prefix\nargument the push-remote can be changed before pushed to it." :if #'magit-get-current-branch :description #'magit-push--pushbranch-description
   (interactive
    (list
     (magit-push-arguments)))
   (pcase-let
       ((`(,branch ,remote ,changed)
	 (magit--select-push-remote "push there")))
     (when changed
       (magit-confirm 'set-and-push
	 (list "Really use \"%s\" as push-remote and push \"%s\" there" remote branch)))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (format "refs/heads/%s:refs/heads/%s" branch branch))))
 (transient-define-infix magit-push:--push-option nil :description "Set push-options" :class 'transient-option :shortarg "-o" :argument "--push-option=" :multi-value 'repeat :choices
   (lambda nil magit-push-options))
 (transient-define-prefix magit-push nil "Push to another repository." :man-page "git-push"
   ["Arguments"
    ("-f" "Force with lease"
     (nil "--force-with-lease"))
    ("-F" "Force"
     ("-f" "--force"))
    ("-h" "Disable hooks" "--no-verify")
    ("-n" "Dry run"
     ("-n" "--dry-run"))
    ("-u" "Set upstream" "--set-upstream" :level 5)
    ("-T" "Include all tags" "--tags")
    ("-t" "Include related annotated tags" "--follow-tags")
    ("-o" magit-push:--push-option :level 5)]
   [:if magit-get-current-branch :description
	(## format
	    (propertize "Push %s to" 'face 'transient-heading)
	    (propertize
	     (magit-get-current-branch)
	     'face 'magit-branch-local))
	("p" magit-push-current-to-pushremote)
	("u" magit-push-current-to-upstream)
	("e" "elsewhere" magit-push-current)]
   ["Push"
    [("o" "another branch" magit-push-other)
     ("r" "explicit refspecs" magit-push-refspecs)
     ("m" "matching branches" magit-push-matching)]
    [("T" "a tag" magit-push-tag)
     ("t" "all tags" magit-push-tags)
     (6 "n" "a note ref" magit-push-notes-ref)]]
   ["Configure"
    ("C" "Set variables..." magit-branch-configure)])
 (transient-define-suffix magit-push-to-remote
   (remote args)
   "Push to REMOTE without using an explicit refspec.\nThe REMOTE is read in the minibuffer.\n\nThis command simply runs \"git push -v [ARGS] REMOTE\".  ARGS\nare the arguments specified in the popup buffer.  No refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nYou can add this command as a suffix using something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"x\" magit-push-to-remote))" :description #'magit-push-to-remote--desc
   (interactive
    (list
     (magit-read-remote "Push to remote")
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args remote))
 (transient-define-suffix magit-push-implicitly
   (args)
   "Push somewhere without using an explicit refspec.\n\nThis command simply runs \"git push -v [ARGS]\".  ARGS are the\narguments specified in the popup buffer.  No explicit refspec\narguments are used.  Instead the behavior depends on at least\nthese Git variables: `push.default', `remote.pushDefault',\n`branch.<branch>.pushRemote', `branch.<branch>.remote',\n`branch.<branch>.merge', and `remote.<remote>.push'.\n\nIf you add this suffix to a transient prefix without explicitly\nspecifying the description, then an attempt is made to predict\nwhat this command will do.  To add it use something like:\n\n  (transient-insert-suffix \\='magit-push \"o\"\n    \\='(\"i\" magit-push-implicitly))" :description #'magit-push-implicitly--desc
   (interactive
    (list
     (magit-push-arguments)))
   (run-hooks 'magit-credential-hook)
   (magit-run-git-async "push" "-v" args))
 (transient-define-suffix magit-push-current-to-upstream
   (args)
   "Push the current branch to its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-push--upstream-description
   (interactive
    (list
     (magit-push-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(remote
	 (magit-get "branch" branch "remote"))
	(merge
	 (magit-get "branch" branch "merge")))
     (when
	 (or current-prefix-arg
	     (not
	      (or
	       (magit-get-upstream-branch branch)
	       (magit--unnamed-upstream-p remote merge)
	       (magit--valid-upstream-p remote merge))))
       (let
	   ((upstream
	     (magit-completing-read
	      (format "Set upstream of %s and push there" branch)
	      (seq-union
	       (mapcar
		(## concat % "/" branch)
		(magit-list-remotes))
	       (magit-list-remote-branch-names))
	      nil 'any nil 'magit-revision-history
	      (or
	       (magit-remote-branch-at-point)
	       (and$
		(magit-primary-remote)
		(magit-main-branch $))))))
	 (pcase-setq
	  `(,remote \, merge)
	  (or
	   (magit-get-tracked upstream)
	   (magit-split-branch-name upstream)))
	 (unless
	     (string-prefix-p "refs/" merge)
	   (setq merge
		 (concat "refs/heads/" merge)))
	 (magit-confirm 'set-and-push
	   (list "Really use \"%s\" as upstream and push \"%s\" there" upstream branch)))
       (cl-pushnew "--set-upstream" args :test #'equal))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (concat branch ":" merge))))
 (transient-define-suffix magit-push-current-to-pushremote
   (args)
   "Push the current branch to its push-remote.\n\nWhen the push-remote is not configured, then read the push-remote\nfrom the user, set it, and then push to it.  With a prefix\nargument the push-remote can be changed before pushed to it." :if #'magit-get-current-branch :description #'magit-push--pushbranch-description
   (interactive
    (list
     (magit-push-arguments)))
   (pcase-let
       ((`(,branch ,remote ,changed)
	 (magit--select-push-remote "push there")))
     (when changed
       (magit-confirm 'set-and-push
	 (list "Really use \"%s\" as push-remote and push \"%s\" there" remote branch)))
     (run-hooks 'magit-credential-hook)
     (magit-run-git-async "push" "-v" args remote
			  (format "refs/heads/%s:refs/heads/%s" branch branch))))
 (transient-define-infix magit-push:--push-option nil :description "Set push-options" :class 'transient-option :shortarg "-o" :argument "--push-option=" :multi-value 'repeat :choices
   (lambda nil magit-push-options))
 (transient-define-prefix magit-push nil "Push to another repository." :man-page "git-push"
   ["Arguments"
    ("-f" "Force with lease"
     (nil "--force-with-lease"))
    ("-F" "Force"
     ("-f" "--force"))
    ("-h" "Disable hooks" "--no-verify")
    ("-n" "Dry run"
     ("-n" "--dry-run"))
    ("-u" "Set upstream" "--set-upstream" :level 5)
    ("-T" "Include all tags" "--tags")
    ("-t" "Include related annotated tags" "--follow-tags")
    ("-o" magit-push:--push-option :level 5)]
   [:if magit-get-current-branch :description
	(## format
	    (propertize "Push %s to" 'face 'transient-heading)
	    (propertize
	     (magit-get-current-branch)
	     'face 'magit-branch-local))
	("p" magit-push-current-to-pushremote)
	("u" magit-push-current-to-upstream)
	("e" "elsewhere" magit-push-current)]
   ["Push"
    [("o" "another branch" magit-push-other)
     ("r" "explicit refspecs" magit-push-refspecs)
     ("m" "matching branches" magit-push-matching)]
    [("T" "a tag" magit-push-tag)
     ("t" "all tags" magit-push-tags)
     (6 "n" "a note ref" magit-push-notes-ref)]]
   ["Configure"
    ("C" "Set variables..." magit-branch-configure)])
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-infix magit-branch.autoSetupRebase nil :class 'magit--git-variable:choices :variable "branch.autoSetupRebase" :choices
   '("always" "local" "remote" "never")
   :default "never")
 (transient-define-infix magit-branch.autoSetupMerge nil :class 'magit--git-variable:choices :variable "branch.autoSetupMerge" :choices
   '("always" "true" "false")
   :default "true")
 (transient-define-infix magit-remote.pushDefault nil :class 'magit--git-variable:choices :variable "remote.pushDefault" :choices #'magit-list-remotes)
 (transient-define-infix magit-pull.rebase nil :class 'magit--git-variable:choices :variable "pull.rebase" :choices
   '("true" "merges" "interactive" "false")
   :default "false")
 (transient-define-infix magit-branch.<branch>.pushRemote nil :class 'magit--git-variable:choices :scope #'magit--read-branch-scope :variable "branch.%s.pushRemote" :fallback "remote.pushDefault" :choices #'magit-list-remotes)
 (transient-define-infix magit-branch.<branch>.rebase nil :class 'magit--git-variable:choices :scope #'magit--read-branch-scope :variable "branch.%s.rebase" :fallback "pull.rebase" :choices
   '("true" "merges" "interactive" "false")
   :default "false")
 (transient-define-infix magit-branch.<branch>.merge/remote nil :class 'magit--git-branch:upstream)
 (transient-define-suffix magit-branch.<branch>.description
   (branch)
   "Edit the description of BRANCH." :class 'magit--git-variable :transient nil :variable "branch.%s.description"
   (interactive
    (list
     (oref transient-current-prefix scope)))
   (magit-run-git-with-editor "branch" "--edit-description" branch))
 (transient-define-prefix magit-branch-configure
   (branch)
   "Configure a branch." :man-page "git-branch"
   [:description
    (## concat
	(propertize "Configure " 'face 'transient-heading)
	(propertize
	 (transient-scope)
	 'face 'magit-branch-local))
    ("d" magit-branch.<branch>.description)
    ("u" magit-branch.<branch>.merge/remote)
    ("r" magit-branch.<branch>.rebase)
    ("p" magit-branch.<branch>.pushRemote)]
   ["Configure repository defaults"
    ("R" magit-pull.rebase)
    ("P" magit-remote.pushDefault)
    ("B" "Update default branch" magit-update-default-branch :inapt-if-not magit-get-some-remote)]
   ["Configure branch creation"
    ("a m" magit-branch.autoSetupMerge)
    ("a r" magit-branch.autoSetupRebase)]
   (interactive
    (list
     (or
      (and
       (not current-prefix-arg)
       (not
	(and magit-branch-direct-configure
	     (eq transient-current-command 'magit-branch)))
       (magit-get-current-branch))
      (magit--read-branch-scope))))
   (transient-setup 'magit-branch-configure nil nil :scope branch))
 (transient-define-prefix magit-branch
   (branch)
   "Add, configure or remove a branch." :man-page "git-branch"
   [:if
    (## and magit-branch-direct-configure
	    (transient-scope))
    :description
    (## concat
	(propertize "Configure " 'face 'transient-heading)
	(propertize
	 (transient-scope)
	 'face 'magit-branch-local))
    ("d" magit-branch.<branch>.description)
    ("u" magit-branch.<branch>.merge/remote)
    ("r" magit-branch.<branch>.rebase)
    ("p" magit-branch.<branch>.pushRemote)]
   [:if-non-nil magit-branch-direct-configure :description "Configure repository defaults"
		("R" magit-pull.rebase)
		("P" magit-remote.pushDefault)
		("B" "Update default branch" magit-update-default-branch :inapt-if-not magit-get-some-remote)]
   ["Arguments"
    (6 "-m" "Automatically merge conflicting local modifications" "--merge")
    (7 "-r" "Recurse submodules when checking out an existing branch" "--recurse-submodules")]
   [["Checkout"
     ("b" "branch/revision" magit-checkout)
     ("l" "local branch" magit-branch-checkout)
     (6 "o" "new orphan" magit-branch-orphan)
     (0 "r" "remote ref" magit-checkout-remote-ref)]
    [""
     ("c" "new branch" magit-branch-and-checkout)
     ("s" "new spin-off" magit-branch-spinoff)
     (5 "w" "new worktree" magit-worktree-checkout)]
    ["Create"
     ("n" "new branch" magit-branch-create)
     ("S" "new spin-out" magit-branch-spinout)
     (5 "W" "new worktree" magit-worktree-branch)]
    ["Do"
     ("C" "configure..." magit-branch-configure)
     ("m" "rename" magit-branch-rename)
     ("x" "reset" magit-branch-reset)
     ("k" "delete" magit-branch-delete)]
    [""
     (7 "h" "shelve" magit-branch-shelve)
     (7 "H" "unshelve" magit-branch-unshelve)]]
   (interactive
    (list
     (magit-get-current-branch)))
   (transient-setup 'magit-branch nil nil :scope branch))
 (transient-define-infix magit-branch.autoSetupRebase nil :class 'magit--git-variable:choices :variable "branch.autoSetupRebase" :choices
   '("always" "local" "remote" "never")
   :default "never")
 (transient-define-infix magit-branch.autoSetupMerge nil :class 'magit--git-variable:choices :variable "branch.autoSetupMerge" :choices
   '("always" "true" "false")
   :default "true")
 (transient-define-infix magit-remote.pushDefault nil :class 'magit--git-variable:choices :variable "remote.pushDefault" :choices #'magit-list-remotes)
 (transient-define-infix magit-pull.rebase nil :class 'magit--git-variable:choices :variable "pull.rebase" :choices
   '("true" "merges" "interactive" "false")
   :default "false")
 (transient-define-infix magit-branch.<branch>.pushRemote nil :class 'magit--git-variable:choices :scope #'magit--read-branch-scope :variable "branch.%s.pushRemote" :fallback "remote.pushDefault" :choices #'magit-list-remotes)
 (transient-define-infix magit-branch.<branch>.rebase nil :class 'magit--git-variable:choices :scope #'magit--read-branch-scope :variable "branch.%s.rebase" :fallback "pull.rebase" :choices
   '("true" "merges" "interactive" "false")
   :default "false")
 (transient-define-infix magit-branch.<branch>.merge/remote nil :class 'magit--git-branch:upstream)
 (transient-define-suffix magit-branch.<branch>.description
   (branch)
   "Edit the description of BRANCH." :class 'magit--git-variable :transient nil :variable "branch.%s.description"
   (interactive
    (list
     (oref transient-current-prefix scope)))
   (magit-run-git-with-editor "branch" "--edit-description" branch))
 (transient-define-prefix magit-branch-configure
   (branch)
   "Configure a branch." :man-page "git-branch"
   [:description
    (## concat
	(propertize "Configure " 'face 'transient-heading)
	(propertize
	 (transient-scope)
	 'face 'magit-branch-local))
    ("d" magit-branch.<branch>.description)
    ("u" magit-branch.<branch>.merge/remote)
    ("r" magit-branch.<branch>.rebase)
    ("p" magit-branch.<branch>.pushRemote)]
   ["Configure repository defaults"
    ("R" magit-pull.rebase)
    ("P" magit-remote.pushDefault)
    ("B" "Update default branch" magit-update-default-branch :inapt-if-not magit-get-some-remote)]
   ["Configure branch creation"
    ("a m" magit-branch.autoSetupMerge)
    ("a r" magit-branch.autoSetupRebase)]
   (interactive
    (list
     (or
      (and
       (not current-prefix-arg)
       (not
	(and magit-branch-direct-configure
	     (eq transient-current-command 'magit-branch)))
       (magit-get-current-branch))
      (magit--read-branch-scope))))
   (transient-setup 'magit-branch-configure nil nil :scope branch))
 (transient-define-prefix magit-branch
   (branch)
   "Add, configure or remove a branch." :man-page "git-branch"
   [:if
    (## and magit-branch-direct-configure
	    (transient-scope))
    :description
    (## concat
	(propertize "Configure " 'face 'transient-heading)
	(propertize
	 (transient-scope)
	 'face 'magit-branch-local))
    ("d" magit-branch.<branch>.description)
    ("u" magit-branch.<branch>.merge/remote)
    ("r" magit-branch.<branch>.rebase)
    ("p" magit-branch.<branch>.pushRemote)]
   [:if-non-nil magit-branch-direct-configure :description "Configure repository defaults"
		("R" magit-pull.rebase)
		("P" magit-remote.pushDefault)
		("B" "Update default branch" magit-update-default-branch :inapt-if-not magit-get-some-remote)]
   ["Arguments"
    (6 "-m" "Automatically merge conflicting local modifications" "--merge")
    (7 "-r" "Recurse submodules when checking out an existing branch" "--recurse-submodules")]
   [["Checkout"
     ("b" "branch/revision" magit-checkout)
     ("l" "local branch" magit-branch-checkout)
     (6 "o" "new orphan" magit-branch-orphan)
     (0 "r" "remote ref" magit-checkout-remote-ref)]
    [""
     ("c" "new branch" magit-branch-and-checkout)
     ("s" "new spin-off" magit-branch-spinoff)
     (5 "w" "new worktree" magit-worktree-checkout)]
    ["Create"
     ("n" "new branch" magit-branch-create)
     ("S" "new spin-out" magit-branch-spinout)
     (5 "W" "new worktree" magit-worktree-branch)]
    ["Do"
     ("C" "configure..." magit-branch-configure)
     ("m" "rename" magit-branch-rename)
     ("x" "reset" magit-branch-reset)
     ("k" "delete" magit-branch-delete)]
    [""
     (7 "h" "shelve" magit-branch-shelve)
     (7 "H" "unshelve" magit-branch-unshelve)]]
   (interactive
    (list
     (magit-get-current-branch)))
   (transient-setup 'magit-branch nil nil :scope branch))
 (transient-define-prefix magit-bundle-create
   (&optional file refs args)
   "Create a bundle." :man-page "git-bundle"
   ["Arguments"
    ("-a" "Include all refs" "--all")
    ("-b" "Include branches" "--branches=" :allow-empty t)
    ("-t" "Include tags" "--tags=" :allow-empty t)
    ("-r" "Include remotes" "--remotes=" :allow-empty t)
    ("-g" "Include refs" "--glob=")
    ("-e" "Exclude refs" "--exclude=")
    (magit-log:-n)
    (magit-log:--since)
    (magit-log:--until)]
   ["Actions"
    ("c" "create regular bundle" magit-bundle-create)
    ("t" "create tracked bundle" magit-bundle-create-tracked)
    ("u" "update tracked bundle" magit-bundle-update-tracked)]
   (interactive
    (and
     (eq transient-current-command 'magit-bundle-create)
     (list
      (read-file-name "Create bundle: " nil nil nil
		      (concat
		       (file-name-nondirectory
			(directory-file-name
			 (magit-toplevel)))
		       ".bundle"))
      (magit-completing-read-multiple "Refnames (zero or more): "
				      (magit-list-refnames))
      (transient-args 'magit-bundle-create))))
   (if file
       (magit-git-bundle "create" file refs args)
     (transient-setup 'magit-bundle-create)))
 (transient-define-prefix magit-bundle nil "Create or verify Git bundles." :man-page "git-bundle"
   ["Actions"
    ("c" "create" magit-bundle-create)
    ("v" "verify" magit-bundle-verify)
    ("l" "list-heads" magit-bundle-list-heads)])
 (transient-define-prefix magit-bundle-create
   (&optional file refs args)
   "Create a bundle." :man-page "git-bundle"
   ["Arguments"
    ("-a" "Include all refs" "--all")
    ("-b" "Include branches" "--branches=" :allow-empty t)
    ("-t" "Include tags" "--tags=" :allow-empty t)
    ("-r" "Include remotes" "--remotes=" :allow-empty t)
    ("-g" "Include refs" "--glob=")
    ("-e" "Exclude refs" "--exclude=")
    (magit-log:-n)
    (magit-log:--since)
    (magit-log:--until)]
   ["Actions"
    ("c" "create regular bundle" magit-bundle-create)
    ("t" "create tracked bundle" magit-bundle-create-tracked)
    ("u" "update tracked bundle" magit-bundle-update-tracked)]
   (interactive
    (and
     (eq transient-current-command 'magit-bundle-create)
     (list
      (read-file-name "Create bundle: " nil nil nil
		      (concat
		       (file-name-nondirectory
			(directory-file-name
			 (magit-toplevel)))
		       ".bundle"))
      (magit-completing-read-multiple "Refnames (zero or more): "
				      (magit-list-refnames))
      (transient-args 'magit-bundle-create))))
   (if file
       (magit-git-bundle "create" file refs args)
     (transient-setup 'magit-bundle-create)))
 (transient-define-prefix magit-bundle nil "Create or verify Git bundles." :man-page "git-bundle"
   ["Actions"
    ("c" "create" magit-bundle-create)
    ("v" "verify" magit-bundle-verify)
    ("l" "list-heads" magit-bundle-list-heads)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-argument magit-clone:--filter nil :description "Filter some objects" :class 'transient-option :key "-f" :argument "--filter=" :reader #'magit-clone-read-filter)
 (transient-define-prefix magit-clone
   (&optional transient)
   "Clone a repository." :man-page "git-clone"
   ["Fetch arguments"
    ("-B" "Clone a single branch" "--single-branch")
    ("-n" "Do not clone tags" "--no-tags")
    ("-S" "Clones submodules" "--recurse-submodules" :level 6)
    ("-l" "Do not optimize" "--no-local" :level 7)]
   ["Setup arguments"
    ("-o" "Set name of remote"
     ("-o" "--origin="))
    ("-b" "Set HEAD branch"
     ("-b" "--branch="))
    (magit-clone:--filter :level 7)
    ("-g" "Separate git directory" "--separate-git-dir=" transient-read-directory :level 7)
    ("-t" "Use template directory" "--template=" transient-read-existing-directory :level 6)]
   ["Local sharing arguments"
    ("-s" "Share objects"
     ("-s" "--shared" :level 7))
    ("-h" "Do not use hardlinks" "--no-hardlinks")]
   ["Clone"
    ("C" "regular" magit-clone-regular)
    ("s" "shallow" magit-clone-shallow)
    ("d" "shallow since date" magit-clone-shallow-since :level 7)
    ("e" "shallow excluding" magit-clone-shallow-exclude :level 7)
    (">" "sparse checkout" magit-clone-sparse :level 6)
    ("b" "bare" magit-clone-bare)
    ("m" "mirror" magit-clone-mirror)]
   (interactive
    (list
     (or magit-clone-always-transient current-prefix-arg)))
   (if transient
       (transient-setup 'magit-clone)
     (call-interactively #'magit-clone-regular)))
 (transient-define-argument magit-clone:--filter nil :description "Filter some objects" :class 'transient-option :key "-f" :argument "--filter=" :reader #'magit-clone-read-filter)
 (transient-define-prefix magit-clone
   (&optional transient)
   "Clone a repository." :man-page "git-clone"
   ["Fetch arguments"
    ("-B" "Clone a single branch" "--single-branch")
    ("-n" "Do not clone tags" "--no-tags")
    ("-S" "Clones submodules" "--recurse-submodules" :level 6)
    ("-l" "Do not optimize" "--no-local" :level 7)]
   ["Setup arguments"
    ("-o" "Set name of remote"
     ("-o" "--origin="))
    ("-b" "Set HEAD branch"
     ("-b" "--branch="))
    (magit-clone:--filter :level 7)
    ("-g" "Separate git directory" "--separate-git-dir=" transient-read-directory :level 7)
    ("-t" "Use template directory" "--template=" transient-read-existing-directory :level 6)]
   ["Local sharing arguments"
    ("-s" "Share objects"
     ("-s" "--shared" :level 7))
    ("-h" "Do not use hardlinks" "--no-hardlinks")]
   ["Clone"
    ("C" "regular" magit-clone-regular)
    ("s" "shallow" magit-clone-shallow)
    ("d" "shallow since date" magit-clone-shallow-since :level 7)
    ("e" "shallow excluding" magit-clone-shallow-exclude :level 7)
    (">" "sparse checkout" magit-clone-sparse :level 6)
    ("b" "bare" magit-clone-bare)
    ("m" "mirror" magit-clone-mirror)]
   (interactive
    (list
     (or magit-clone-always-transient current-prefix-arg)))
   (if transient
       (transient-setup 'magit-clone)
     (call-interactively #'magit-clone-regular)))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
   ["Modifiers"
    ("-i" "invalidate cache" "--invalidate-cache")
    ("-r" "regexp search" "--regexp")
    ("-c" "case-sensitive search" "--case-sensitive")
    ("-w" "whole-word search" "--word")
    ("-n" "new process" "--new-process")
    ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
     ("window" "frame"))]
   [["Find"
     ("f" "file" projectile-dispatch-find-file)
     ("g" "file dwim" projectile-dispatch-find-file-dwim)
     ("a" "other file" projectile-dispatch-find-other-file)
     ("l" "file in dir" projectile-find-file-in-directory)
     ("C" "changed file" projectile-find-changed-file)
     ("F" "file in known projects" projectile-find-file-in-known-projects)
     ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
     ("d" "dir" projectile-dispatch-find-dir)
     ("D" "dired" projectile-dispatch-dired)
     ("e" "recentf" projectile-recentf)
     ("E" "edit .dir-locals" projectile-edit-dir-locals)
     ("T" "test file" projectile-dispatch-find-test-file)
     ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
     ("j" "file of kind" projectile-dispatch-find-file-of-kind)
     ("J" "toggle related" projectile-toggle-related-file)]
    ["Buffers"
     ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
     ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
     ("C-o" "display buffer" projectile-display-buffer)
     ("I" "ibuffer" projectile-ibuffer)
     ("k" "kill buffers" projectile-kill-buffers)
     ("S" "save buffers" projectile-save-project-buffers)]
    ["Bookmarks"
     ("Bs" "set bookmark" projectile-bookmark-set)
     ("Bj" "jump to bookmark" projectile-bookmark-jump)
     ("Bd" "delete bookmark" projectile-bookmark-delete)]
    ["Search / Replace"
     ("ss" "search" projectile-dispatch-search)
     ("sg" "grep" projectile-grep)
     ("sr" "ripgrep" projectile-dispatch-ripgrep)
     ("sa" "ag" projectile-dispatch-ag)
     ("sx" "references" projectile-find-references)
     ("sR" "search (review)" projectile-dispatch-search-review)
     ("ns" "search siblings" projectile-dispatch-search-siblings)
     ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
     ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
     ("st" "todos" projectile-todos)
     ("o" "multi-occur" projectile-multi-occur)
     ("r" "replace" projectile-replace)
     ("R" "replace (review)" projectile-dispatch-replace-review)
     ("u" "undo last replace" projectile-replace-undo)]]
   [["Project"
     ("p" "switch project" projectile-dispatch-switch-project)
     ("q" "switch open project" projectile-switch-open-project)
     ("W" "switch worktree" projectile-switch-worktree)
     ("np" "switch sibling project" projectile-switch-sibling-project)
     ("A" "add known project" projectile-add-known-project)
     ("v" "vc" projectile-vc)
     ("P" "dashboard" projectile-dashboard)
     ("H" "doctor" projectile-doctor)]
    ["Lifecycle"
     ("cc" "compile" projectile-compile-project)
     ("ct" "test" projectile-test-project)
     ("c." "test at point" projectile-run-test-at-point)
     ("cr" "run" projectile-run-project)
     ("co" "configure" projectile-configure-project)
     ("ci" "install" projectile-install-project)
     ("cp" "package" projectile-package-project)
     ("cx" "run task" projectile-run-task)
     ("cX" "repeat last task" projectile-repeat-last-task)]
    ["Subproject"
     ("cmf" "find file" projectile-find-file-in-subproject)
     ("cmc" "compile" projectile-compile-subproject)
     ("cmt" "test" projectile-test-subproject)
     ("cmr" "run" projectile-run-subproject)
     ("cmo" "configure" projectile-configure-subproject)
     ("cmi" "install" projectile-install-subproject)
     ("cmp" "package" projectile-package-subproject)]
    ["Shells / Run"
     ("xr" "run" projectile-dispatch-run)
     ("xe" "eshell" projectile-dispatch-run-eshell)
     ("xs" "shell" projectile-dispatch-run-shell)
     ("xt" "term" projectile-dispatch-run-term)
     ("xi" "ielm" projectile-dispatch-run-ielm)
     ("xg" "gdb" projectile-run-gdb)
     ("xv" "vterm" projectile-dispatch-run-vterm)
     ("xx" "eat" projectile-dispatch-run-eat)
     ("xG" "ghostel" projectile-dispatch-run-ghostel)
     ("!" "shell command" projectile-run-shell-command-in-root)
     ("&" "async shell command" projectile-run-async-shell-command-in-root)]
    ["Session"
     ("ws" "save session" projectile-session-save)
     ("wS" "save all sessions" projectile-session-save-all)
     ("wr" "restore session" projectile-session-restore)
     ("wR" "restore all sessions" projectile-session-restore-all)
     ("wf" "forget session" projectile-session-forget)
     ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
    ["Cache"
     ("i" "invalidate cache" projectile-invalidate-cache)
     ("z" "cache current file" projectile-cache-current-file)]])
 #'(lambda nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
     (transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
       ["Modifiers"
	("-i" "invalidate cache" "--invalidate-cache")
	("-r" "regexp search" "--regexp")
	("-c" "case-sensitive search" "--case-sensitive")
	("-w" "whole-word search" "--word")
	("-n" "new process" "--new-process")
	("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	 ("window" "frame"))]
       [["Find"
	 ("f" "file" projectile-dispatch-find-file)
	 ("g" "file dwim" projectile-dispatch-find-file-dwim)
	 ("a" "other file" projectile-dispatch-find-other-file)
	 ("l" "file in dir" projectile-find-file-in-directory)
	 ("C" "changed file" projectile-find-changed-file)
	 ("F" "file in known projects" projectile-find-file-in-known-projects)
	 ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	 ("d" "dir" projectile-dispatch-find-dir)
	 ("D" "dired" projectile-dispatch-dired)
	 ("e" "recentf" projectile-recentf)
	 ("E" "edit .dir-locals" projectile-edit-dir-locals)
	 ("T" "test file" projectile-dispatch-find-test-file)
	 ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	 ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	 ("J" "toggle related" projectile-toggle-related-file)]
	["Buffers"
	 ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	 ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	 ("C-o" "display buffer" projectile-display-buffer)
	 ("I" "ibuffer" projectile-ibuffer)
	 ("k" "kill buffers" projectile-kill-buffers)
	 ("S" "save buffers" projectile-save-project-buffers)]
	["Bookmarks"
	 ("Bs" "set bookmark" projectile-bookmark-set)
	 ("Bj" "jump to bookmark" projectile-bookmark-jump)
	 ("Bd" "delete bookmark" projectile-bookmark-delete)]
	["Search / Replace"
	 ("ss" "search" projectile-dispatch-search)
	 ("sg" "grep" projectile-grep)
	 ("sr" "ripgrep" projectile-dispatch-ripgrep)
	 ("sa" "ag" projectile-dispatch-ag)
	 ("sx" "references" projectile-find-references)
	 ("sR" "search (review)" projectile-dispatch-search-review)
	 ("ns" "search siblings" projectile-dispatch-search-siblings)
	 ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	 ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	 ("st" "todos" projectile-todos)
	 ("o" "multi-occur" projectile-multi-occur)
	 ("r" "replace" projectile-replace)
	 ("R" "replace (review)" projectile-dispatch-replace-review)
	 ("u" "undo last replace" projectile-replace-undo)]]
       [["Project"
	 ("p" "switch project" projectile-dispatch-switch-project)
	 ("q" "switch open project" projectile-switch-open-project)
	 ("W" "switch worktree" projectile-switch-worktree)
	 ("np" "switch sibling project" projectile-switch-sibling-project)
	 ("A" "add known project" projectile-add-known-project)
	 ("v" "vc" projectile-vc)
	 ("P" "dashboard" projectile-dashboard)
	 ("H" "doctor" projectile-doctor)]
	["Lifecycle"
	 ("cc" "compile" projectile-compile-project)
	 ("ct" "test" projectile-test-project)
	 ("c." "test at point" projectile-run-test-at-point)
	 ("cr" "run" projectile-run-project)
	 ("co" "configure" projectile-configure-project)
	 ("ci" "install" projectile-install-project)
	 ("cp" "package" projectile-package-project)
	 ("cx" "run task" projectile-run-task)
	 ("cX" "repeat last task" projectile-repeat-last-task)]
	["Subproject"
	 ("cmf" "find file" projectile-find-file-in-subproject)
	 ("cmc" "compile" projectile-compile-subproject)
	 ("cmt" "test" projectile-test-subproject)
	 ("cmr" "run" projectile-run-subproject)
	 ("cmo" "configure" projectile-configure-subproject)
	 ("cmi" "install" projectile-install-subproject)
	 ("cmp" "package" projectile-package-subproject)]
	["Shells / Run"
	 ("xr" "run" projectile-dispatch-run)
	 ("xe" "eshell" projectile-dispatch-run-eshell)
	 ("xs" "shell" projectile-dispatch-run-shell)
	 ("xt" "term" projectile-dispatch-run-term)
	 ("xi" "ielm" projectile-dispatch-run-ielm)
	 ("xg" "gdb" projectile-run-gdb)
	 ("xv" "vterm" projectile-dispatch-run-vterm)
	 ("xx" "eat" projectile-dispatch-run-eat)
	 ("xG" "ghostel" projectile-dispatch-run-ghostel)
	 ("!" "shell command" projectile-run-shell-command-in-root)
	 ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	["Session"
	 ("ws" "save session" projectile-session-save)
	 ("wS" "save all sessions" projectile-session-save-all)
	 ("wr" "restore session" projectile-session-restore)
	 ("wR" "restore all sessions" projectile-session-restore-all)
	 ("wf" "forget session" projectile-session-forget)
	 ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	["Cache"
	 ("i" "invalidate cache" projectile-invalidate-cache)
	 ("z" "cache current file" projectile-cache-current-file)]]))
 (defun projectile--dispatch-define nil "Define the `projectile-dispatch' transient prefix, replacing the stub."
	(transient-define-prefix projectile-dispatch nil "Dispatch menu for Projectile commands.\n\nThe switches in the Modifiers group tweak how the commands below run:\n`--invalidate-cache' rebuilds the file cache first (file/dir commands),\n`--regexp' searches for a regexp (the ag/ripgrep search and the\nreviewable search/replace), `--case-sensitive' seeds the reviewable\nsearch/replace case-sensitive, `--word' makes it match whole words,\n`--new-process' starts a fresh process\n(shells), and `--display' opens the result in another window or frame\n(file/buffer/project commands)."
	  ["Modifiers"
	   ("-i" "invalidate cache" "--invalidate-cache")
	   ("-r" "regexp search" "--regexp")
	   ("-c" "case-sensitive search" "--case-sensitive")
	   ("-w" "whole-word search" "--word")
	   ("-n" "new process" "--new-process")
	   ("-d" "display in" "--display=" :class transient-switches :argument-format "--display=%s" :argument-regexp "\\(--display=\\(window\\|frame\\)\\)" :choices
	    ("window" "frame"))]
	  [["Find"
	    ("f" "file" projectile-dispatch-find-file)
	    ("g" "file dwim" projectile-dispatch-find-file-dwim)
	    ("a" "other file" projectile-dispatch-find-other-file)
	    ("l" "file in dir" projectile-find-file-in-directory)
	    ("C" "changed file" projectile-find-changed-file)
	    ("F" "file in known projects" projectile-find-file-in-known-projects)
	    ("nf" "file in sibling projects" projectile-find-file-in-sibling-projects)
	    ("d" "dir" projectile-dispatch-find-dir)
	    ("D" "dired" projectile-dispatch-dired)
	    ("e" "recentf" projectile-recentf)
	    ("E" "edit .dir-locals" projectile-edit-dir-locals)
	    ("T" "test file" projectile-dispatch-find-test-file)
	    ("t" "toggle impl/test" projectile-dispatch-impl-or-test)
	    ("j" "file of kind" projectile-dispatch-find-file-of-kind)
	    ("J" "toggle related" projectile-toggle-related-file)]
	   ["Buffers"
	    ("b" "switch buffer" projectile-dispatch-switch-to-buffer)
	    ("nb" "buffer in siblings" projectile-switch-to-buffer-in-sibling-projects)
	    ("C-o" "display buffer" projectile-display-buffer)
	    ("I" "ibuffer" projectile-ibuffer)
	    ("k" "kill buffers" projectile-kill-buffers)
	    ("S" "save buffers" projectile-save-project-buffers)]
	   ["Bookmarks"
	    ("Bs" "set bookmark" projectile-bookmark-set)
	    ("Bj" "jump to bookmark" projectile-bookmark-jump)
	    ("Bd" "delete bookmark" projectile-bookmark-delete)]
	   ["Search / Replace"
	    ("ss" "search" projectile-dispatch-search)
	    ("sg" "grep" projectile-grep)
	    ("sr" "ripgrep" projectile-dispatch-ripgrep)
	    ("sa" "ag" projectile-dispatch-ag)
	    ("sx" "references" projectile-find-references)
	    ("sR" "search (review)" projectile-dispatch-search-review)
	    ("ns" "search siblings" projectile-dispatch-search-siblings)
	    ("no" "multi-occur siblings" projectile-multi-occur-in-sibling-projects)
	    ("nt" "todos in siblings" projectile-todos-in-sibling-projects)
	    ("st" "todos" projectile-todos)
	    ("o" "multi-occur" projectile-multi-occur)
	    ("r" "replace" projectile-replace)
	    ("R" "replace (review)" projectile-dispatch-replace-review)
	    ("u" "undo last replace" projectile-replace-undo)]]
	  [["Project"
	    ("p" "switch project" projectile-dispatch-switch-project)
	    ("q" "switch open project" projectile-switch-open-project)
	    ("W" "switch worktree" projectile-switch-worktree)
	    ("np" "switch sibling project" projectile-switch-sibling-project)
	    ("A" "add known project" projectile-add-known-project)
	    ("v" "vc" projectile-vc)
	    ("P" "dashboard" projectile-dashboard)
	    ("H" "doctor" projectile-doctor)]
	   ["Lifecycle"
	    ("cc" "compile" projectile-compile-project)
	    ("ct" "test" projectile-test-project)
	    ("c." "test at point" projectile-run-test-at-point)
	    ("cr" "run" projectile-run-project)
	    ("co" "configure" projectile-configure-project)
	    ("ci" "install" projectile-install-project)
	    ("cp" "package" projectile-package-project)
	    ("cx" "run task" projectile-run-task)
	    ("cX" "repeat last task" projectile-repeat-last-task)]
	   ["Subproject"
	    ("cmf" "find file" projectile-find-file-in-subproject)
	    ("cmc" "compile" projectile-compile-subproject)
	    ("cmt" "test" projectile-test-subproject)
	    ("cmr" "run" projectile-run-subproject)
	    ("cmo" "configure" projectile-configure-subproject)
	    ("cmi" "install" projectile-install-subproject)
	    ("cmp" "package" projectile-package-subproject)]
	   ["Shells / Run"
	    ("xr" "run" projectile-dispatch-run)
	    ("xe" "eshell" projectile-dispatch-run-eshell)
	    ("xs" "shell" projectile-dispatch-run-shell)
	    ("xt" "term" projectile-dispatch-run-term)
	    ("xi" "ielm" projectile-dispatch-run-ielm)
	    ("xg" "gdb" projectile-run-gdb)
	    ("xv" "vterm" projectile-dispatch-run-vterm)
	    ("xx" "eat" projectile-dispatch-run-eat)
	    ("xG" "ghostel" projectile-dispatch-run-ghostel)
	    ("!" "shell command" projectile-run-shell-command-in-root)
	    ("&" "async shell command" projectile-run-async-shell-command-in-root)]
	   ["Session"
	    ("ws" "save session" projectile-session-save)
	    ("wS" "save all sessions" projectile-session-save-all)
	    ("wr" "restore session" projectile-session-restore)
	    ("wR" "restore all sessions" projectile-session-restore-all)
	    ("wf" "forget session" projectile-session-forget)
	    ("wb" "switch project buffer" projectile-session-switch-to-buffer)]
	   ["Cache"
	    ("i" "invalidate cache" projectile-invalidate-cache)
	    ("z" "cache current file" projectile-cache-current-file)]]))
 (transient-define-prefix magit-submodule nil "Act on a submodule." :man-page "git-submodule"
   ["Arguments"
    ("-f" "Force"
     ("-f" "--force"))
    ("-r" "Recursive" "--recursive")
    ("-N" "Do not fetch"
     ("-N" "--no-fetch"))
    ("-C" "Checkout tip" "--checkout")
    ("-R" "Rebase onto tip" "--rebase")
    ("-M" "Merge tip" "--merge")
    ("-U" "Use upstream tip" "--remote")]
   ["One module actions"
    ("a" magit-submodule-add)
    ("r" magit-submodule-register)
    ("p" magit-submodule-populate)
    ("u" magit-submodule-update)
    ("s" magit-submodule-synchronize)
    ("d" magit-submodule-unpopulate)
    ("k" "Remove" magit-submodule-remove)]
   ["Populated modules actions"
    ("l" "List modules" magit-list-submodules)
    ("f" "Fetch modules" magit-fetch-modules)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix magit-submodule-unpopulate
   (modules args)
   "Remove working directories of MODULES.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Unpopulate     git submodule deinit [--force]"
   (interactive
    (list
     (magit-module-confirm "Unpopulate")
     (magit-submodule-arguments "--force")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "deinit" args "--" modules)))
 (transient-define-suffix magit-submodule-synchronize
   (modules args)
   "Synchronize url configuration of MODULES.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Synchronize    git submodule sync [--recursive]"
   (interactive
    (list
     (magit-module-confirm "Synchronize" 'magit-module-worktree-p)
     (magit-submodule-arguments "--recursive")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "sync" args "--" modules)))
 (transient-define-suffix magit-submodule-update
   (modules args)
   "Update MODULES by checking out the recorded commits.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Update         git submodule update [--force] [--no-fetch]\n                     [--remote] [--recursive] [--checkout|--rebase|--merge]"
   (interactive
    (list
     (magit-module-confirm "Update" 'magit-module-worktree-p)
     (magit-submodule-arguments "--force" "--remote" "--recursive" "--checkout" "--rebase" "--merge" "--no-fetch")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "update" args "--" modules)))
 (transient-define-suffix magit-submodule-populate
   (modules args)
   "Create MODULES working directories, checking out the recorded commits.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Populate       git submodule update --init [--recursive]"
   (interactive
    (list
     (magit-module-confirm "Populate" 'magit-module-no-worktree-p)
     (magit-submodule-arguments "--recursive")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "update" "--init" args "--" modules)))
 (transient-define-suffix magit-submodule-register
   (modules)
   "Register MODULES.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :description "Register       git submodule init"
   (interactive
    (list
     (magit-module-confirm "Register" 'magit-module-no-worktree-p)))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "init" "--" modules)))
 (transient-define-suffix magit-submodule-add
   (url &optional path name args)
   "Add the repository at URL as a module.\n\nOptional PATH is the path to the module relative to the root of\nthe superproject.  If it is nil, then the path is determined\nbased on the URL.  Optional NAME is the name of the module.  If\nit is nil, then PATH also becomes the name." :class 'magit--git-submodule-suffix :description "Add            git submodule add [--force]"
   (interactive
    (magit-with-toplevel
      (let*
	  ((url
	    (magit-read-string-ns "Add submodule (remote url)"))
	   (path
	    (magit-submodule-read-path "Add submodules at path: " url)))
	(list url
	      (directory-file-name path)
	      (magit-submodule-read-name-for-path path)
	      (magit-submodule-arguments "--force")))))
   (magit-submodule-add-1 url path name args))
 (transient-define-prefix magit-submodule nil "Act on a submodule." :man-page "git-submodule"
   ["Arguments"
    ("-f" "Force"
     ("-f" "--force"))
    ("-r" "Recursive" "--recursive")
    ("-N" "Do not fetch"
     ("-N" "--no-fetch"))
    ("-C" "Checkout tip" "--checkout")
    ("-R" "Rebase onto tip" "--rebase")
    ("-M" "Merge tip" "--merge")
    ("-U" "Use upstream tip" "--remote")]
   ["One module actions"
    ("a" magit-submodule-add)
    ("r" magit-submodule-register)
    ("p" magit-submodule-populate)
    ("u" magit-submodule-update)
    ("s" magit-submodule-synchronize)
    ("d" magit-submodule-unpopulate)
    ("k" "Remove" magit-submodule-remove)]
   ["Populated modules actions"
    ("l" "List modules" magit-list-submodules)
    ("f" "Fetch modules" magit-fetch-modules)])
 (transient-define-suffix magit-submodule-unpopulate
   (modules args)
   "Remove working directories of MODULES.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Unpopulate     git submodule deinit [--force]"
   (interactive
    (list
     (magit-module-confirm "Unpopulate")
     (magit-submodule-arguments "--force")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "deinit" args "--" modules)))
 (transient-define-suffix magit-submodule-synchronize
   (modules args)
   "Synchronize url configuration of MODULES.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Synchronize    git submodule sync [--recursive]"
   (interactive
    (list
     (magit-module-confirm "Synchronize" 'magit-module-worktree-p)
     (magit-submodule-arguments "--recursive")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "sync" args "--" modules)))
 (transient-define-suffix magit-submodule-update
   (modules args)
   "Update MODULES by checking out the recorded commits.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Update         git submodule update [--force] [--no-fetch]\n                     [--remote] [--recursive] [--checkout|--rebase|--merge]"
   (interactive
    (list
     (magit-module-confirm "Update" 'magit-module-worktree-p)
     (magit-submodule-arguments "--force" "--remote" "--recursive" "--checkout" "--rebase" "--merge" "--no-fetch")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "update" args "--" modules)))
 (transient-define-suffix magit-submodule-populate
   (modules args)
   "Create MODULES working directories, checking out the recorded commits.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :class 'magit--git-submodule-suffix :description "Populate       git submodule update --init [--recursive]"
   (interactive
    (list
     (magit-module-confirm "Populate" 'magit-module-no-worktree-p)
     (magit-submodule-arguments "--recursive")))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "update" "--init" args "--" modules)))
 (transient-define-suffix magit-submodule-register
   (modules)
   "Register MODULES.\n\nWith a prefix argument act on all suitable modules.  Otherwise,\nif the region selects modules, then act on those.  Otherwise, if\nthere is a module at point, then act on that.  Otherwise read a\nsingle module from the user." :description "Register       git submodule init"
   (interactive
    (list
     (magit-module-confirm "Register" 'magit-module-no-worktree-p)))
   (magit-with-toplevel
     (magit-run-git-async "submodule" "init" "--" modules)))
 (transient-define-suffix magit-submodule-add
   (url &optional path name args)
   "Add the repository at URL as a module.\n\nOptional PATH is the path to the module relative to the root of\nthe superproject.  If it is nil, then the path is determined\nbased on the URL.  Optional NAME is the name of the module.  If\nit is nil, then PATH also becomes the name." :class 'magit--git-submodule-suffix :description "Add            git submodule add [--force]"
   (interactive
    (magit-with-toplevel
      (let*
	  ((url
	    (magit-read-string-ns "Add submodule (remote url)"))
	   (path
	    (magit-submodule-read-path "Add submodules at path: " url)))
	(list url
	      (directory-file-name path)
	      (magit-submodule-read-name-for-path path)
	      (magit-submodule-arguments "--force")))))
   (magit-submodule-add-1 url path name args))
 (transient-define-prefix magit-submodule nil "Act on a submodule." :man-page "git-submodule"
   ["Arguments"
    ("-f" "Force"
     ("-f" "--force"))
    ("-r" "Recursive" "--recursive")
    ("-N" "Do not fetch"
     ("-N" "--no-fetch"))
    ("-C" "Checkout tip" "--checkout")
    ("-R" "Rebase onto tip" "--rebase")
    ("-M" "Merge tip" "--merge")
    ("-U" "Use upstream tip" "--remote")]
   ["One module actions"
    ("a" magit-submodule-add)
    ("r" magit-submodule-register)
    ("p" magit-submodule-populate)
    ("u" magit-submodule-update)
    ("s" magit-submodule-synchronize)
    ("d" magit-submodule-unpopulate)
    ("k" "Remove" magit-submodule-remove)]
   ["Populated modules actions"
    ("l" "List modules" magit-list-submodules)
    ("f" "Fetch modules" magit-fetch-modules)])
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-suffix magit-rebase-onto-upstream
   (args)
   "Rebase the current branch onto its upstream branch.\n\nWith a prefix argument or when the upstream is either not\nconfigured or unusable, then let the user first configure\nthe upstream." :if #'magit-get-current-branch :description #'magit-rebase--upstream-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (let*
       ((branch
	 (or
	  (magit-get-current-branch)
	  (user-error "No branch is checked out")))
	(upstream
	 (magit-get-upstream-branch branch)))
     (when
	 (or current-prefix-arg
	     (not upstream))
       (setq upstream
	     (magit-read-upstream-branch branch
					 (format "Set upstream of %s and rebase onto that" branch)))
       (magit-set-upstream-branch branch upstream))
     (magit-git-rebase upstream args)))
 (transient-define-suffix magit-rebase-onto-pushremote
   (args)
   "Rebase the current branch onto its push-remote branch.\n\nWith a prefix argument or when the push-remote is either not\nconfigured or unusable, then let the user first configure the\npush-remote." :if #'magit-get-current-branch :description #'magit-pull--pushbranch-description
   (interactive
    (list
     (magit-rebase-arguments)))
   (pcase-let
       ((`(,branch ,remote)
	 (magit--select-push-remote "rebase onto that")))
     (magit-git-rebase
      (concat remote "/" branch)
      args)))
 (transient-define-argument magit-rebase:--exec nil :description "Run command after commits" :class 'transient-option :shortarg "-x" :argument "--exec=" :reader #'read-shell-command)
 (transient-define-prefix magit-rebase nil "Transplant commits and/or modify existing commits." :man-page "git-rebase" :value
   '("--autostash")
   ["Arguments" :if-not magit-rebase-in-progress-p
    ("-k" "Keep empty commits" "--keep-empty")
    ("-p" "Preserve merges"
     ("-p" "--preserve-merges")
     :if
     (## magit-git-version< "2.33.0"))
    ("-r" "Rebase merges"
     ("-r" "--rebase-merges=")
     magit-rebase-merges-select-mode)
    ("-u" "Update branches" "--update-refs" :if
     (## magit-git-version>= "2.38.0"))
    (7 magit-merge:--strategy)
    (7 magit-merge:--strategy-option)
    (7 "=X" magit-diff:--diff-algorithm :argument "-Xdiff-algorithm=")
    (7 "-f" "Force rebase"
       ("-f" "--force-rebase"))
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    ("-a" "Autosquash" "--autosquash")
    ("-A" "Autostash" "--autostash")
    ("-i" "Interactive"
     ("-i" "--interactive"))
    ("-h" "Disable hooks" "--no-verify")
    (7 magit-rebase:--exec)
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-rebase-in-progress-p :description
	    (## format
		(propertize "Rebase %s onto" 'face 'transient-heading)
		(propertize
		 (or
		  (magit-get-current-branch)
		  "HEAD")
		 'face 'magit-branch-local))
	    ("p" magit-rebase-onto-pushremote)
	    ("u" magit-rebase-onto-upstream)
	    ("e" "elsewhere" magit-rebase-branch)]
   ["Rebase" :if-not magit-rebase-in-progress-p
    [("i" "interactively" magit-rebase-interactive)
     ("s" "a subset" magit-rebase-subset)]
    [("m" "to modify a commit" magit-rebase-edit-commit)
     ("w" "to reword a commit" magit-rebase-reword-commit)
     ("k" "to remove a commit" magit-rebase-remove-commit)]
    [("f" "to autosquash" magit-rebase-autosquash)
     (6 "t" "to change dates" magit-reshelve-since)]]
   ["Actions" :if magit-rebase-in-progress-p
    ("r" "Continue" magit-rebase-continue)
    ("s" "Skip" magit-rebase-skip)
    ("e" "Edit" magit-rebase-edit)
    ("a" "Abort" magit-rebase-abort)])
 (transient-define-argument magit-apply:-p nil :description "Remove leading slashes from paths" :class 'transient-option :argument "-p" :allow-empty t :reader #'transient-read-number-N+)
 (transient-define-prefix magit-am nil "Apply patches received by email." :man-page "git-am" :value
   '("--3way")
   ["Arguments" :if-not magit-am-in-progress-p
    ("-3" "Fall back on 3way merge"
     ("-3" "--3way"))
    ("-R" "Reject only failed hunks" "--reject")
    (magit-apply:-p)
    ("-c" "Remove text before scissors line"
     ("-c" "--scissors"))
    ("-k" "Inhibit removal of email cruft"
     ("-k" "--keep"))
    ("-b" "Limit removal of email cruft" "--keep-non-patch")
    ("-d" "Use author date as committer date" "--committer-date-is-author-date")
    ("-t" "Use current time as author date" "--ignore-date")
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Apply" :if-not magit-am-in-progress-p
    ("m" "maildir" magit-am-apply-maildir)
    ("w" "patches" magit-am-apply-patches)
    ("a" "plain patch" magit-patch-apply)]
   ["Actions" :if magit-am-in-progress-p
    ("w" "Continue" magit-am-continue)
    ("s" "Skip" magit-am-skip)
    ("a" "Abort" magit-am-abort)])
 (transient-define-prefix magit-revert nil "Revert existing commits, with or without creating new commits." :man-page "git-revert" :value
   '("--edit")
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("-e" "Edit commit message"
     ("-e" "--edit"))
    ("-E" "Don't edit commit message" "--no-edit")
    ("=s" magit-merge:--strategy)
    (magit:--gpg-sign)
    (magit:--signoff)]
   ["Actions" :if-not magit-sequencer-in-progress-p
    ("V" "Revert commit(s)" magit-revert-and-commit)
    ("v" "Revert changes" magit-revert-no-commit)]
   ["Actions" :if magit-sequencer-in-progress-p
    ("V" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-argument magit-cherry-pick:--mainline nil :description "Replay merge relative to parent" :class 'transient-option :shortarg "-m" :argument "--mainline=" :reader #'transient-read-number-N+)
 (transient-define-prefix magit-cherry-pick nil "Apply or transplant commits." :man-page "git-cherry-pick" :value
   '("--ff")
   :incompatible
   '(("--ff" "-x"))
   ["Arguments" :if-not magit-sequencer-in-progress-p
    (magit-cherry-pick:--mainline)
    ("=s" magit-merge:--strategy)
    ("-F" "Attempt fast-forward" "--ff")
    ("-x" "Reference cherry in commit message" "-x")
    ("-e" "Edit commit messages"
     ("-e" "--edit"))
    (magit:--gpg-sign)
    (magit:--signoff)]
   [:if-not magit-sequencer-in-progress-p
	    ["Apply here"
	     ("A" "Pick" magit-cherry-copy)
	     ("a" "Apply" magit-cherry-apply)
	     ("h" "Harvest" magit-cherry-harvest)
	     ("m" "Squash" magit-merge-squash)]
	    ["Apply elsewhere"
	     ("d" "Donate" magit-cherry-donate)
	     ("n" "Spinout" magit-cherry-spinout)
	     ("s" "Spinoff" magit-cherry-spinoff)]]
   ["Actions" :if magit-sequencer-in-progress-p
    ("A" "Continue" magit-sequencer-continue)
    ("s" "Skip" magit-sequencer-skip)
    ("a" "Abort" magit-sequencer-abort)])
 (transient-define-prefix magit-bundle-create
   (&optional file refs args)
   "Create a bundle." :man-page "git-bundle"
   ["Arguments"
    ("-a" "Include all refs" "--all")
    ("-b" "Include branches" "--branches=" :allow-empty t)
    ("-t" "Include tags" "--tags=" :allow-empty t)
    ("-r" "Include remotes" "--remotes=" :allow-empty t)
    ("-g" "Include refs" "--glob=")
    ("-e" "Exclude refs" "--exclude=")
    (magit-log:-n)
    (magit-log:--since)
    (magit-log:--until)]
   ["Actions"
    ("c" "create regular bundle" magit-bundle-create)
    ("t" "create tracked bundle" magit-bundle-create-tracked)
    ("u" "update tracked bundle" magit-bundle-update-tracked)]
   (interactive
    (and
     (eq transient-current-command 'magit-bundle-create)
     (list
      (read-file-name "Create bundle: " nil nil nil
		      (concat
		       (file-name-nondirectory
			(directory-file-name
			 (magit-toplevel)))
		       ".bundle"))
      (magit-completing-read-multiple "Refnames (zero or more): "
				      (magit-list-refnames))
      (transient-args 'magit-bundle-create))))
   (if file
       (magit-git-bundle "create" file refs args)
     (transient-setup 'magit-bundle-create)))
 (transient-define-prefix magit-bundle nil "Create or verify Git bundles." :man-page "git-bundle"
   ["Actions"
    ("c" "create" magit-bundle-create)
    ("v" "verify" magit-bundle-verify)
    ("l" "list-heads" magit-bundle-list-heads)])
 (transient-define-prefix magit-bundle-create
   (&optional file refs args)
   "Create a bundle." :man-page "git-bundle"
   ["Arguments"
    ("-a" "Include all refs" "--all")
    ("-b" "Include branches" "--branches=" :allow-empty t)
    ("-t" "Include tags" "--tags=" :allow-empty t)
    ("-r" "Include remotes" "--remotes=" :allow-empty t)
    ("-g" "Include refs" "--glob=")
    ("-e" "Exclude refs" "--exclude=")
    (magit-log:-n)
    (magit-log:--since)
    (magit-log:--until)]
   ["Actions"
    ("c" "create regular bundle" magit-bundle-create)
    ("t" "create tracked bundle" magit-bundle-create-tracked)
    ("u" "update tracked bundle" magit-bundle-update-tracked)]
   (interactive
    (and
     (eq transient-current-command 'magit-bundle-create)
     (list
      (read-file-name "Create bundle: " nil nil nil
		      (concat
		       (file-name-nondirectory
			(directory-file-name
			 (magit-toplevel)))
		       ".bundle"))
      (magit-completing-read-multiple "Refnames (zero or more): "
				      (magit-list-refnames))
      (transient-args 'magit-bundle-create))))
   (if file
       (magit-git-bundle "create" file refs args)
     (transient-setup 'magit-bundle-create)))
 (transient-define-prefix magit-bundle nil "Create or verify Git bundles." :man-page "git-bundle"
   ["Actions"
    ("c" "create" magit-bundle-create)
    ("v" "verify" magit-bundle-verify)
    ("l" "list-heads" magit-bundle-list-heads)])
 (transient-define-prefix cider-start-menu nil "Transient menu for starting CIDER sessions (jack-in and connect).\nThe arguments at the top apply to the jack-in commands: set aliases, pick\na ClojureScript REPL type, or opt to edit the final command before it\nruns.  They only affect this invocation, not your saved configuration."
   ["Arguments"
    ("-a" "Aliases" "--aliases=" :reader cider-start-menu--read-aliases)
    ("-l" "ClojureScript REPL type" "--cljs-repl=" :reader cider-start-menu--read-cljs-repl)
    ("-e" "Edit command before running" "--edit-command")]
   [["Jack-in (start server + connect)"
     ("jj" "Clojure" cider-start-menu--jack-in-clj)
     ("js" "ClojureScript" cider-start-menu--jack-in-cljs)
     ("jm" "Clojure + ClojureScript" cider-start-menu--jack-in-clj&cljs)
     ("ju" "Universal (by project type)" cider-start-menu--jack-in-universal)
     ("jn" "Start server only" cider-start-menu--start-nrepl-server)]
    ["Connect (to a running server)"
     ("cj" "Clojure" cider-connect-clj)
     ("cs" "ClojureScript" cider-connect-cljs)
     ("cm" "Clojure + ClojureScript" cider-connect-clj&cljs)]
    ["Connect sibling (share a server)"
     ("sj" "Clojure" cider-connect-sibling-clj)
     ("ss" "ClojureScript" cider-connect-sibling-cljs)]
    ["Other"
     ("x" "Choose connection command..." cider)]])
 (transient-define-suffix cider-start-menu--start-nrepl-server
   (args)
   "Start an nREPL server without connecting, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-start-nrepl-server))
 (transient-define-suffix cider-start-menu--jack-in-universal
   (args)
   "Jack in based on the project type, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-universal))
 (transient-define-suffix cider-start-menu--jack-in-clj&cljs
   (args)
   "Jack in to a Clojure and a ClojureScript REPL, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-clj&cljs))
 (transient-define-suffix cider-start-menu--jack-in-cljs
   (args)
   "Jack in to a ClojureScript REPL, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-cljs))
 (transient-define-suffix cider-start-menu--jack-in-clj
   (args)
   "Jack in to a Clojure REPL, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-clj))
 (transient-define-prefix cider-start-menu nil "Transient menu for starting CIDER sessions (jack-in and connect).\nThe arguments at the top apply to the jack-in commands: set aliases, pick\na ClojureScript REPL type, or opt to edit the final command before it\nruns.  They only affect this invocation, not your saved configuration."
   ["Arguments"
    ("-a" "Aliases" "--aliases=" :reader cider-start-menu--read-aliases)
    ("-l" "ClojureScript REPL type" "--cljs-repl=" :reader cider-start-menu--read-cljs-repl)
    ("-e" "Edit command before running" "--edit-command")]
   [["Jack-in (start server + connect)"
     ("jj" "Clojure" cider-start-menu--jack-in-clj)
     ("js" "ClojureScript" cider-start-menu--jack-in-cljs)
     ("jm" "Clojure + ClojureScript" cider-start-menu--jack-in-clj&cljs)
     ("ju" "Universal (by project type)" cider-start-menu--jack-in-universal)
     ("jn" "Start server only" cider-start-menu--start-nrepl-server)]
    ["Connect (to a running server)"
     ("cj" "Clojure" cider-connect-clj)
     ("cs" "ClojureScript" cider-connect-cljs)
     ("cm" "Clojure + ClojureScript" cider-connect-clj&cljs)]
    ["Connect sibling (share a server)"
     ("sj" "Clojure" cider-connect-sibling-clj)
     ("ss" "ClojureScript" cider-connect-sibling-cljs)]
    ["Other"
     ("x" "Choose connection command..." cider)]])
 (transient-define-suffix cider-start-menu--start-nrepl-server
   (args)
   "Start an nREPL server without connecting, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-start-nrepl-server))
 (transient-define-suffix cider-start-menu--jack-in-universal
   (args)
   "Jack in based on the project type, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-universal))
 (transient-define-suffix cider-start-menu--jack-in-clj&cljs
   (args)
   "Jack in to a Clojure and a ClojureScript REPL, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-clj&cljs))
 (transient-define-suffix cider-start-menu--jack-in-cljs
   (args)
   "Jack in to a ClojureScript REPL, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-cljs))
 (transient-define-suffix cider-start-menu--jack-in-clj
   (args)
   "Jack in to a Clojure REPL, applying the menu's ARGS."
   (interactive
    (list
     (transient-args 'cider-start-menu)))
   (cider-start-menu--apply-args args #'cider-jack-in-clj))
 (transient-define-argument magit-autofixup:--strict nil :description "Strictness" :class 'transient-option :shortarg "-s" :argument "--strict=" :reader #'transient-read-number-N0)
 (transient-define-argument magit-autofixup:--context nil :description "Diff context lines" :class 'transient-option :shortarg "-c" :argument "--context=" :reader #'transient-read-number-N0)
 (transient-augment-suffix magit-commit-autofixup :transient 'transient--do-exit)
 (transient-define-prefix magit-commit-autofixup
   (phase commit args)
   "Spread staged or unstaged changes across recent commits.\n\nIf there are any staged then spread only those, otherwise spread all\nunstaged changes.  With a prefix argument use a transient command to\nselect infix arguments.\n\nThis command requires the git-autofixup script, which is available from\nhttps://github.com/torbiak/git-autofixup.  See `magit-commit-absorb' for\nan alternative implementation." :value
   '("-vv")
   ["Arguments"
    (magit-autofixup:--context)
    (magit-autofixup:--strict)
    ("-v" "Increase verbosity" "-vv")]
   ["Actions"
    ("x" "Absorb" magit-commit-autofixup)]
   (interactive
    (if current-prefix-arg
	(list 'transient nil nil)
      (list 'select
	    (and$
	     (magit-get-upstream-branch)
	     (magit-merge-base $ "HEAD"))
	    (transient-args 'magit-commit-autofixup))))
   (if
       (eq phase 'transient)
       (transient-setup 'magit-commit-autofixup)
     (unless
	 (magit-git-executable-find "git-autofixup")
       (user-error "This command requires the git-autofixup script, which %s" "is available from https://github.com/torbiak/git-autofixup"))
     (unless
	 (magit-anything-modified-p)
       (user-error "There are no changes that could be absorbed"))
     (when commit
       (setq commit
	     (magit-rebase-interactive-assert commit t)))
     (if
	 (and commit
	      (eq phase 'run))
	 (prog1 t
	   (magit-run-git-async "autofixup" args commit))
       (magit-log-select
	 (lambda
	   (commit)
	   (with-no-warnings
	     (magit-commit-autofixup 'run commit args)))
	 nil nil nil nil commit))))
 (transient-augment-suffix magit-commit-absorb :transient 'transient--do-exit)
 (transient-define-prefix magit-commit-absorb
   (phase commit args)
   "Spread staged changes across recent commits.\nWith a prefix argument use a transient command to select infix\narguments.  This command requires git-absorb executable, which\nis available from https://github.com/tummychow/git-absorb.\nSee `magit-commit-autofixup' for an alternative implementation." :value
   '("-v")
   ["Arguments"
    ("-f" "Skip safety checks"
     ("-f" "--force"))
    ("-v" "Increase verbosity"
     ("-v" "--verbose"))]
   ["Actions"
    ("x" "Absorb" magit-commit-absorb)]
   (interactive
    (if current-prefix-arg
	(list 'transient nil nil)
      (list 'select
	    (and$
	     (magit-get-upstream-branch)
	     (magit-merge-base $ "HEAD"))
	    (transient-args 'magit-commit-absorb))))
   (if
       (eq phase 'transient)
       (transient-setup 'magit-commit-absorb)
     (unless
	 (magit-git-executable-find "git-absorb")
       (user-error "This command requires the git-absorb executable, which %s" "is available from https://github.com/tummychow/git-absorb"))
     (unless
	 (magit-anything-staged-p)
       (if
	   (magit-anything-unstaged-p)
	   (if
	       (y-or-n-p "Nothing staged.  Absorb all unstaged changes? ")
	       (magit-with-toplevel
		 (magit-run-git "add" "-u" "."))
	     (user-error "Abort"))
	 (user-error "There are no changes that could be absorbed")))
     (when commit
       (setq commit
	     (magit-rebase-interactive-assert commit t)))
     (if
	 (and commit
	      (eq phase 'run))
	 (prog1 t
	   (magit-run-git-async "absorb" args "-b" commit))
       (magit-log-select
	 (lambda
	   (commit)
	   (with-no-warnings
	     (magit-commit-absorb 'run commit args)))
	 nil nil nil nil commit))))
 (transient-define-argument magit-commit:--reedit-message nil :description "Reedit commit message" :class 'transient-option :shortarg "-c" :argument "--reedit-message=" :reader #'magit-read-reuse-message :history-key 'magit-revision-history)
 (transient-define-argument magit-commit:--reuse-message nil :description "Reuse commit message" :class 'transient-option :shortarg "-C" :argument "--reuse-message=" :reader #'magit-read-reuse-message :history-key 'magit-revision-history)
 (transient-define-argument magit-commit:--date nil :description "Override the author date" :class 'transient-option :shortarg "-D" :argument "--date=" :reader #'transient-read-date)
 (transient-define-prefix magit-commit nil "Create a new commit or replace an existing commit." :info-manual "(magit)Initiating a Commit" :man-page "git-commit" :value
   '("--verbose")
   ["Arguments"
    ("-a" "Stage all modified and deleted files"
     ("-a" "--all"))
    ("-e" "Allow empty commit" "--allow-empty")
    ("-v" "Show diff of changes to be committed"
     ("-v" "--verbose"))
    ("-n" "Disable hooks"
     ("-n" "--no-verify"))
    ("-R" "Claim authorship and reset author date" "--reset-author")
    (magit:--author :description "Override the author")
    (magit-commit:--date :level 7)
    (magit:--gpg-sign :level 5)
    (magit:--signoff)
    (magit-commit:--reuse-message)
    (magit-commit:--reedit-message)]
   [["Create"
     ("c" "Commit" magit-commit-create)]
    ["Edit HEAD"
     ("e" "Extend" magit-commit-extend)
     ""
     ("a" "Amend" magit-commit-amend)
     ""
     ("w" "Reword" magit-commit-reword)
     ("d" "Reshelve" magit-commit-reshelve :level 0)]
    ["Edit"
     ("f" "Fixup" magit-commit-fixup)
     ("s" "Squash" magit-commit-squash)
     ("A" "Alter" magit-commit-alter)
     ("n" "Augment" magit-commit-augment)
     ("W" "Revise" magit-commit-revise)]
    ["Edit and rebase"
     ("F" "Instant fixup" magit-commit-instant-fixup)
     ("S" "Instant squash" magit-commit-instant-squash)
     "" ""
     ("R" "Reword past" magit-rebase-reword-commit :level 0)]
    ["Spread across commits"
     ("x" "Modified files" magit-commit-autofixup :level 6)
     ("X" "Updated modules" magit-commit-absorb-modules :level 6)]]
   (interactive)
   (if-let
       ((buffer
	 (magit-commit-message-buffer)))
       (switch-to-buffer buffer)
     (transient-setup 'magit-commit)))
 (transient-define-argument magit-autofixup:--strict nil :description "Strictness" :class 'transient-option :shortarg "-s" :argument "--strict=" :reader #'transient-read-number-N0)
 (transient-define-argument magit-autofixup:--context nil :description "Diff context lines" :class 'transient-option :shortarg "-c" :argument "--context=" :reader #'transient-read-number-N0)
 (transient-augment-suffix magit-commit-autofixup :transient 'transient--do-exit)
 (transient-define-prefix magit-commit-autofixup
   (phase commit args)
   "Spread staged or unstaged changes across recent commits.\n\nIf there are any staged then spread only those, otherwise spread all\nunstaged changes.  With a prefix argument use a transient command to\nselect infix arguments.\n\nThis command requires the git-autofixup script, which is available from\nhttps://github.com/torbiak/git-autofixup.  See `magit-commit-absorb' for\nan alternative implementation." :value
   '("-vv")
   ["Arguments"
    (magit-autofixup:--context)
    (magit-autofixup:--strict)
    ("-v" "Increase verbosity" "-vv")]
   ["Actions"
    ("x" "Absorb" magit-commit-autofixup)]
   (interactive
    (if current-prefix-arg
	(list 'transient nil nil)
      (list 'select
	    (and$
	     (magit-get-upstream-branch)
	     (magit-merge-base $ "HEAD"))
	    (transient-args 'magit-commit-autofixup))))
   (if
       (eq phase 'transient)
       (transient-setup 'magit-commit-autofixup)
     (unless
	 (magit-git-executable-find "git-autofixup")
       (user-error "This command requires the git-autofixup script, which %s" "is available from https://github.com/torbiak/git-autofixup"))
     (unless
	 (magit-anything-modified-p)
       (user-error "There are no changes that could be absorbed"))
     (when commit
       (setq commit
	     (magit-rebase-interactive-assert commit t)))
     (if
	 (and commit
	      (eq phase 'run))
	 (prog1 t
	   (magit-run-git-async "autofixup" args commit))
       (magit-log-select
	 (lambda
	   (commit)
	   (with-no-warnings
	     (magit-commit-autofixup 'run commit args)))
	 nil nil nil nil commit))))
 (transient-augment-suffix magit-commit-absorb :transient 'transient--do-exit)
 (transient-define-prefix magit-commit-absorb
   (phase commit args)
   "Spread staged changes across recent commits.\nWith a prefix argument use a transient command to select infix\narguments.  This command requires git-absorb executable, which\nis available from https://github.com/tummychow/git-absorb.\nSee `magit-commit-autofixup' for an alternative implementation." :value
   '("-v")
   ["Arguments"
    ("-f" "Skip safety checks"
     ("-f" "--force"))
    ("-v" "Increase verbosity"
     ("-v" "--verbose"))]
   ["Actions"
    ("x" "Absorb" magit-commit-absorb)]
   (interactive
    (if current-prefix-arg
	(list 'transient nil nil)
      (list 'select
	    (and$
	     (magit-get-upstream-branch)
	     (magit-merge-base $ "HEAD"))
	    (transient-args 'magit-commit-absorb))))
   (if
       (eq phase 'transient)
       (transient-setup 'magit-commit-absorb)
     (unless
	 (magit-git-executable-find "git-absorb")
       (user-error "This command requires the git-absorb executable, which %s" "is available from https://github.com/tummychow/git-absorb"))
     (unless
	 (magit-anything-staged-p)
       (if
	   (magit-anything-unstaged-p)
	   (if
	       (y-or-n-p "Nothing staged.  Absorb all unstaged changes? ")
	       (magit-with-toplevel
		 (magit-run-git "add" "-u" "."))
	     (user-error "Abort"))
	 (user-error "There are no changes that could be absorbed")))
     (when commit
       (setq commit
	     (magit-rebase-interactive-assert commit t)))
     (if
	 (and commit
	      (eq phase 'run))
	 (prog1 t
	   (magit-run-git-async "absorb" args "-b" commit))
       (magit-log-select
	 (lambda
	   (commit)
	   (with-no-warnings
	     (magit-commit-absorb 'run commit args)))
	 nil nil nil nil commit))))
 (transient-define-argument magit-commit:--reedit-message nil :description "Reedit commit message" :class 'transient-option :shortarg "-c" :argument "--reedit-message=" :reader #'magit-read-reuse-message :history-key 'magit-revision-history)
 (transient-define-argument magit-commit:--reuse-message nil :description "Reuse commit message" :class 'transient-option :shortarg "-C" :argument "--reuse-message=" :reader #'magit-read-reuse-message :history-key 'magit-revision-history)
 (transient-define-argument magit-commit:--date nil :description "Override the author date" :class 'transient-option :shortarg "-D" :argument "--date=" :reader #'transient-read-date)
 (transient-define-prefix magit-commit nil "Create a new commit or replace an existing commit." :info-manual "(magit)Initiating a Commit" :man-page "git-commit" :value
   '("--verbose")
   ["Arguments"
    ("-a" "Stage all modified and deleted files"
     ("-a" "--all"))
    ("-e" "Allow empty commit" "--allow-empty")
    ("-v" "Show diff of changes to be committed"
     ("-v" "--verbose"))
    ("-n" "Disable hooks"
     ("-n" "--no-verify"))
    ("-R" "Claim authorship and reset author date" "--reset-author")
    (magit:--author :description "Override the author")
    (magit-commit:--date :level 7)
    (magit:--gpg-sign :level 5)
    (magit:--signoff)
    (magit-commit:--reuse-message)
    (magit-commit:--reedit-message)]
   [["Create"
     ("c" "Commit" magit-commit-create)]
    ["Edit HEAD"
     ("e" "Extend" magit-commit-extend)
     ""
     ("a" "Amend" magit-commit-amend)
     ""
     ("w" "Reword" magit-commit-reword)
     ("d" "Reshelve" magit-commit-reshelve :level 0)]
    ["Edit"
     ("f" "Fixup" magit-commit-fixup)
     ("s" "Squash" magit-commit-squash)
     ("A" "Alter" magit-commit-alter)
     ("n" "Augment" magit-commit-augment)
     ("W" "Revise" magit-commit-revise)]
    ["Edit and rebase"
     ("F" "Instant fixup" magit-commit-instant-fixup)
     ("S" "Instant squash" magit-commit-instant-squash)
     "" ""
     ("R" "Reword past" magit-rebase-reword-commit :level 0)]
    ["Spread across commits"
     ("x" "Modified files" magit-commit-autofixup :level 6)
     ("X" "Updated modules" magit-commit-absorb-modules :level 6)]]
   (interactive)
   (if-let
       ((buffer
	 (magit-commit-message-buffer)))
       (switch-to-buffer buffer)
     (transient-setup 'magit-commit)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target)))
 (transient-define-suffix transient-echo-arguments
   (arguments)
   "Show the transient's active ARGUMENTS in the echo area.\nIntended for use in prefixes used for demonstration purposes,\nsuch as when suggesting a new feature or reporting an issue." :transient t :description "Echo arguments" :key "x"
   (interactive
    (list
     (transient-args transient-current-command)))
   (if
       (all #'stringp arguments)
       (message "%s: %s"
		(key-description
		 (this-command-keys))
		(mapconcat
		 (lambda
		   (arg)
		   (propertize
		    (if
			(string-match-p " " arg)
			(format "%S" arg)
		      arg)
		    'face 'transient-argument))
		 arguments " "))
     (message "%s: %S"
	      (key-description
	       (this-command-keys))
	      arguments)))
 (transient-define-suffix transient-toggle-docstrings
   (&optional permanent)
   "Toggle whether to show docstrings instead of suffix descriptions.\n\nBy default this is only enabled temporarily for the current transient\nmenu invocation.  With a prefix argument, enable this until explicitly\ndisabled again.\n\nInfix arguments are not affected by this, because otherwise many menus\nwould likely become unreadable.  To make this command available in all\nmenus, bind it in `transient-map'.  `transient-show-docstring-format'\ncontrols how the docstrings are displayed and whether descriptions are\nalso displayed." :transient t
   (interactive
    (list current-prefix-arg))
   (setq transient--docsp
	 (if permanent 'permanent
	   (not transient--docsp))))
 (transient-define-suffix transient-toggle-common nil "Toggle whether common commands are permanently shown." :transient t :description
   (lambda nil
     (if transient-show-common-commands "Hide common commands" "Show common permanently"))
   (interactive)
   (setq transient-show-common-commands
	 (not transient-show-common-commands)))
 (transient-define-suffix transient-preset nil "Put this preset into action." :class transient-value-preset
   (interactive)
   (transient-prefix-set
    (oref
     (transient-suffix-object)
     set)))
 (transient-define-suffix transient-toggle-level-limit nil "Toggle whether to temporarily display suffixes on all levels." :description
   (lambda nil
     (cond
      (transient--all-levels-p
       (format "Hide suffix %s"
	       (propertize
		(format "levels > %s"
			(oref
			 (transient-prefix-object)
			 level))
		'face 'transient-higher-level)))
      ("Show all suffix levels")))
   :transient t
   (interactive)
   (setq transient--all-levels-p
	 (not transient--all-levels-p))
   (setq transient--refreshp t))
 (transient-define-suffix transient-describe nil "From a transient menu, describe something in another buffer.\n\nThis command can be bound multiple times to describe different targets.\nEach binding must specify the thing it describes, by setting the value\nof its `target' slot, using the keyword argument `:='.\n\nThe `helper' slot specifies the low-level function used to describe the\ntarget, and can be omitted, in which case `transient--describe-function'\nis used for a symbol, `transient--show-manual' is used for a string\nbeginning with a parenthesis, and `transient--show-manpage' is used for\nany other string.\n\nFor example:\n  [(\"e\" \"about emacs\" transient-describe := \"(emacs)\")\n   (\"g\" \"about git\"   transient-describe := \"git\")]" :class 'transient-describe-target
   (interactive)
   (with-slots
       (helper target)
       (transient-suffix-object)
     (transient--display-help helper target))))

Documentation

Dynamic list of successive enclosing forms.

This is used by the warning message routines to determine a source code position. The most accessible element is the current most deeply nested form.

Normally a form is manually pushed onto the list at the beginning of byte-compile-form, etc., and manually popped off at its end. This is to preserve the data in it in the event of a condition-case handling a signaled error.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/macroexp.el.gz
;;; macroexp.el --- Additional macro-expansion support -*- lexical-binding: t -*-
;;
;; Copyright (C) 2004-2024 Free Software Foundation, Inc.
;;
;; Author: Miles Bader <miles@gnu.org>
;; Keywords: lisp, compiler, macros

;; This file is part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:
;;
;; This file contains macro-expansions functions that are not defined in
;; the Lisp core, namely `macroexpand-all', which expands all macros in
;; a form, not just a top-level one.

;;; Code:

(defvar byte-compile-form-stack nil
  "Dynamic list of successive enclosing forms.
This is used by the warning message routines to determine a
source code position.  The most accessible element is the current
most deeply nested form.

Normally a form is manually pushed onto the list at the beginning
of `byte-compile-form', etc., and manually popped off at its end.
This is to preserve the data in it in the event of a
condition-case handling a signaled error.")