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



(byte-code "\300\301!\210\302\303\304\305\306DD\307\310\311\312\313\314\315&	\210\316\317\320\321\322\323\312\324&\210\302\325\304\305\326DD\327\310\330\312\317\314\331\332\333\334\335C&\210\302\336\304\305\337DD\340\310\341\312\317\314\342&	\210\302\343\304\305\344DD\345\310\346\312\317\314\347&	\210\302\350\304\305\351DD\352\310\353\312\317\314\354&	\207" [require magit-core custom-declare-variable magit-repository-directories funcall function #[0 "\300\207" [nil] 1 #1=""] "List of directories that are or contain Git repositories.\n\nEach element has the form (DIRECTORY . DEPTH).  DIRECTORY has\nto be a directory or a directory file-name, a string.  DEPTH,\nan integer, specifies the maximum depth to look for Git\nrepositories.  If it is 0, then only add DIRECTORY itself.\n\nThis option controls which repositories are being listed by\n`magit-list-repositories'.  It also affects `magit-status'\n(which see) in potentially surprising ways." :package-version (magit . "3.0.0") :group magit-essentials :type (repeat (cons directory (integer :tag "Depth"))) custom-declare-group magit-repolist nil "List repositories in a buffer." :link (info-link "(magit)Repository List") magit-modes magit-repolist-mode-hook #[0 "\300C\207" [hl-line-mode] 1 #1#] "Hook run after entering Magit-Repolist mode." (magit . "2.9.0") hook :get magit-hook-custom-get :options hl-line-mode magit-repolist-columns #[0 "\300\301\302\303BBB\304\301\305\306BBB\307\310\311\312BBB\313\310\314\315BBB\316\317\320\321BBB\257\207" ["Name" 25 magit-repolist-column-ident (nil) "Version" magit-repolist-column-version (((:sort magit-repolist-version<))) "B<U" 3 magit-repolist-column-unpulled-from-upstream (((:right-align t) (:sort <))) "B>U" magit-repolist-column-unpushed-to-upstream (((:right-align t) (:sort <))) "Path" 99 magit-repolist-column-path (nil)] 8 #1#] "List of columns displayed by `magit-list-repositories'.\n\nEach element has the form (HEADER WIDTH FORMAT PROPS).\n\nHEADER is the string displayed in the header.  WIDTH is the width\nof the column.  FORMAT is a function that is called with one\nargument, the repository identification (usually its basename),\nand with `default-directory' bound to the toplevel of its working\ntree.  It has to return a string to be inserted or nil.  PROPS is\nan alist that supports the keys `:right-align', `:pad-right' and\n`:sort'.\n\nThe `:sort' function has a weird interface described in the\ndocstring of `tabulated-list--get-sort'.  Alternatively `<' and\n`magit-repolist-version<' can be used as those functions are\nautomatically replaced with functions that satisfy the interface.\nSet `:sort' to nil to inhibit sorting; if unspecified, then the\ncolumn is sortable using the default sorter.\n\nYou may wish to display a range of numeric columns using just one\ncharacter per column and without any padding between columns, in\nwhich case you should use an appropriate HEADER, set WIDTH to 1,\nand set `:pad-right' to 0.  \"+\" is substituted for numbers higher\nthan 9." (magit . "2.12.0") (repeat (list :tag "Column" (string :tag "Header Label") (integer :tag "Column Width") (function :tag "Inserter Function") (repeat :tag "Properties" (list (choice :tag "Property" (const :right-align) (const :pad-right) (const :sort) (symbol)) (sexp :tag "Value"))))) magit-repolist-column-flag-alist #[0 "\300\301B\302\303B\304\305BE\207" [magit-untracked-files "N" magit-unstaged-files "U" magit-staged-files "S"] 4 #1#] "Association list of predicates and flags for `magit-repolist-column-flag'.\n\nEach element is of the form (FUNCTION . FLAG).  Each FUNCTION is\ncalled with no arguments, with `default-directory' bound to the\ntop level of a repository working tree, until one of them returns\na non-nil value.  FLAG corresponding to that function is returned\nas the value of `magit-repolist-column-flag'." (magit . "3.0.0") (alist :key-type (function :tag "Predicate Function") :value-type (string :tag "Flag")) magit-repolist-sort-key #[0 "\300\207" [("Path")] 1 #1#] "Initial sort key for buffer created by `magit-list-repositories'.\nIf nil, no additional sorting is performed.  Otherwise, this\nshould be a cons cell (NAME . FLIP).  NAME is a string matching\none of the column names in `magit-repolist-columns'.  FLIP, if\nnon-nil, means to invert the resulting sort." (magit . "3.2.0") (choice (const nil) (cons (string :tag "Column name") (boolean :tag "Flip order")))] 14)#@125 Display a list of repositories.

Use the option `magit-repository-directories' to control which
repositories are displayed.
(defalias 'magit-list-repositories #[0 "\300\301\302!!\207" [magit-repolist-setup default-value magit-repolist-columns] 3 (#$ . 4509) nil])#@69 Show the status for the repository at point.

(fn &optional BUTTON)
(defalias 'magit-repolist-status #[256 "\300\211\301\206 `\302\"\262\211\262\203 \303\304!!\207\305\306!\207" [nil get-text-property tabulated-list-id magit-status-setup-buffer expand-file-name user-error "There is no repository at point"] 6 (#$ . 4778) nil])#@46 Mark a repository and move to the next line.
(defalias 'magit-repolist-mark #[0 "\300 \210\301\302\303\"\207" [magit-repolist--ensure-padding tabulated-list-put-tag "*" t] 3 (#$ . 5117) nil])#@48 Unmark a repository and move to the next line.
(defalias 'magit-repolist-unmark #[0 "\300\301\302\"\207" [tabulated-list-put-tag " " t] 3 (#$ . 5314) nil])#@54 Fetch all marked or listed repositories.

(fn REPOS)
(defalias 'magit-repolist-fetch #[257 "\300\301!\210\302\303\304#\207" [run-hooks magit-credential-hook magit-repolist--mapc #[0 "\300\301\302\"\207" [magit-run-git "remote" "update"] 3] "Fetching in %s..."] 5 (#$ . 5475) (byte-code "\300\301!C\207" [magit-repolist--get-repos 42] 2)])#@68 Find a file in all marked or listed repositories.

(fn REPOS FILE)
(defalias 'magit-repolist-find-file-other-frame #[514 "\300\301\302\"\"\207" [magit-repolist--mapc make-closure #[0 "\301\300!\207" [V0 find-file-other-frame] 2]] 6 (#$ . 5820) (byte-code "\300\301!\302\303!D\207" [magit-repolist--get-repos 42 read-string "Find file in repositories: "] 3)])#@69 Set `tabulated-list-padding' to 2, unless that is already non-zero.
(defalias 'magit-repolist--ensure-padding #[0 "\301U\205 \302\303 \210\304\305!\207" [tabulated-list-padding 0 2 tabulated-list-init-header tabulated-list-print t] 2 (#$ . 6186)])#@249 Return marked repositories or `all' if none are marked.
If optional CHAR is non-nil, then only return repositories
marked with that character.  If no repositories are marked
then ask whether to act on all repositories instead.

(fn &optional CHAR)
(defalias 'magit-repolist--get-repos #[256 "\300!\206 \301\302\303\"\203 \304\207\305\306!\207" [magit-repolist--marked-repos magit-confirm repolist-all "Nothing selected.  Act on ALL displayed repositories" all user-error "Abort"] 4 (#$ . 6443)])#@137 Return marked repositories.
If optional CHAR is non-nil, then only return repositories
marked with that character.

(fn &optional CHAR)
(defalias 'magit-repolist--marked-repos #[256 "\300\211\212eb\210m\204G \300f\262\301=\204A \2030 =\203A \300\302\206% `\303\"\262B\262\202A \300\302\2068 `\303\"\262BB\262\300y\210\202 )\207" [nil 32 get-text-property tabulated-list-id] 8 (#$ . 6948)])#@406 Apply FN to each directory in REPOS for side effects only.
If REPOS is the symbol `all', then call FN for all displayed
repositories.  When FN is called, `default-directory' is bound to
the top-level directory of the current repository.  If optional
MSG is non-nil then that is displayed around each call to FN.
If it contains "%s" then the directory is substituted for that.

(fn FN REPOS &optional MSG)
(defalias 'magit-repolist--mapc #[770 "\301=\203+ \302\262\212eb\210m\204& \302\303\206 `\304\"\262B\262\302y\210\202 )\237\262G\305\211\205p \211@\306\307\"!\203d \310\311T\211\262#\310\"P\312!\210 \210\312\313P!\266\202h  \210)A\266\202\2020 \207" [default-directory all nil get-text-property tabulated-list-id 0 file-name-as-directory expand-file-name format "(%s/%s) " message "done"] 12 (#$ . 7359)])#@47 Local keymap for Magit-Repolist mode buffers.
(defvar magit-repolist-mode-map (define-keymap :parent tabulated-list-mode-map "C-m" 'magit-repolist-status "m" 'magit-repolist-mark "u" 'magit-repolist-unmark "f" 'magit-repolist-fetch "5" 'magit-repolist-find-file-other-frame "<remap> <dired-jump>" 'magit-dired-jump) (#$ . 8208))
(defvar magit-repolist-mode-hook nil)
(byte-code "\300\301N\204\f \302\300\301\303#\210\304\305!\204 \302\305\306\307#\210\300\207" [magit-repolist-mode-hook variable-documentation put "Hook run after entering Repos mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" boundp magit-repolist-mode-map definition-name magit-repolist-mode] 4)
(defvar magit-repolist-mode-map (make-sparse-keymap))
(byte-code "\301\302N\204 \303\301\302\304\305!#\210\306\307!\204* \303\307\310\311#\210\312\307\306\307!\203& \313\202( \314 \"\210\307\302N\2048 \303\307\302\304\315!#\210\306\300!\204X \303\300\310\311#\210\312\300\306\300!\203P \313\202V \316\300\313\"\210\"\210\300\302N\204f \303\300\302\304\317!#\210\303\311\320\321#\210\303\311\322\323#\207" [magit-repolist-mode-abbrev-table magit-repolist-mode-map variable-documentation put purecopy "Keymap for `magit-repolist-mode'." boundp magit-repolist-mode-syntax-table definition-name magit-repolist-mode defvar-1 nil make-syntax-table "Syntax table for `magit-repolist-mode'." define-abbrev-table "Abbrev table for `magit-repolist-mode'." derived-mode-parent tabulated-list-mode custom-mode-group magit-repolist] 5)#@269 Major mode for browsing a list of Git repositories.

In addition to any hooks its parent mode `tabulated-list-mode' might
have run, this mode runs the hook `magit-repolist-mode-hook', as the
final or penultimate step during initialization.

\{magit-repolist-mode-map}
(defalias 'magit-repolist-mode #[0 "\306\300!\210\307\310 \210\311\312\310\313N\203 \314\311\313\310\313N#\210\315!\204' \316\317 \"\210\320\f!\211\2035 \211\321 =\203; \322\f\323 \"\210\210\324\325\"\204R \"=\204R \326\325\"C#\210\327!\210\330\f!\210\"\306\331!\210\332\333#\306\334!\210\335\307D\336$\337%)\340\341!\207" [delay-mode-hooks major-mode mode-name magit-repolist-mode-map magit-repolist-mode-syntax-table magit-repolist-mode-abbrev-table make-local-variable t tabulated-list-mode magit-repolist-mode "Repos" mode-class put keymap-parent set-keymap-parent current-local-map char-table-parent standard-syntax-table set-char-table-parent syntax-table abbrev-table-get :parents abbrev-table-put use-local-map set-syntax-table x-stretch-cursor nil 0 tabulated-list-revert-hook magit-repolist-refresh magit-repolist--imenu-prev-index-position tabulated-list-get-id run-mode-hooks magit-repolist-mode-hook local-abbrev-table tabulated-list-padding imenu-prev-index-position-function imenu-extract-index-name-function] 5 (#$ . 9790)])#@16 

(fn COLUMNS)
(defalias 'magit-repolist-setup #[257 "\204	 \303\304\305\"\210r\306\307!q\210\310\311!\312 \210\313\302!\210\211\314 \210\315 \210\316p!)\207" [magit-repository-directories default-directory magit-repolist-columns user-error "You need to customize `magit-repository-directories' %s" "before you can list repositories" get-buffer-create "*Magit Repositories*" expand-file-name "~" magit-repolist-mode make-local-variable magit-repolist-setup-1 magit-repolist-refresh switch-to-buffer] 4 (#$ . 11125)])
(defalias 'magit-repolist-setup-1 #[0 "\204 	\210	\242	\243\304\n\"@\206 \n@@B\266\202\305\306\307\n\"!\211\207" [tabulated-list-sort-key magit-repolist-sort-key magit-repolist-columns tabulated-list-format assoc vconcat seq-map-indexed #[514 "\242\243\211\242\243\211\242\243\211\242\243\300\301\236\211A@\n	\302\267\2023 \303\304#\202D \303\305#\202D \203; \202D \203C \300\202D \306E\307!\244\207" [nil :sort #s(hash-table size 2 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (< 33 magit-repolist-version< 42)) magit-repolist-make-sorter string-to-number identity t flatten-tree] 19 "\n\n(fn COLUMN IDX)"]] 5])
(defalias 'magit-repolist-refresh #[0 "\301\302\303\301\304\305 \"!\"\306\307!\210\310 \210\311\312!\210\306\313!\207" [tabulated-list-entries mapcar magit-repolist--format-entry magit-list-repos-uniquify #[257 "\300\301!!B\207" [file-name-nondirectory directory-file-name] 4 "\n\n(fn %)"] magit-list-repos message "Listing repositories..." tabulated-list-init-header tabulated-list-print t "Listing repositories...done"] 6])#@14 

(fn ENTRY)
(defalias 'magit-repolist--format-entry #[257 "\211\242\243\211\302\303\304\305\"	\"!)D\207" [default-directory magit-repolist-columns vconcat mapcar make-closure #[257 "\211\242\243\211\242\243\211\242\243\211\242\243\301\300D\302\nD\303	DBBB!\206% \304\207" [V0 :id :title :width ""] 14 "\n\n(fn ARG0)"]] 11 (#$ . 12738)])
(defalias 'magit-repolist--imenu-prev-index-position #[0 "o?\205 \300y\207" [-1] 1])#@433 Return a function suitable as a sorter for tabulated lists.
See `tabulated-list--get-sorter'.  Given a more reasonable API
this would not be necessary and one could just use SORT-PREDICATE
directly.  CONVERT-CELL can be used to turn the cell value, which
is always a string back into, e.g., a number.  COLUMN-IDX has to
be the index of the column that uses the returned sorter function.

(fn SORT-PREDICATE CONVERT-CELL COLUMN-IDX)
(defalias 'magit-repolist-make-sorter #[771 "\300\301$\207" [make-closure #[514 "\302\301A@\300H!\301A@\300H!\"\207" [V0 V1 V2] 7 "\n\n(fn A B)"]] 8 (#$ . 13181)])#@92 Insert the identification of the repository.
Usually this is just its basename.

(fn SPEC)
(defalias 'magit-repolist-column-ident #[257 "\300\236A@\207" [:id] 3 (#$ . 13788)])#@53 Insert the absolute path of the repository.

(fn _)
(defalias 'magit-repolist-column-path #[257 "\301!\207" [default-directory abbreviate-file-name] 3 (#$ . 13970)])
(defvar magit-repolist-column-version-regexp "\\(?1:-\\(?2:[0-9]*\\)\\(?3:-g[a-z0-9]*\\)\\)?\\(?:-\\(?4:dirty\\)\\)?\\'")#@67 Insert a description of the repository's `HEAD' revision.

(fn _)
(defalias 'magit-repolist-column-version #[257 "\301\302\303\304#\206 \305\306\307\310#\211\205q \311 \312\313\"\216\314\"\203I \315\316\224\316\225\317$\210\320\225\2036 \315\320\224\320\225\321$\210\322\225\203I \315\323\224\206C \322\224\322\225\324$\210\204Q \307\202n \314\325\"\203^ \326P\202n \314\327\"\205n \315\316\211\225\317$\210)\262\207" [magit-repolist-column-version-regexp magit-git-string "describe" "--tags" "--dirty" magit-rev-format "%cd-g%h" nil "--date=format:%Y%m%d.%H%M" match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data t] 3] string-match magit--put-face 0 shadow 2 bold 4 3 error "\\`[0-9]" " " "\\`[^0-9]+"] 8 (#$ . 14264)])#@12 

(fn A B)
(defalias 'magit-repolist-version< #[514 "\300 \301\302\"\216\303\304\"\205 \305\306\"\262\303\304\"\205 \305\306\"\262\2030 \2030 \307\"\2029 \2038 \310\2029 \311)\207" [match-data make-closure #[0 "\301\300\302\"\207" [V0 set-match-data t] 3] string-match "[0-9]+\\(\\.[0-9]*\\)*" match-string-no-properties 0 version< nil t] 6 (#$ . 15020)])#@36 Insert the current branch.

(fn _)
(defalias 'magit-repolist-column-branch #[257 "\301\302!\203 \303 \211\235\203 \304\305\"\207\207\304\306\307\"\207" [magit-main-branch-names file-exists-p ".git" magit-get-current-branch magit--propertize-face shadow "(unpopulated)" warning] 5 (#$ . 15395)])#@59 Insert the upstream branch of the current branch.

(fn _)
(defalias 'magit-repolist-column-upstream #[257 "\300 \207" [magit-get-upstream-branch] 2 (#$ . 15699)])#@322 Insert a flag as specified by `magit-repolist-column-flag-alist'.

By default this indicates whether there are uncommitted changes.
- N if there is at least one untracked file.
- U if there is at least one unstaged file.
- S if there is at least one staged file.
Only one letter is shown, the first that applies.

(fn _)
(defalias 'magit-repolist-column-flag #[257 "\301\302\"\207" [magit-repolist-column-flag-alist seq-some #[257 "\211\242\243 \205\n \211\207" [] 4 "\n\n(fn ARG0)"]] 4 (#$ . 15868)])#@181 Insert all flags as specified by `magit-repolist-column-flag-alist'.
This is an alternative to function `magit-repolist-column-flag',
which only lists the first one found.

(fn _)
(defalias 'magit-repolist-column-flags #[257 "\301\302\303#\207" [magit-repolist-column-flag-alist mapconcat #[257 "\211\242\243 \203\n \207\300\207" [" "] 4 "\n\n(fn ARG0)"] ""] 5 (#$ . 16379)])#@73 Insert number of upstream commits not in the current branch.

(fn SPEC)
(defalias 'magit-repolist-column-unpulled-from-upstream #[257 "\300 \211\205 \301\302\303\"A@\"\207" [magit-get-upstream-branch magit-repolist-insert-count magit-rev-diff-count "HEAD"] 6 (#$ . 16763)])#@84 Insert number of commits in the push branch but not the current branch.

(fn SPEC)
(defalias 'magit-repolist-column-unpulled-from-pushremote #[257 "\300\301\302\"\211\205 \303\304\305\"A@\"\207" [magit-get-push-branch nil t magit-repolist-insert-count magit-rev-diff-count "HEAD"] 6 (#$ . 17045)])#@81 Insert number of commits in the current branch but not its upstream.

(fn SPEC)
(defalias 'magit-repolist-column-unpushed-to-upstream #[257 "\300 \211\205 \301\302\303\"@\"\207" [magit-get-upstream-branch magit-repolist-insert-count magit-rev-diff-count "HEAD"] 6 (#$ . 17351)])#@84 Insert number of commits in the current branch but not its push branch.

(fn SPEC)
(defalias 'magit-repolist-column-unpushed-to-pushremote #[257 "\300\301\302\"\211\205 \303\304\305\"@\"\207" [magit-get-push-branch nil t magit-repolist-insert-count magit-rev-diff-count "HEAD"] 6 (#$ . 17638)])#@39 Insert number of branches.

(fn SPEC)
(defalias 'magit-repolist-column-branches #[257 "\300\301 G\302B\"\207" [magit-repolist-insert-count magit-list-local-branches (:normal-count 1)] 5 (#$ . 17941)])#@38 Insert number of stashes.

(fn SPEC)
(defalias 'magit-repolist-column-stashes #[257 "\300\301 G\"\207" [magit-repolist-insert-count magit-list-stashes] 4 (#$ . 18148)])#@15 

(fn N SPEC)
(defalias 'magit-repolist-insert-count #[514 "\300\301V\203 \302\236A@\303U\203 \304\202 \305!\306\236A@\206\" \307V\203* \310\202+ \311\"\207" [magit--propertize-face 9 :width 1 "+" number-to-string :normal-count 0 bold shadow] 7 (#$ . 18323)])#@608 Read a Git repository in the minibuffer, with completion.

The completion choices are the basenames of top-levels of
repositories found in the directories specified by option
`magit-repository-directories'.  In case of name conflicts
the basenames are prefixed with the name of the respective
parent directories.  The returned value is the actual path
to the selected repository.

If READ-DIRECTORY-NAME is non-nil or no repositories can be
found based on the value of `magit-repository-directories',
then read an arbitrary directory using `read-directory-name'
instead.

(fn &optional READ-DIRECTORY-NAME)
(defalias 'magit-read-repository #[256 "\302?\205\f \205\f \303 \211\262\203o \304\305\302\306\302\211\307\310!\211\205* \311\312!\205* \312\302\313\"\211\2051 \314!\211\2058 \315!\211\205P \316\"A\302D\235\203O \211\266\204\202R \266\204&\317\316\"A\206m \320!\203i \321!\202m \322\323\"!\207\317\324\325\326 \206x 	\"!\207" [magit-repository-directories default-directory nil magit-repos-alist magit-completing-read "Git repository" any derived-mode-p dired-mode fboundp dired-get-filename t magit-git-repo-p file-relative-name assoc file-name-as-directory file-directory-p expand-file-name user-error "Not a repository or a directory: %s" read-directory-name "Git repository: " magit-toplevel] 16 (#$ . 18597)])
(defalias 'magit-list-repos #[0 "\301\302\"\207" [magit-repository-directories mapcan #[257 "\211\242\243\300\"\207" [magit-list-repos-1] 6 "\n\n(fn ARG0)"]] 3])#@24 

(fn DIRECTORY DEPTH)
(defalias 'magit-list-repos-1 #[514 "\301\302\303\"!\203 \304!C\207\211\305V\205& \306!\205& \307\310\311\"\312\313\313$\"\207" [directory-files-no-dot-files-regexp file-readable-p expand-file-name ".git" file-name-as-directory 0 file-accessible-directory-p mapcan make-closure #[257 "\301!\205 \302\300S\"\207" [V0 file-directory-p magit-list-repos-1] 4 "\n\n(fn %)"] directory-files t] 9 (#$ . 20107)])#@14 

(fn ALIST)
(defalias 'magit-list-repos-uniquify #[257 "\300C\301\302\303\"\304!\211\203% \211@\305@A\306@\"B#\210A\266\202\202	 \210\307\310\311\"\"\210\242\207" [nil make-hash-table :test equal delete-dups puthash gethash maphash make-closure #[514 "\301\302\"\203 \300@B\300\242B\240\207\300\303\300\242\304\305\306\307\"\"!\"\240\207" [V0 length= 1 append magit-list-repos-uniquify mapcar make-closure #[257 "\300\302\301!\203 	\206\f \303\304\305\306\300GT[O!!QB\207" [V0 uniquify-separator boundp "\\" file-name-nondirectory directory-file-name 0] 8 "\n\n(fn V)"]] 10 "\n\n(fn KEY VALUE)"]] 11 (#$ . 20550)])
(defalias 'magit-repos-alist #[0 "\300\301\302\303 \"!\207" [magit-list-repos-uniquify mapcar #[257 "\300\301!!B\207" [file-name-nondirectory directory-file-name] 4 "\n\n(fn %)"] magit-list-repos] 4])
(provide 'magit-repos)
