about summary refs log tree commit diff
path: root/configs/shared/emacs/.emacs.d/elpa/magit-20180913.1247/magit-repos.el
diff options
context:
space:
mode:
Diffstat (limited to 'configs/shared/emacs/.emacs.d/elpa/magit-20180913.1247/magit-repos.el')
-rw-r--r--configs/shared/emacs/.emacs.d/elpa/magit-20180913.1247/magit-repos.el304
1 files changed, 0 insertions, 304 deletions
diff --git a/configs/shared/emacs/.emacs.d/elpa/magit-20180913.1247/magit-repos.el b/configs/shared/emacs/.emacs.d/elpa/magit-20180913.1247/magit-repos.el
deleted file mode 100644
index 39b4d095f12b..000000000000
--- a/configs/shared/emacs/.emacs.d/elpa/magit-20180913.1247/magit-repos.el
+++ /dev/null
@@ -1,304 +0,0 @@
-;;; magit-repos.el --- listing repositories  -*- lexical-binding: t -*-
-
-;; Copyright (C) 2010-2018  The Magit Project Contributors
-;;
-;; You should have received a copy of the AUTHORS.md file which
-;; lists all contributors.  If not, see http://magit.vc/authors.
-
-;; Author: Jonas Bernoulli <jonas@bernoul.li>
-;; Maintainer: Jonas Bernoulli <jonas@bernoul.li>
-
-;; Magit 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, or (at your option)
-;; any later version.
-;;
-;; Magit 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 Magit.  If not, see http://www.gnu.org/licenses.
-
-;;; Commentary:
-
-;; This library implements support for listing repositories.  This
-;; includes getting a Lisp list of known repositories as well as a
-;; mode for listing repositories in a buffer.
-
-;;; Code:
-
-(require 'magit-core)
-
-(declare-function magit-status-internal "magit-status" (directory))
-
-(defvar x-stretch-cursor)
-
-;;; Options
-
-(defcustom magit-repository-directories nil
-  "List of directories that are or contain Git repositories.
-
-Each element has the form (DIRECTORY . DEPTH).  DIRECTORY has
-to be a directory or a directory file-name, a string.  DEPTH,
-an integer, specifies the maximum depth to look for Git
-repositories.  If it is 0, then only add DIRECTORY itself."
-  :package-version '(magit . "2.8.0")
-  :group 'magit-essentials
-  :type '(repeat (cons directory (integer :tag "Depth"))))
-
-(defgroup magit-repolist nil
-  "List repositories in a buffer."
-  :link '(info-link "(magit)Repository List")
-  :group 'magit-modes)
-
-(defcustom magit-repolist-mode-hook '(hl-line-mode)
-  "Hook run after entering Magit-Repolist mode."
-  :package-version '(magit . "2.9.0")
-  :group 'magit-repolist
-  :type 'hook
-  :get 'magit-hook-custom-get
-  :options '(hl-line-mode))
-
-(defcustom magit-repolist-columns
-  '(("Name"    25 magit-repolist-column-ident nil)
-    ("Version" 25 magit-repolist-column-version nil)
-    ("B<U"      3 magit-repolist-column-unpulled-from-upstream
-     ((:right-align t)
-      (:help-echo "Upstream changes not in branch")))
-    ("B>U"      3 magit-repolist-column-unpushed-to-upstream
-     ((:right-align t)
-      (:help-echo "Local changes not in upstream")))
-    ("Path"    99 magit-repolist-column-path nil))
-  "List of columns displayed by `magit-list-repositories'.
-
-Each element has the form (HEADER WIDTH FORMAT PROPS).
-
-HEADER is the string displayed in the header.  WIDTH is the width
-of the column.  FORMAT is a function that is called with one
-argument, the repository identification (usually its basename),
-and with `default-directory' bound to the toplevel of its working
-tree.  It has to return a string to be inserted or nil.  PROPS is
-an alist that supports the keys `:right-align' and `:pad-right'.
-Some entries also use `:help-echo', but `tabulated-list' does not
-actually support that yet."
-  :package-version '(magit . "2.12.0")
-  :group 'magit-repolist
-  :type `(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)
-                                               (symbol))
-                                       (sexp   :tag "Value"))))))
-
-
-;;; List Repositories
-;;;; Command
-;;;###autoload
-(defun magit-list-repositories ()
-  "Display a list of repositories.
-
-Use the options `magit-repository-directories' to control which
-repositories are displayed."
-  (interactive)
-  (if magit-repository-directories
-      (with-current-buffer (get-buffer-create "*Magit Repositories*")
-        (magit-repolist-mode)
-        (magit-repolist-refresh)
-        (tabulated-list-print)
-        (switch-to-buffer (current-buffer)))
-    (message "You need to customize `magit-repository-directories' %s"
-             "before you can list repositories")))
-
-;;;; Mode
-
-(defvar magit-repolist-mode-map
-  (let ((map (make-sparse-keymap)))
-    (set-keymap-parent map tabulated-list-mode-map)
-    (define-key map (if (featurep 'jkl) [return] (kbd "C-m"))
-      'magit-repolist-status)
-    map)
-  "Local keymap for Magit-Repolist mode buffers.")
-
-(defun magit-repolist-status (&optional _button)
-  "Show the status for the repository at point."
-  (interactive)
-  (--if-let (tabulated-list-get-id)
-      (magit-status-internal (expand-file-name it))
-    (user-error "There is no repository at point")))
-
-(define-derived-mode magit-repolist-mode tabulated-list-mode "Repos"
-  "Major mode for browsing a list of Git repositories."
-  (setq x-stretch-cursor        nil)
-  (setq tabulated-list-padding  0)
-  (setq tabulated-list-sort-key (cons "Path" nil))
-  (setq tabulated-list-format
-        (vconcat (mapcar (pcase-lambda (`(,title ,width ,_fn ,props))
-                           (nconc (list title width t)
-                                  (-flatten props)))
-                         magit-repolist-columns)))
-  (tabulated-list-init-header)
-  (add-hook 'tabulated-list-revert-hook 'magit-repolist-refresh nil t)
-  (setq imenu-prev-index-position-function
-        'magit-imenu--repolist-prev-index-position-function)
-  (setq imenu-extract-index-name-function
-        'magit-imenu--repolist-extract-index-name-function))
-
-(defun magit-repolist-refresh ()
-  (setq tabulated-list-entries
-        (mapcar (pcase-lambda (`(,id . ,path))
-                  (let ((default-directory path))
-                    (list path
-                          (vconcat (--map (or (funcall (nth 2 it) id) "")
-                                          magit-repolist-columns)))))
-                (magit-list-repos-uniquify
-                 (--map (cons (file-name-nondirectory (directory-file-name it))
-                              it)
-                        (magit-list-repos))))))
-
-;;;; Columns
-
-(defun magit-repolist-column-ident (id)
-  "Insert the identification of the repository.
-Usually this is just its basename."
-  id)
-
-(defun magit-repolist-column-path (_id)
-  "Insert the absolute path of the repository."
-  (abbreviate-file-name default-directory))
-
-(defun magit-repolist-column-version (_id)
-  "Insert a description of the repository's `HEAD' revision."
-  (let ((v (or (magit-git-string "describe" "--tags")
-               ;; If there are no tags, use the date in MELPA format.
-               (magit-git-string "show" "--no-patch" "--format=%cd-g%h"
-                                 "--date=format:%Y%m%d.%H%M"))))
-    (if (and v (string-match-p "\\`[0-9]" v))
-        (concat " " v)
-      v)))
-
-(defun magit-repolist-column-branch (_id)
-  "Insert the current branch."
-  (magit-get-current-branch))
-
-(defun magit-repolist-column-upstream (_id)
-  "Insert the upstream branch of the current branch."
-  (magit-get-upstream-branch))
-
-(defun magit-repolist-column-dirty (_id)
-  "Insert a letter if there are uncommitted changes.
-
-Show N if there is at least one untracked file.
-Show U if there is at least one unstaged file.
-Show S if there is at least one staged file.
-Only one letter is shown, the first that applies."
-  (cond ((magit-untracked-files) "N")
-        ((magit-unstaged-files)  "U")
-        ((magit-staged-files)    "S")))
-
-(defun magit-repolist-column-unpulled-from-upstream (_id)
-  "Insert number of upstream commits not in the current branch."
-  (--when-let (magit-get-upstream-branch nil t)
-    (let ((n (cadr (magit-rev-diff-count "HEAD" it))))
-      (propertize (number-to-string n) 'face (if (> n 0) 'bold 'shadow)))))
-
-(defun magit-repolist-column-unpulled-from-pushremote (_id)
-  "Insert number of commits in the push branch but not the current branch."
-  (--when-let (magit-get-push-branch nil t)
-    (let ((n (cadr (magit-rev-diff-count "HEAD" it))))
-      (propertize (number-to-string n) 'face (if (> n 0) 'bold 'shadow)))))
-
-(defun magit-repolist-column-unpushed-to-upstream (_id)
-  "Insert number of commits in the current branch but not its upstream."
-  (--when-let (magit-get-upstream-branch nil t)
-    (let ((n (car (magit-rev-diff-count "HEAD" it))))
-      (propertize (number-to-string n) 'face (if (> n 0) 'bold 'shadow)))))
-
-(defun magit-repolist-column-unpushed-to-pushremote (_id)
-  "Insert number of commits in the current branch but not its push branch."
-  (--when-let (magit-get-push-branch nil t)
-    (let ((n (car (magit-rev-diff-count "HEAD" it))))
-      (propertize (number-to-string n) 'face (if (> n 0) 'bold 'shadow)))))
-
-(defun magit-repolist-column-branches (_id)
-  "Insert number of branches."
-  (let ((n (length (magit-list-local-branches))))
-    (propertize (number-to-string n) 'face (if (> n 1) 'bold 'shadow))))
-
-(defun magit-repolist-column-stashes (_id)
-  "Insert number of stashes."
-  (let ((n (length (magit-list-stashes))))
-    (propertize (number-to-string n) 'face (if (> n 0) 'bold 'shadow))))
-
-;;; Read Repository
-
-(defun magit-read-repository (&optional read-directory-name)
-  "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.
-
-With prefix argument simply read a directory name using
-`read-directory-name'."
-  (if (and (not read-directory-name) magit-repository-directories)
-      (let* ((repos (magit-list-repos-uniquify
-                     (--map (cons (file-name-nondirectory
-                                   (directory-file-name it))
-                                  it)
-                            (magit-list-repos))))
-             (reply (magit-completing-read "Git repository" repos)))
-        (file-name-as-directory
-         (or (cdr (assoc reply repos))
-             (if (file-directory-p reply)
-                 (expand-file-name reply)
-               (user-error "Not a repository or a directory: %s" reply)))))
-    (file-name-as-directory
-     (read-directory-name "Git repository: "
-                          (or (magit-toplevel) default-directory)))))
-
-(defun magit-list-repos ()
-  (cl-mapcan (pcase-lambda (`(,dir . ,depth))
-               (magit-list-repos-1 dir depth))
-             magit-repository-directories))
-
-(defun magit-list-repos-1 (directory depth)
-  (cond ((file-readable-p (expand-file-name ".git" directory))
-         (list directory))
-        ((and (> depth 0) (magit-file-accessible-directory-p directory))
-         (--mapcat (and (file-directory-p it)
-                        (magit-list-repos-1 it (1- depth)))
-                   (directory-files directory t
-                                    directory-files-no-dot-files-regexp t)))))
-
-(defun magit-list-repos-uniquify (alist)
-  (let (result (dict (make-hash-table :test 'equal)))
-    (dolist (a (delete-dups alist))
-      (puthash (car a) (cons (cdr a) (gethash (car a) dict)) dict))
-    (maphash
-     (lambda (key value)
-       (if (= (length value) 1)
-           (push (cons key (car value)) result)
-         (setq result
-               (append result
-                       (magit-list-repos-uniquify
-                        (--map (cons (concat
-                                      key "\\"
-                                      (file-name-nondirectory
-                                       (directory-file-name
-                                        (substring it 0 (- (1+ (length key)))))))
-                                     it)
-                               value))))))
-     dict)
-    result))
-
-(provide 'magit-repos)
-;;; magit-repos.el ends here