diff options
Diffstat (limited to 'emacs/.config/emacs-v2/lisp/kj-init.el')
-rw-r--r-- | emacs/.config/emacs-v2/lisp/kj-init.el | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/emacs/.config/emacs-v2/lisp/kj-init.el b/emacs/.config/emacs-v2/lisp/kj-init.el index 25448f6..e42da4e 100644 --- a/emacs/.config/emacs-v2/lisp/kj-init.el +++ b/emacs/.config/emacs-v2/lisp/kj-init.el @@ -409,7 +409,39 @@ (setq transient-levels-file (expand-file-name "transient/levels.el" kj/cache-dir) transient-values-file (expand-file-name "transient/values.el" kj/cache-dir) transient-history-file (expand-file-name "transient/history.el" kj/cache-dir))) -(use-package magit) + +(defconst kj/git-directory (expand-file-name "~/git")) +(defun kj/read-repository () + (let ((repos + (thread-last + (directory-files "/ssh:dragon.orbekk.com:/storage/projects") + (seq-filter (lambda (f) (not (string-match (rx bol (or "." "..") eol) f))))))) + (thread-last + (completing-read "Repository: " repos) + (concat "ssh://dragon.orbekk.com:/storage/projects/")))) + +(use-package magit + :bind (:map magit-repolist-mode-map + ("c" . magit-clone) + ("i" . magit-init) + ("C" . kj/clone-project)) + :custom + (magit-repository-directories `((,kj/git-directory . 1)) "My git repositories") + (magit-repolist-columns '(("Name" 25 magit-repolist-column-ident nil) + ("Version" 25 magit-repolist-column-version + ((:sort magit-repolist-version<))) + ("B<U" 3 magit-repolist-column-unpulled-from-upstream + ((:right-align t) (:sort <))) + ("B>U" 3 magit-repolist-column-unpushed-to-upstream + ((:right-align t) (:sort <))) + ("F" 3 magit-repolist-column-flag + ((:right-align t) (:sort <))) + ("Path" 99 magit-repolist-column-path nil))) + :config + (defun kj/clone-project () + (interactive) + (let ((magit-clone-set-remote.pushDefault t)) + (magit-clone-regular (kj/read-repository) kj/git-directory nil)))) (use-package mixed-pitch :hook |