;ELC   
;;; Compiled
;;; in Emacs version 29.3
;;; with all optimizations.



(byte-code "\300\301!\210\300\302!\210\300\303!\210\304\305\306\307!\"\210\304\310\311\307!\"\210\304\312\310\"\210\313\312\314\315#\210\316\307\317\310#\320\307\321\322\323$\207" [require forge forge-post forge-topic defalias forge-discussion-p eieio-make-class-predicate forge-discussion forge-discussion--eieio-childp eieio-make-child-predicate forge-discussion-child-p make-obsolete "use (cl-typep ... 'forge-discussion) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (forge-topic) ((closql-table :initform 'discussion) (closql-primary-key :initform 'id) (closql-order-by :initform [(desc number)]) (closql-foreign-key :initform 'repository) (closql-class-prefix :initform "forge-") (id :initarg :id) (repository :initarg :repository) (number :initarg :number) (answer :initarg :answer) (state :initarg :state) (author :initarg :author) (title :initarg :title) (created :initarg :created) (updated :initarg :updated) (closed :initarg :closed) (status :initarg :status :initform nil) (locked-p :initarg :locked-p :initform nil) (category :initarg :category) (body :initarg :body) (project-cards) (edits) (labels :closql-tables (discussion-label label)) (participants) (posts :closql-class forge-discussion-post) (reactions) (timeline) (marks :closql-tables (discussion-mark mark)) (note :initarg :note :initform nil) (their-id :initarg :their-id) (slug :initarg :slug) (saved-p :initarg :saved-p :initform nil)) nil] 6)#@73 Create a new object of class type `forge-discussion'.

(fn &rest SLOTS)
(defalias 'forge-discussion #[128 "\300\301\302#\207" [apply make-instance forge-discussion] 5 (#$ . 1539)])
(byte-code "\300\301\302\303#\300\207" [function-put forge-discussion compiler-macro forge-discussion--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'forge-discussion--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 1845)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias forge-discussion-post-p eieio-make-class-predicate forge-discussion-post forge-discussion-post--eieio-childp eieio-make-child-predicate forge-discussion-post-child-p make-obsolete "use (cl-typep ... 'forge-discussion-post) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (forge-post) ((closql-table :initform 'discussion-post) (closql-primary-key :initform 'id) (closql-order-by :initform [(asc number)]) (closql-foreign-key :initform 'discussion) (closql-class-prefix :initform "forge-discussion-") (id :initarg :id) (their-id :initarg :their-id) (number :initarg :number) (discussion :initarg :discussion) (author :initarg :author) (created :initarg :created) (updated :initarg :updated) (body :initarg :body) (edits) (reactions) (replies :closql-class forge-discussion-reply)) nil] 6)#@78 Create a new object of class type `forge-discussion-post'.

(fn &rest SLOTS)
(defalias 'forge-discussion-post #[128 "\300\301\302#\207" [apply make-instance forge-discussion-post] 5 (#$ . 3062)])
(byte-code "\300\301\302\303#\300\207" [function-put forge-discussion-post compiler-macro forge-discussion-post--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'forge-discussion-post--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 3393)])
(byte-code "\300\301\302\303!\"\210\300\304\305\303!\"\210\300\306\304\"\210\307\306\310\311#\210\312\303\313\304#\314\303\315\316\317$\207" [defalias forge-discussion-reply-p eieio-make-class-predicate forge-discussion-reply forge-discussion-reply--eieio-childp eieio-make-child-predicate forge-discussion-reply-child-p make-obsolete "use (cl-typep ... 'forge-discussion-reply) instead" "25.1" define-symbol-prop cl-deftype-satisfies eieio-defclass-internal (forge-post) ((closql-table :initform 'discussion-reply) (closql-primary-key :initform 'id) (closql-order-by :initform [(asc number)]) (closql-foreign-key :initform 'post) (closql-class-prefix :initform "forge-discussion-") (id :initarg :id) (their-id :initarg :their-id) (number :initarg :number) (post :initarg :post) (discussion :initarg :discussion) (author :initarg :author) (created :initarg :created) (updated :initarg :updated) (body :initarg :body) (edits) (reactions)) nil] 6)#@79 Create a new object of class type `forge-discussion-reply'.

(fn &rest SLOTS)
(defalias 'forge-discussion-reply #[128 "\300\301\302#\207" [apply make-instance forge-discussion-reply] 5 (#$ . 4590)])
(byte-code "\300\301\302\303#\300\207" [function-put forge-discussion-reply compiler-macro forge-discussion-reply--anon-cmacro] 4)#@26 

(fn WHOLE &rest SLOTS)
(defalias 'forge-discussion-reply--anon-cmacro #[385 "\211@;\204 \207\300\301\302@@#@\303@DABB\304\211@%\207" [macroexp-warn-and-return format "Obsolete name arg %S to constructor %S" identity nil] 8 (#$ . 4926)])
(byte-code "\300\301\302\303\302\304%\210\300\301\302\305\302\306%\210\300\307\302\310\302\311%\210\300\307\302\312\302\313%\210\300\314\302\315\302\316%\210\300\314\302\317\302\320%\210\300\314\302\321\302\322%\210\300\314\302\323\302\324%\210\300\314\302\325\302\326%\210\300\314\302\327\302\330%\207" [cl-generic-define-method forge-get-repository nil ((post forge-discussion-post)) #[257 "\300\301!!\207" [forge-get-repository forge-get-discussion] 4 "\n\n(fn POST)"] ((post forge-discussion-reply)) #[257 "\300\301!!\207" [forge-get-repository forge-get-discussion] 4 "\n\n(fn POST)"] forge-get-topic ((post forge-discussion-post)) #[257 "\300!\207" [forge-get-discussion] 3 "\n\n(fn POST)"] ((post forge-discussion-reply)) #[257 "\300!\207" [forge-get-discussion] 3 "\n\n(fn POST)"] forge-get-discussion ((disc forge-discussion)) #[257 "\207" [] 2 "\n\n(fn DISC)"] ((repo forge-repository) number) #[514 "\211\247\204 \300\301\302C\302$\210\303\304 \305\306#\306#\207" [cl--assertion-failed (numberp number) nil closql-get forge-db forge--object-id forge-discussion] 8 "\n\n(fn REPO NUMBER)"] ((number integer)) #[257 "\300\301\302\303#\211\205 \304\"\207" [forge-get-repository :tracked nil notatpt forge-get-discussion] 5 "\n\n(fn NUMBER)"] ((id string)) #[257 "\300\301 \302#\207" [closql-get forge-db forge-discussion] 5 "\n\n(fn ID)"] ((post forge-discussion-post)) #[257 "\300\301 \302\303\"\304#\207" [closql-get forge-db eieio-oref discussion forge-discussion] 6 "\n\n(fn POST)"] ((post forge-discussion-reply)) #[257 "\300\301 \302\303\"\304#\207" [closql-get forge-db eieio-oref discussion forge-discussion] 6 "\n\n(fn POST)"]] 6)#@167 Return the discussion or issue at point or being visited.
If there is no such discussion or issue and DEMAND is non-nil, then
signal an error.

(fn &optional DEMAND)
(defalias 'forge-current-chatter #[256 "\301 \206! \302 \206! \303!\204 \304!\203 \206! \211\205! \305\306!\207" [forge-buffer-topic forge-discussion-at-point forge-issue-at-point forge-discussion-p forge-issue-p user-error "No current discussion or issue"] 3 (#$ . 6840)])#@149 Return the discussion at point or being visited.
If there is no such discussion and DEMAND is non-nil, then signal
an error.

(fn &optional DEMAND)
(defalias 'forge-current-discussion #[256 "\301 \206 \302!\203 \206 \211\205 \303\304!\207" [forge-buffer-topic forge-discussion-at-point forge-discussion-p user-error "No current discussion"] 3 (#$ . 7291)])#@132 Return the discussion at point.
If there is no such discussion and DEMAND is non-nil, then signal
an error.

(fn &optional DEMAND)
(defalias 'forge-discussion-at-point #[256 "\300\301!\206 \302\303!\206 \211\205 \304\305!\207" [thing-at-point forge-discussion magit-section-value-if discussion user-error "No discussion at point"] 3 (#$ . 7660)])
(put 'forge-discussion 'thing-at-point 'forge-thingatpt--discussion)
(defalias 'forge-thingatpt--discussion #[0 "\300\211\301\302!\205 \303\304\305!!\262\306 \211\262\205 \307\"\207" [nil thing-at-point-looking-at "#\\([0-9]+\\)\\_>" string-to-number match-string 1 forge--repo-for-thingatpt forge-get-discussion] 5])#@463 Read an active discussion with completion using PROMPT.

Open, unread and pending discussions are considered active.
Default to the current discussion, even if it isn't active.

\<forge-read-topic-minibuffer-map>While completion is in progress, \[forge-read-topic-lift-limit] lifts the limit, extending
the completion candidates to include all discussions.

If `forge-limit-topic-choices' is nil, then all candidates
can be selected from the start.

(fn PROMPT)
(defalias 'forge-read-discussion #[257 "\300\301\302\303\304\305\306$\302\303\304\305\307\310\307\311\307&$\207" [forge--read-topic forge-current-discussion forge--topics-spec :type discussion :active t nil :state :limit] 14 (#$ . 8340)])#@31 

(fn &optional TOPIC PROMPT)
(defalias 'forge-read-topic-category #[512 "\300\206 \301\302\303\304\305\206 \306!\307\"\"\310\311\205 \312!%\207" [magit-completing-read "Category" mapcar caddr eieio-oref forge-get-repository :tracked discussion-categories nil t forge--format-topic-category] 9 (#$ . 9048)])#@14 

(fn TOPIC)
(defalias 'forge--select-discussion-answer #[257 "\300\301 \211\262\203, \302\301 !\203 \303\304!\207\305\306\"\211\205$ \305\307\"\310!\232\262\203+ \300\207\207\303\311!\207" [nil forge-post-at-point forge-discussion-p user-error "Cannot pick the question as its own answer" eieio-oref answer their-id forge--their-id "Point must be on an reply to mark it as the answer"] 6 (#$ . 9371)])
(defalias 'forge--select-discussion-reply-target #[0 "\301\302\303\"\211\262\203J \304\305B\306 \307!\203  \310\311 !!\2023 \312!\203, !\2023 \313!\2053 \314\"B\315\316\317\301\320\301\211	&\"A\207\207" [forge-buffer-topic nil eieio-oref posts #[257 "\300\301\"\302 \303\304\"\216\305\306\307\310\"\203 \311\211\224O\202 \")B\207" [eieio-oref body match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data t] 3] format "Reply to answer %S" string-match "\n" 0] 8 "\n\n(fn ANSWER)"] "Add new top-level answer" forge-post-at-point forge-discussion-reply--eieio-childp magit-section-parent-value magit-current-section forge-discussion-post--eieio-childp forge-discussion--eieio-childp mapcar assoc magit-completing-read "Reply to: " t] 15])
(defvar forge-discussions-section-map (define-keymap "<remap> <magit-browse-thing>" 'forge-browse-discussions "<remap> <magit-visit-thing>" 'forge-list-discussions "<remap> <forge--list-menu>" 'forge-topics-menu "<remap> <forge--item-menu>" 'forge-topic-menu "C-c C-n" 'forge-create-discussion))
(defvar forge-discussion-section-map (define-keymap :parent forge-common-map "<remap> <magit-visit-thing>" 'forge-visit-this-topic "<remap> <forge--list-menu>" 'forge-topics-menu "<remap> <forge--item-menu>" 'forge-topic-menu))#@234 Insert a list of discussions, according to `forge--buffer-topics-spec'.
Optional SPEC can be used to override that filtering specification,
and optional HEADING to change the section heading.

(fn &optional (SPEC nil SSPEC) HEADING)
(defalias 'forge-insert-discussions #[128 "\211\205 \300\211A\262\242\211A\262\242\203  \301\302\303\304G\\D\"\210\305\300!\211\205* \306\307!\211\2052 \310\311\"\211\205@ \203> \202@ \312 \211\205J \310\313\"\314>\211\205b \315\313\316#\210\317\320\206\\ \321\322\"#\207" [t signal wrong-number-of-arguments forge-insert-discussions 2 forge-db forge-get-repository :tracked? eieio-oref discussions-p forge--clone-buffer-topics-spec type (topic discussion) eieio-oset discussion forge--insert-topics discussions "Discussions" forge--list-topics] 15 (#$ . 11085)])
(provide 'forge-discussion)
