Variable: byte-compile-form-stack

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

Value

Large value
((transient-define-suffix forge-discussion-set-answer
   (post)
   "Mark the post at point as the answer to the current question.\nWhen point is on the answer, then unmark it and mark no other." :class 'forge--topic-set-slot-command :slot 'answer :inapt-if-not
   (lambda nil
     (and-let*
	 ((discussion
	   (forge-current-discussion))
	  (category
	   (oref discussion category)))
       (forge-sql1
	[:select answerable-p :from discussion-category :where
		 (= id $s1)]
	category)))
   :description
   (## forge--format-boolean 'answer "answered")
   :reader #'forge--select-discussion-answer)
 (transient-define-suffix forge-topic-toggle-saved nil "Toggle whether this topic is marked as saved." :class 'forge--topic-set-slot-command :slot 'saved-p :inapt-if-not #'forge-current-topic :description
   (## forge--format-boolean 'saved-p "saved")
   (interactive)
   (let
       ((topic
	 (forge-current-topic t)))
     (oset topic saved-p
	   (not
	    (oref topic saved-p))))
   (forge-refresh-buffer))
 (transient-define-suffix forge-topic-toggle-draft
   (draft)
   "Toggle whether the current pull-request is a draft." :class 'forge--topic-set-slot-command :slot 'draft-p :inapt-if-not #'forge-current-pullreq :description
   (## forge--format-boolean 'draft-p "draft"))
 (transient-define-suffix forge-topic-set-review-requests
   (review-requests)
   "Edit the REVIEW-REQUESTS of the current pull-request." :class 'forge--topic-set-slot-command :slot 'review-requests :inapt-if-not #'forge-current-pullreq)
 (transient-define-suffix forge-topic-set-assignees
   (assignees)
   "Edit the ASSIGNEES of the current topic." :class 'forge--topic-set-slot-command :slot 'assignees :inapt-if-not
   (## or
       (forge-current-issue)
       (forge-current-pullreq)))
 (transient-define-suffix forge-topic-set-marks
   (marks)
   "Edit the MARKS of the current topic." :class 'forge--topic-set-slot-command :slot 'marks :inapt-if-not #'forge-current-topic :formatter
   (## forge--format-marks % t))
 (transient-define-suffix forge-topic-set-labels
   (labels)
   "Edit the LABELS of the current topic." :class 'forge--topic-set-slot-command :slot 'labels :inapt-if-not #'forge-current-topic :formatter
   (## forge--format-labels % t))
 (transient-define-suffix forge-topic-set-milestone
   (milestone)
   "Edit what MILESTONE the current topic belongs to." :class 'forge--topic-set-slot-command :slot 'milestone :inapt-if-not
   (## or
       (forge-current-issue)
       (forge-current-pullreq)))
 (transient-define-suffix forge-topic-set-category
   (category)
   "Edit the CATEGORY of the current discussion." :class 'forge--topic-set-slot-command :slot 'category :inapt-if-not #'forge-current-discussion)
 (transient-define-suffix forge-topic-set-title
   (title)
   "Edit the TITLE of the current topic." :class 'forge--topic-set-slot-command :slot 'title :inapt-if-not #'forge-current-topic :formatter
   (lambda
     (topic)
     (propertize
      (truncate-string-to-width
       (forge--format-topic-title topic)
       34 nil 32 t)
      'face 'font-lock-string-face)))
 (transient-define-suffix forge-topic-status-set-done nil "Set the notification status of the current topic to `done'." :class 'forge--topic-set-status-command :status 'done)
 (transient-define-suffix forge-topic-status-set-pending nil "Set the notification status of the current topic to `pending'." :class 'forge--topic-set-status-command :status 'pending)
 (transient-define-suffix forge-topic-status-set-unread nil "Set the notification status of the current topic to `unread'." :class 'forge--topic-set-status-command :status 'unread)
 (transient-define-suffix forge-pullreq-state-set-rejected nil "Set the state of the current pull-request to `rejected'." :class 'forge--topic-set-state-command :state 'rejected :getter #'forge-current-pullreq :if #'forge-current-pullreq)
 (transient-define-suffix forge-pullreq-state-set-merged nil "Merge the current pull-request into its target.\nPrompt the user to either use the API to perform the merge or use Git.\nI recommend you only use the API if your organization enforces that\ninferior process." :class 'forge--topic-set-state-command :state 'merged :getter #'forge-current-pullreq :if #'forge-current-pullreq :transient nil
   (interactive)
   (let
       ((pullreq
	 (forge-current-pullreq)))
     (if
	 (magit-read-char-case
	     (format "Merge #%s "
		     (oref pullreq number))
	     t
	   (103 "using [g]it (recommended)" t)
	   (97 "using [a]pi" nil))
	 (let
	     ((branch
	       (or
		(forge--pullreq-branch-active pullreq)
		(forge--branch-pullreq pullreq))))
	   (if-let
	       ((upstream
		 (magit-get-local-upstream-branch branch)))
	       (if
		   (zerop
		    (magit-call-git "checkout" upstream))
		   (magit--merge-absorb branch
					(magit-merge-arguments)
					"Inspect the result, and if satisfied push")
		 (user-error "Could not checkout %S" upstream))
	     (user-error "No upstream configured for %S" branch)))
       (forge-merge pullreq
		    (forge-select-merge-method)))))
 (transient-define-suffix forge-discussion-state-set-outdated nil "Set the state of the current discussion to `outdated'." :class 'forge--topic-set-state-command :state 'outdated :getter #'forge-current-discussion :if #'forge-current-discussion)
 (transient-define-suffix forge-chatter-state-set-duplicate nil "Set the state of the current discussion or issue to `duplicate'." :class 'forge--topic-set-state-command :state 'duplicate :getter #'forge-current-chatter :if #'forge-current-chatter
   (interactive)
   (with-slots
       (getter state)
       (transient-suffix-object)
     (let
	 ((topic
	   (funcall getter t)))
       (if
	   (forge-issue-p topic)
	   (message "The API does not yet support closing an issue as a duplicate")
	 (forge--set-topic-state
	  (forge-get-repository topic)
	  topic state)))))
 (transient-define-suffix forge-issue-state-set-unplanned nil "Set the state of the current issue to `unplanned'." :class 'forge--topic-set-state-command :state 'unplanned :getter #'forge-current-issue :if #'forge-current-issue)
 (transient-define-suffix forge-chatter-state-set-completed nil "Set the state of the current discussion or issue to `completed'." :class 'forge--topic-set-state-command :state 'completed :getter #'forge-current-chatter :if #'forge-current-chatter)
 (transient-define-suffix forge-topic-state-set-open nil "Set the state of the current topic to `open'." :class 'forge--topic-set-state-command :state 'open :getter #'forge-current-topic)
 (transient-define-prefix forge-topic-status-menu nil "Set status of the current topic." :environment #'forge--menu-environment
   [forge--topic-set-status-group])
 (transient-define-prefix forge-topic-state-menu nil "Set state of the current topic." :environment #'forge--menu-environment
   [forge--topic-set-state-group])
 (transient-augment-suffix forge-topic-menu :transient #'transient--do-replace :inapt-if
   (lambda nil
     (or
      (derived-mode-p 'forge-repository-list-mode)
      (eq
       (oref transient--prefix command)
       'forge-topic-menu)))
   :inapt-face
   (lambda nil
     (if
	 (derived-mode-p 'forge-repository-list-mode)
	 'transient-inapt-suffix 'forge-suffix-active)))
 (transient-define-prefix forge-topic-menu
   (&optional visit)
   "Show menu for the topic at point.\nWith prefix argument VISIT, also visit the topic." :transient-suffix t :transient-non-suffix #'transient--do-call :transient-switch-frame nil :refresh-suffixes t :environment #'forge--menu-environment :column-widths forge--topic-menus-column-widths
   [:hide always
	  ("q" forge-menu-quit-list)]
   [forge--topic-menus-group forge--topic-set-state-group forge--topic-set-status-group
			     ["Actions"
			      ("/f" forge-pull-this-topic)
			      ("/b" forge-browse-this-topic)
			      ("/r" "respond" forge-create-post)
			      ("/c" forge-checkout-this-pullreq)
			      ("/A" forge-approve-pullreq)
			      ("/R" forge-request-changes)]]
   [forge--lists-group
    ["Set                                         "
     ("-c" forge-topic-set-category)
     ("-m" forge-topic-set-milestone)
     ("-l" forge-topic-set-labels)
     ("-x" forge-topic-set-marks)
     ("-a" forge-topic-set-assignees)
     ("-r" forge-topic-set-review-requests)
     ("-n" forge-edit-topic-note)
     ("-t" forge-topic-set-title)]
    ["Set"
     ("-s" forge-topic-toggle-saved)
     ("-d" forge-topic-toggle-draft)
     ("-A" forge-discussion-set-answer)
     "" "Display"
     ("-H" forge-toggle-topic-legend)]]
   [forge--topic-legend-group]
   (interactive
    (list current-prefix-arg))
   (when visit
     (forge-topic-setup-buffer
      (forge-topic-at-point)))
   (transient-setup 'forge-topic-menu))
 (transient-define-suffix forge-toggle-topic-legend nil "Toggle whether to show legend for faces used in topic menus and lists." :description
   (## if forge--show-topic-legend "hide legend" "show legend")
   :transient t
   (interactive)
   (customize-set-variable 'forge--show-topic-legend
			   (not forge--show-topic-legend)))
 (transient-define-suffix forge-discussion-set-answer
   (post)
   "Mark the post at point as the answer to the current question.\nWhen point is on the answer, then unmark it and mark no other." :class 'forge--topic-set-slot-command :slot 'answer :inapt-if-not
   (lambda nil
     (and-let*
	 ((discussion
	   (forge-current-discussion))
	  (category
	   (oref discussion category)))
       (forge-sql1
	[:select answerable-p :from discussion-category :where
		 (= id $s1)]
	category)))
   :description
   (## forge--format-boolean 'answer "answered")
   :reader #'forge--select-discussion-answer)
 (transient-define-suffix forge-topic-toggle-saved nil "Toggle whether this topic is marked as saved." :class 'forge--topic-set-slot-command :slot 'saved-p :inapt-if-not #'forge-current-topic :description
   (## forge--format-boolean 'saved-p "saved")
   (interactive)
   (let
       ((topic
	 (forge-current-topic t)))
     (oset topic saved-p
	   (not
	    (oref topic saved-p))))
   (forge-refresh-buffer))
 (transient-define-suffix forge-topic-toggle-draft
   (draft)
   "Toggle whether the current pull-request is a draft." :class 'forge--topic-set-slot-command :slot 'draft-p :inapt-if-not #'forge-current-pullreq :description
   (## forge--format-boolean 'draft-p "draft"))
 (transient-define-suffix forge-topic-set-review-requests
   (review-requests)
   "Edit the REVIEW-REQUESTS of the current pull-request." :class 'forge--topic-set-slot-command :slot 'review-requests :inapt-if-not #'forge-current-pullreq)
 (transient-define-suffix forge-topic-set-assignees
   (assignees)
   "Edit the ASSIGNEES of the current topic." :class 'forge--topic-set-slot-command :slot 'assignees :inapt-if-not
   (## or
       (forge-current-issue)
       (forge-current-pullreq)))
 (transient-define-suffix forge-topic-set-marks
   (marks)
   "Edit the MARKS of the current topic." :class 'forge--topic-set-slot-command :slot 'marks :inapt-if-not #'forge-current-topic :formatter
   (## forge--format-marks % t))
 (transient-define-suffix forge-topic-set-labels
   (labels)
   "Edit the LABELS of the current topic." :class 'forge--topic-set-slot-command :slot 'labels :inapt-if-not #'forge-current-topic :formatter
   (## forge--format-labels % t))
 (transient-define-suffix forge-topic-set-milestone
   (milestone)
   "Edit what MILESTONE the current topic belongs to." :class 'forge--topic-set-slot-command :slot 'milestone :inapt-if-not
   (## or
       (forge-current-issue)
       (forge-current-pullreq)))
 (transient-define-suffix forge-topic-set-category
   (category)
   "Edit the CATEGORY of the current discussion." :class 'forge--topic-set-slot-command :slot 'category :inapt-if-not #'forge-current-discussion)
 (transient-define-suffix forge-topic-set-title
   (title)
   "Edit the TITLE of the current topic." :class 'forge--topic-set-slot-command :slot 'title :inapt-if-not #'forge-current-topic :formatter
   (lambda
     (topic)
     (propertize
      (truncate-string-to-width
       (forge--format-topic-title topic)
       34 nil 32 t)
      'face 'font-lock-string-face)))
 (transient-define-suffix forge-topic-status-set-done nil "Set the notification status of the current topic to `done'." :class 'forge--topic-set-status-command :status 'done)
 (transient-define-suffix forge-topic-status-set-pending nil "Set the notification status of the current topic to `pending'." :class 'forge--topic-set-status-command :status 'pending)
 (transient-define-suffix forge-topic-status-set-unread nil "Set the notification status of the current topic to `unread'." :class 'forge--topic-set-status-command :status 'unread)
 (transient-define-suffix forge-pullreq-state-set-rejected nil "Set the state of the current pull-request to `rejected'." :class 'forge--topic-set-state-command :state 'rejected :getter #'forge-current-pullreq :if #'forge-current-pullreq)
 (transient-define-suffix forge-pullreq-state-set-merged nil "Merge the current pull-request into its target.\nPrompt the user to either use the API to perform the merge or use Git.\nI recommend you only use the API if your organization enforces that\ninferior process." :class 'forge--topic-set-state-command :state 'merged :getter #'forge-current-pullreq :if #'forge-current-pullreq :transient nil
   (interactive)
   (let
       ((pullreq
	 (forge-current-pullreq)))
     (if
	 (magit-read-char-case
	     (format "Merge #%s "
		     (oref pullreq number))
	     t
	   (103 "using [g]it (recommended)" t)
	   (97 "using [a]pi" nil))
	 (let
	     ((branch
	       (or
		(forge--pullreq-branch-active pullreq)
		(forge--branch-pullreq pullreq))))
	   (if-let
	       ((upstream
		 (magit-get-local-upstream-branch branch)))
	       (if
		   (zerop
		    (magit-call-git "checkout" upstream))
		   (magit--merge-absorb branch
					(magit-merge-arguments)
					"Inspect the result, and if satisfied push")
		 (user-error "Could not checkout %S" upstream))
	     (user-error "No upstream configured for %S" branch)))
       (forge-merge pullreq
		    (forge-select-merge-method)))))
 (transient-define-suffix forge-discussion-state-set-outdated nil "Set the state of the current discussion to `outdated'." :class 'forge--topic-set-state-command :state 'outdated :getter #'forge-current-discussion :if #'forge-current-discussion)
 (transient-define-suffix forge-chatter-state-set-duplicate nil "Set the state of the current discussion or issue to `duplicate'." :class 'forge--topic-set-state-command :state 'duplicate :getter #'forge-current-chatter :if #'forge-current-chatter
   (interactive)
   (with-slots
       (getter state)
       (transient-suffix-object)
     (let
	 ((topic
	   (funcall getter t)))
       (if
	   (forge-issue-p topic)
	   (message "The API does not yet support closing an issue as a duplicate")
	 (forge--set-topic-state
	  (forge-get-repository topic)
	  topic state)))))
 (transient-define-suffix forge-issue-state-set-unplanned nil "Set the state of the current issue to `unplanned'." :class 'forge--topic-set-state-command :state 'unplanned :getter #'forge-current-issue :if #'forge-current-issue)
 (transient-define-suffix forge-chatter-state-set-completed nil "Set the state of the current discussion or issue to `completed'." :class 'forge--topic-set-state-command :state 'completed :getter #'forge-current-chatter :if #'forge-current-chatter)
 (transient-define-suffix forge-topic-state-set-open nil "Set the state of the current topic to `open'." :class 'forge--topic-set-state-command :state 'open :getter #'forge-current-topic)
 (transient-define-prefix forge-topic-status-menu nil "Set status of the current topic." :environment #'forge--menu-environment
   [forge--topic-set-status-group])
 (transient-define-prefix forge-topic-state-menu nil "Set state of the current topic." :environment #'forge--menu-environment
   [forge--topic-set-state-group])
 (transient-augment-suffix forge-topic-menu :transient #'transient--do-replace :inapt-if
   (lambda nil
     (or
      (derived-mode-p 'forge-repository-list-mode)
      (eq
       (oref transient--prefix command)
       'forge-topic-menu)))
   :inapt-face
   (lambda nil
     (if
	 (derived-mode-p 'forge-repository-list-mode)
	 'transient-inapt-suffix 'forge-suffix-active)))
 (transient-define-prefix forge-topic-menu
   (&optional visit)
   "Show menu for the topic at point.\nWith prefix argument VISIT, also visit the topic." :transient-suffix t :transient-non-suffix #'transient--do-call :transient-switch-frame nil :refresh-suffixes t :environment #'forge--menu-environment :column-widths forge--topic-menus-column-widths
   [:hide always
	  ("q" forge-menu-quit-list)]
   [forge--topic-menus-group forge--topic-set-state-group forge--topic-set-status-group
			     ["Actions"
			      ("/f" forge-pull-this-topic)
			      ("/b" forge-browse-this-topic)
			      ("/r" "respond" forge-create-post)
			      ("/c" forge-checkout-this-pullreq)
			      ("/A" forge-approve-pullreq)
			      ("/R" forge-request-changes)]]
   [forge--lists-group
    ["Set                                         "
     ("-c" forge-topic-set-category)
     ("-m" forge-topic-set-milestone)
     ("-l" forge-topic-set-labels)
     ("-x" forge-topic-set-marks)
     ("-a" forge-topic-set-assignees)
     ("-r" forge-topic-set-review-requests)
     ("-n" forge-edit-topic-note)
     ("-t" forge-topic-set-title)]
    ["Set"
     ("-s" forge-topic-toggle-saved)
     ("-d" forge-topic-toggle-draft)
     ("-A" forge-discussion-set-answer)
     "" "Display"
     ("-H" forge-toggle-topic-legend)]]
   [forge--topic-legend-group]
   (interactive
    (list current-prefix-arg))
   (when visit
     (forge-topic-setup-buffer
      (forge-topic-at-point)))
   (transient-setup 'forge-topic-menu))
 (transient-define-suffix forge-toggle-topic-legend nil "Toggle whether to show legend for faces used in topic menus and lists." :description
   (## if forge--show-topic-legend "hide legend" "show legend")
   :transient t
   (interactive)
   (customize-set-variable 'forge--show-topic-legend
			   (not forge--show-topic-legend)))
 (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-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 forge-notifications-style-nested nil "Group notifications by repository." :description "group by repo" :inapt-if
   (## eq forge-notifications-display-style 'nested)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-display-style 'nested)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-style-flat nil "Show a flat notification list." :description "single list" :inapt-if
   (## eq forge-notifications-display-style 'flat)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-display-style 'flat)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-all nil "List all notifications." :description "all" :inapt-if
   (## equal forge-notifications-selection
	     '(unread pending done))
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection
	 '(unread pending done))
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-done nil "List done notifications." :description "done" :inapt-if
   (## eq forge-notifications-selection 'done)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection 'done)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-saved nil "List saved notifications." :description "saved" :inapt-if
   (## eq forge-notifications-selection 'saved)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection 'saved)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-inbox nil "List unread and pending notifications." :description "inbox" :inapt-if
   (## equal forge-notifications-selection
	     '(unread pending))
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection
	 '(unread pending))
   (forge-refresh-buffer))
 (transient-define-suffix forge-list-notifications nil "List notifications." :inapt-if-mode 'forge-notifications-mode :inapt-face 'forge-suffix-active
   (declare
    (interactive-only nil))
   (interactive)
   (forge-notifications-setup-buffer)
   (transient-setup 'forge-notifications-menu))
 (transient-augment-suffix forge-notifications-menu :transient #'transient--do-replace :if-mode 'forge-notifications-mode :inapt-if
   (## eq
       (oref transient--prefix command)
       'forge-notifications-menu)
   :inapt-face 'forge-suffix-active)
 (transient-define-prefix forge-notifications-menu nil "Control list of notifications and notification at point." :transient-suffix t :transient-non-suffix #'transient--do-call :transient-switch-frame nil :refresh-suffixes t :environment #'forge--menu-environment :column-widths forge--topic-menus-column-widths
   [:hide always
	  ("q" forge-menu-quit-list)]
   [forge--topic-menus-group
    ["Selection"
     ("I" forge-notifications-display-inbox)
     ("S" forge-notifications-display-saved)
     ("D" forge-notifications-display-done)
     ("A" forge-notifications-display-all)]]
   [forge--lists-group
    ["Display"
     ("-F" forge-notifications-style-flat)
     ("-G" forge-notifications-style-nested)
     ("-H" forge-toggle-topic-legend)]]
   [forge--topic-legend-group]
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (forge-list-notifications))
   (transient-setup 'forge-notifications-menu))
 (transient-define-suffix forge-notifications-style-nested nil "Group notifications by repository." :description "group by repo" :inapt-if
   (## eq forge-notifications-display-style 'nested)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-display-style 'nested)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-style-flat nil "Show a flat notification list." :description "single list" :inapt-if
   (## eq forge-notifications-display-style 'flat)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-display-style 'flat)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-all nil "List all notifications." :description "all" :inapt-if
   (## equal forge-notifications-selection
	     '(unread pending done))
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection
	 '(unread pending done))
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-done nil "List done notifications." :description "done" :inapt-if
   (## eq forge-notifications-selection 'done)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection 'done)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-saved nil "List saved notifications." :description "saved" :inapt-if
   (## eq forge-notifications-selection 'saved)
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection 'saved)
   (forge-refresh-buffer))
 (transient-define-suffix forge-notifications-display-inbox nil "List unread and pending notifications." :description "inbox" :inapt-if
   (## equal forge-notifications-selection
	     '(unread pending))
   :inapt-face 'forge-suffix-active
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (user-error "Not in notification buffer"))
   (setq forge-notifications-selection
	 '(unread pending))
   (forge-refresh-buffer))
 (transient-define-suffix forge-list-notifications nil "List notifications." :inapt-if-mode 'forge-notifications-mode :inapt-face 'forge-suffix-active
   (declare
    (interactive-only nil))
   (interactive)
   (forge-notifications-setup-buffer)
   (transient-setup 'forge-notifications-menu))
 (transient-augment-suffix forge-notifications-menu :transient #'transient--do-replace :if-mode 'forge-notifications-mode :inapt-if
   (## eq
       (oref transient--prefix command)
       'forge-notifications-menu)
   :inapt-face 'forge-suffix-active)
 (transient-define-prefix forge-notifications-menu nil "Control list of notifications and notification at point." :transient-suffix t :transient-non-suffix #'transient--do-call :transient-switch-frame nil :refresh-suffixes t :environment #'forge--menu-environment :column-widths forge--topic-menus-column-widths
   [:hide always
	  ("q" forge-menu-quit-list)]
   [forge--topic-menus-group
    ["Selection"
     ("I" forge-notifications-display-inbox)
     ("S" forge-notifications-display-saved)
     ("D" forge-notifications-display-done)
     ("A" forge-notifications-display-all)]]
   [forge--lists-group
    ["Display"
     ("-F" forge-notifications-style-flat)
     ("-G" forge-notifications-style-nested)
     ("-H" forge-toggle-topic-legend)]]
   [forge--topic-legend-group]
   (interactive)
   (unless
       (derived-mode-p 'forge-notifications-mode)
     (forge-list-notifications))
   (transient-setup 'forge-notifications-menu))
 (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-suffix forge-topics-filter-status-done nil "Limit topic list to done topics." :class 'forge--topics-filter-status-command :status 'done)
 (transient-define-suffix forge-topics-filter-status-pending nil "Limit topic list to pending topics." :class 'forge--topics-filter-status-command :status 'pending)
 (transient-define-suffix forge-topics-filter-status-unread nil "Limit topic list to unread topics." :class 'forge--topics-filter-status-command :status 'unread)
 (transient-define-suffix forge-topics-filter-status-inbox nil "Limit topic list to unread and pending topics." :class 'forge--topics-filter-status-command :status 'inbox)
 (transient-define-suffix forge-topics-filter-state-duplicate nil "Limit topic list to discussions and issues closed as duplicates." :class 'forge--topics-filter-state-command :state 'duplicate :description "  duplicate" :if
   (## memq
       (oref forge--buffer-topics-spec type)
       '(discussion issue)))
 (transient-define-suffix forge-topics-filter-state-outdated nil "Limit topic list to discussions closed as outdated." :class 'forge--topics-filter-state-command :state 'outdated :description "  outdated" :if
   (## eq
       (oref forge--buffer-topics-spec type)
       'discussion))
 (transient-define-suffix forge-topics-filter-state-unplanned nil "Limit topic list to issues closed as unplanned." :class 'forge--topics-filter-state-command :state 'unplanned :description "  unplanned" :if
   (## eq
       (oref forge--buffer-topics-spec type)
       'issue))
 (transient-define-suffix forge-topics-filter-state-expunged nil "Limit topic list to expunged topics.\nExpunged topics include:\n- discussions closed as outdated,\n- discussions closed as duplicates,\n- issues closed as unplanned,\n- issues closed as duplicates, and\n- pull-requests closed without merging." :class 'forge--topics-filter-state-command :state
   '(unplanned duplicate outdated rejected)
   :description
   (lambda nil
     (pcase
	 (oref forge--buffer-topics-spec type)
       ('discussion "expunged")
       ('issue "expunged")
       ('pullreq "rejected")
       ('topic "expunged"))))
 (transient-define-suffix forge-topics-filter-state-realized nil "Limit topic list to realized topics.\nRealized topics include:\n- completed discussions,\n- completed issues, and\n- merged pull-requests." :class 'forge--topics-filter-state-command :state
   '(completed merged)
   :description
   (lambda nil
     (pcase
	 (oref forge--buffer-topics-spec type)
       ('discussion "completed")
       ('issue "completed")
       ('pullreq "merged")
       ('topic "realized"))))
 (transient-define-suffix forge-topics-filter-state-open nil "Limit topic list to open topics." :class 'forge--topics-filter-state-command :state 'open)
 (transient-define-suffix forge-topics-filter-active nil "Limit topic list to active topics." :description "active" :face
   (## and
       (oref forge--buffer-topics-spec active)
       'forge-suffix-active)
   (interactive)
   (oset forge--buffer-topics-spec active
	 (not
	  (oref forge--buffer-topics-spec active)))
   (forge-refresh-buffer))
 (transient-define-suffix forge-topics-filter-pullreqs nil "List pull-requests of the current repository." :class 'forge--topics-filter-type-command :type 'pullreq :description "pull-requests")
 (transient-define-suffix forge-topics-filter-issues nil "List issues of the current repository." :class 'forge--topics-filter-type-command :type 'issue :description "issues")
 (transient-define-suffix forge-topics-filter-discussions nil "List discussions of the current repository." :class 'forge--topics-filter-type-command :type 'discussion :description "discussions")
 (transient-define-suffix forge-topics-all-types nil :class 'forge--topics-filter-type-command :type 'topic :description "topics")
 (transient-define-suffix forge-list-global-pullreqs
   (&optional repo)
   "List pull-requests across all tracked repository." :description "pull-requests"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t :type 'pullreq)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-global-issues
   (&optional repo)
   "List issues across all tracked repository." :description "issues"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t :type 'issue)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-global-topics
   (&optional repo)
   "List topics across all tracked repository." :description "topics" :inapt-if
   (lambda nil
     (and
      (eq major-mode 'forge-topics-mode)
      (oref forge--buffer-topics-spec global)))
   :inapt-face 'forge-suffix-active
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-pullreqs
   (&optional repo)
   "List pull-requests of the current repository." :description "pull-requests"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'pullreq)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-issues
   (&optional repo)
   "List issues of the current repository." :description "issues"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'issue)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-discussions
   (&optional repo)
   "List discussions of the current repository." :description "discussions"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'discussion)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-topics
   (&optional repo)
   "List topics of the current repository." :description "topics" :inapt-if
   (lambda nil
     (or
      (not
       (forge-get-repository :tracked?))
      (and
       (eq major-mode 'forge-topics-mode)
       (not
	(oref forge--buffer-topics-spec global)))))
   :inapt-face
   (lambda nil
     (if
	 (not
	  (forge-get-repository :tracked?))
	 'transient-inapt-suffix 'forge-suffix-active))
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo)
   (transient-setup 'forge-topics-menu))
 (transient-augment-suffix forge-topics-menu :transient #'transient--do-replace :if-not-derived
   '(forge-notifications-mode forge-repository-list-mode)
   :inapt-if
   (## eq
       (oref transient--prefix command)
       'forge-topics-menu)
   :inapt-face 'forge-suffix-active)
 (transient-define-prefix forge-topics-menu nil "Control list of topics displayed in the current buffer." :transient-suffix t :transient-non-suffix #'transient--do-call :transient-switch-frame nil :refresh-suffixes t :environment #'forge--menu-environment :column-widths forge--topic-menus-column-widths
   [:hide always
	  ("q" forge-menu-quit-list)]
   [forge--topic-menus-group
    ["State"
     ("a" forge-topics-filter-active)
     ("o" forge-topics-filter-state-open)
     ("r" forge-topics-filter-state-realized)
     ("e" forge-topics-filter-state-expunged)
     ("U" forge-topics-filter-state-unplanned)
     ("O" forge-topics-filter-state-outdated)
     ("D" forge-topics-filter-state-duplicate)]
    ["Status"
     ("i" forge-topics-filter-status-inbox)
     ("u" forge-topics-filter-status-unread)
     ("p" forge-topics-filter-status-pending)
     ("d" forge-topics-filter-status-done)]
    ["Type"
     ("t t" forge-topics-all-types)
     ("t d" forge-topics-filter-discussions)
     ("t i" forge-topics-filter-issues)
     ("t p" forge-topics-filter-pullreqs)]]
   [forge--lists-group
    ["Filter                                      "
     ("-c" forge-topics-filter-category)
     ("-m" forge-topics-filter-milestone)
     ("-l" forge-topics-filter-labels)
     ("-x" forge-topics-filter-marks)
     ("-A" forge-topics-filter-author)
     ("-a" forge-topics-filter-assignee)
     ("-r" forge-topics-filter-reviewer)
     ("-s" forge-topics-filter-saved)]
    ["Display"
     ("-O" forge-topics-set-order)
     ("-L" forge-topics-set-limit)
     ("-F" forge-topics-ungroup)
     ("-G" forge-topics-group)
     ("-S" forge-toggle-display-in-status-buffer)
     ("-H" forge-toggle-topic-legend)]]
   [forge--topic-legend-group]
   (interactive)
   (cond
    ((derived-mode-p 'forge-topics-mode 'magit-status-mode)
     (transient-setup 'forge-topics-menu))
    ((derived-mode-p 'forge-notifications-mode)
     (setq this-command 'forge-notifications-menu)
     (transient-setup 'forge-notifications-menu))
    ((forge-list-topics))))
 (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
       (seq-every-p #'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
       (seq-every-p #'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 forge-topics-filter-active nil "Limit topic list to active topics." :description "active" :face
   (## and
       (oref forge--buffer-topics-spec active)
       'forge-suffix-active)
   (interactive)
   (oset forge--buffer-topics-spec active
	 (not
	  (oref forge--buffer-topics-spec active)))
   (forge-refresh-buffer))
 (transient-define-suffix forge-topics-filter-pullreqs nil "List pull-requests of the current repository." :class 'forge--topics-filter-type-command :type 'pullreq :description "pull-requests")
 (transient-define-suffix forge-topics-filter-issues nil "List issues of the current repository." :class 'forge--topics-filter-type-command :type 'issue :description "issues")
 (transient-define-suffix forge-topics-filter-discussions nil "List discussions of the current repository." :class 'forge--topics-filter-type-command :type 'discussion :description "discussions")
 (transient-define-suffix forge-topics-all-types nil :class 'forge--topics-filter-type-command :type 'topic :description "topics")
 (transient-define-suffix forge-list-global-pullreqs
   (&optional repo)
   "List pull-requests across all tracked repository." :description "pull-requests"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t :type 'pullreq)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-global-issues
   (&optional repo)
   "List issues across all tracked repository." :description "issues"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t :type 'issue)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-global-topics
   (&optional repo)
   "List topics across all tracked repository." :description "topics" :inapt-if
   (lambda nil
     (and
      (eq major-mode 'forge-topics-mode)
      (oref forge--buffer-topics-spec global)))
   :inapt-face 'forge-suffix-active
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-pullreqs
   (&optional repo)
   "List pull-requests of the current repository." :description "pull-requests"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'pullreq)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-issues
   (&optional repo)
   "List issues of the current repository." :description "issues"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'issue)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-discussions
   (&optional repo)
   "List discussions of the current repository." :description "discussions"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'discussion)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-topics
   (&optional repo)
   "List topics of the current repository." :description "topics" :inapt-if
   (lambda nil
     (or
      (not
       (forge-get-repository :tracked?))
      (and
       (eq major-mode 'forge-topics-mode)
       (not
	(oref forge--buffer-topics-spec global)))))
   :inapt-face
   (lambda nil
     (if
	 (not
	  (forge-get-repository :tracked?))
	 'transient-inapt-suffix 'forge-suffix-active))
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo)
   (transient-setup 'forge-topics-menu))
 (transient-augment-suffix forge-topics-menu :transient #'transient--do-replace :if-not-derived
   '(forge-notifications-mode forge-repository-list-mode)
   :inapt-if
   (## eq
       (oref transient--prefix command)
       'forge-topics-menu)
   :inapt-face 'forge-suffix-active)
 (transient-define-prefix forge-topics-menu nil "Control list of topics displayed in the current buffer." :transient-suffix t :transient-non-suffix #'transient--do-call :transient-switch-frame nil :refresh-suffixes t :environment #'forge--menu-environment :column-widths forge--topic-menus-column-widths
   [:hide always
	  ("q" forge-menu-quit-list)]
   [forge--topic-menus-group
    ["State"
     ("a" forge-topics-filter-active)
     ("o" forge-topics-filter-state-open)
     ("r" forge-topics-filter-state-realized)
     ("e" forge-topics-filter-state-expunged)
     ("U" forge-topics-filter-state-unplanned)
     ("O" forge-topics-filter-state-outdated)
     ("D" forge-topics-filter-state-duplicate)]
    ["Status"
     ("i" forge-topics-filter-status-inbox)
     ("u" forge-topics-filter-status-unread)
     ("p" forge-topics-filter-status-pending)
     ("d" forge-topics-filter-status-done)]
    ["Type"
     ("t t" forge-topics-all-types)
     ("t d" forge-topics-filter-discussions)
     ("t i" forge-topics-filter-issues)
     ("t p" forge-topics-filter-pullreqs)]]
   [forge--lists-group
    ["Filter                                      "
     ("-c" forge-topics-filter-category)
     ("-m" forge-topics-filter-milestone)
     ("-l" forge-topics-filter-labels)
     ("-x" forge-topics-filter-marks)
     ("-A" forge-topics-filter-author)
     ("-a" forge-topics-filter-assignee)
     ("-r" forge-topics-filter-reviewer)
     ("-s" forge-topics-filter-saved)]
    ["Display"
     ("-O" forge-topics-set-order)
     ("-L" forge-topics-set-limit)
     ("-F" forge-topics-ungroup)
     ("-G" forge-topics-group)
     ("-S" forge-toggle-display-in-status-buffer)
     ("-H" forge-toggle-topic-legend)]]
   [forge--topic-legend-group]
   (interactive)
   (cond
    ((derived-mode-p 'forge-topics-mode 'magit-status-mode)
     (transient-setup 'forge-topics-menu))
    ((derived-mode-p 'forge-notifications-mode)
     (setq this-command 'forge-notifications-menu)
     (transient-setup 'forge-notifications-menu))
    ((forge-list-topics))))
 (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
       (seq-every-p #'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
       (seq-every-p #'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 forge-list-global-pullreqs
   (&optional repo)
   "List pull-requests across all tracked repository." :description "pull-requests"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t :type 'pullreq)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-global-issues
   (&optional repo)
   "List issues across all tracked repository." :description "issues"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t :type 'issue)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-global-topics
   (&optional repo)
   "List topics across all tracked repository." :description "topics" :inapt-if
   (lambda nil
     (and
      (eq major-mode 'forge-topics-mode)
      (oref forge--buffer-topics-spec global)))
   :inapt-face 'forge-suffix-active
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :global t)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-pullreqs
   (&optional repo)
   "List pull-requests of the current repository." :description "pull-requests"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'pullreq)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-issues
   (&optional repo)
   "List issues of the current repository." :description "issues"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'issue)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-discussions
   (&optional repo)
   "List discussions of the current repository." :description "discussions"
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo nil :type 'discussion)
   (transient-setup 'forge-topics-menu))
 (transient-define-suffix forge-list-topics
   (&optional repo)
   "List topics of the current repository." :description "topics" :inapt-if
   (lambda nil
     (or
      (not
       (forge-get-repository :tracked?))
      (and
       (eq major-mode 'forge-topics-mode)
       (not
	(oref forge--buffer-topics-spec global)))))
   :inapt-face
   (lambda nil
     (if
	 (not
	  (forge-get-repository :tracked?))
	 'transient-inapt-suffix 'forge-suffix-active))
   (declare
    (interactive-only nil))
   (interactive)
   (forge-topics-setup-buffer repo)
   (transient-setup 'forge-topics-menu))
 (transient-augment-suffix forge-topics-menu :transient #'transient--do-replace :if-not-derived
   '(forge-notifications-mode forge-repository-list-mode)
   :inapt-if
   (## eq
       (oref transient--prefix command)
       'forge-topics-menu)
   :inapt-face 'forge-suffix-active)
 (transient-define-prefix forge-topics-menu nil "Control list of topics displayed in the current buffer." :transient-suffix t :transient-non-suffix #'transient--do-call :transient-switch-frame nil :refresh-suffixes t :environment #'forge--menu-environment :column-widths forge--topic-menus-column-widths
   [:hide always
	  ("q" forge-menu-quit-list)]
   [forge--topic-menus-group
    ["State"
     ("a" forge-topics-filter-active)
     ("o" forge-topics-filter-state-open)
     ("r" forge-topics-filter-state-realized)
     ("e" forge-topics-filter-state-expunged)
     ("U" forge-topics-filter-state-unplanned)
     ("O" forge-topics-filter-state-outdated)
     ("D" forge-topics-filter-state-duplicate)]
    ["Status"
     ("i" forge-topics-filter-status-inbox)
     ("u" forge-topics-filter-status-unread)
     ("p" forge-topics-filter-status-pending)
     ("d" forge-topics-filter-status-done)]
    ["Type"
     ("t t" forge-topics-all-types)
     ("t d" forge-topics-filter-discussions)
     ("t i" forge-topics-filter-issues)
     ("t p" forge-topics-filter-pullreqs)]]
   [forge--lists-group
    ["Filter                                      "
     ("-c" forge-topics-filter-category)
     ("-m" forge-topics-filter-milestone)
     ("-l" forge-topics-filter-labels)
     ("-x" forge-topics-filter-marks)
     ("-A" forge-topics-filter-author)
     ("-a" forge-topics-filter-assignee)
     ("-r" forge-topics-filter-reviewer)
     ("-s" forge-topics-filter-saved)]
    ["Display"
     ("-O" forge-topics-set-order)
     ("-L" forge-topics-set-limit)
     ("-F" forge-topics-ungroup)
     ("-G" forge-topics-group)
     ("-S" forge-toggle-display-in-status-buffer)
     ("-H" forge-toggle-topic-legend)]]
   [forge--topic-legend-group]
   (interactive)
   (cond
    ((derived-mode-p 'forge-topics-mode 'magit-status-mode)
     (transient-setup 'forge-topics-menu))
    ((derived-mode-p 'forge-notifications-mode)
     (setq this-command 'forge-notifications-menu)
     (transient-setup 'forge-notifications-menu))
    ((forge-list-topics))))
 (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" "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" "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"
    (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)]
    [""
     ("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" "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" "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"
    (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)]
    [""
     ("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 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
       (seq-every-p #'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
       (seq-every-p #'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.")