summaryrefslogtreecommitdiff
path: root/emacs/.config/emacs-v2/lisp/kj-init.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/.config/emacs-v2/lisp/kj-init.el')
-rw-r--r--emacs/.config/emacs-v2/lisp/kj-init.el34
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