From a72a0e6a62d9405784429527649e1ed3fa91334a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 16 Feb 2019 18:08:26 -0500 Subject: [PATCH] Replace magithub with forge Should also fix void-function/void-variable errors caused by evil-magit depending on the newer version of magit (#1174). Also introduces a redesign of the SPC g prefix. --- modules/config/default/+emacs-bindings.el | 4 +- modules/config/default/+evil-bindings.el | 72 ++++++++++++++--------- modules/emacs/vc/autoload/evil.el | 4 +- modules/emacs/vc/autoload/vc.el | 17 +----- modules/feature/evil/+commands.el | 6 +- 5 files changed, 52 insertions(+), 51 deletions(-) diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index 2688a976a..ea0ef4ee9 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -102,8 +102,8 @@ :desc "Use Temp Template" "e" #'aya-expand) ;; Version control bindings (:prefix ("v" . "versioning") - :desc "Browse issues tracker" "i" #'+vc/git-browse-issues - :desc "Browse remote" "o" #'+vc/git-browse + :desc "Browse issues tracker" "i" #'forge-browse-issues + :desc "Browse remote" "o" #'forge-browse-remote :desc "Diff current file" "d" #'magit-diff-buffer-file :desc "Git revert hunk" "r" #'git-gutter:revert-hunk :desc "Git stage file" "S" #'magit-stage-file diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index c40766a95..6a9c7650c 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -604,36 +604,52 @@ :desc "Yank filename" "y" #'+default/yank-buffer-filename) (:prefix ("g" . "git") + :desc "Git revert file" "R" #'vc-revert (:when (featurep! :ui vc-gutter) - :desc "Git revert hunk" "r" #'git-gutter:revert-hunk - :desc "Git stage hunk" "s" #'git-gutter:stage-hunk - :desc "Git time machine" "t" #'git-timemachine-toggle - :desc "Next hunk" "]" #'git-gutter:next-hunk - :desc "Previous hunk" "[" #'git-gutter:previous-hunk) - (:when (featurep! :emacs vc) - :desc "Browse issues tracker" "I" #'+vc/git-browse-issues - :desc "Browse remote" "o" #'+vc/git-browse - :desc "Git revert file" "R" #'vc-revert) + :desc "Git revert hunk" "r" #'git-gutter:revert-hunk + :desc "Git stage hunk" "s" #'git-gutter:stage-hunk + :desc "Git time machine" "t" #'git-timemachine-toggle + :desc "Jump to next hunk" "]" #'git-gutter:next-hunk + :desc "Jump to previous hunk" "[" #'git-gutter:previous-hunk) (:when (featurep! :tools magit) - :desc "Magit blame" "b" #'magit-blame-addition - :desc "Magit commit" "c" #'magit-commit-create - :desc "Magit clone" "C" #'+magit/clone - :desc "Magit dispatch" "d" #'magit-dispatch-popup - :desc "Magit find-file" "f" #'magit-find-file - :desc "Magit status" "g" #'magit-status - :desc "Magit file delete" "x" #'magit-file-delete - :desc "MagitHub dispatch" "h" #'magithub-dispatch-popup - :desc "Initialize repo" "i" #'magit-init - :desc "Magit buffer log" "l" #'magit-log-buffer-file - :desc "List repositories" "L" #'magit-list-repositories - :desc "Git stage file" "S" #'magit-stage-file - :desc "Git unstage file" "U" #'magit-unstage-file - :desc "Magit push popup" "p" #'magit-push-popup - :desc "Magit pull popup" "P" #'magit-pull-popup - (:when (featurep! :tools magit +forge) - :desc "Forge dispatch" "F" #'forge-dispatch)) - (:when (featurep! :tools gist) - :desc "List gists" "G" #'+gist:list)) + :desc "Magit dispatch" "/" #'magit-dispatch + :desc "Forge dispatch" "'" #'forge-dispatch + :desc "Magit status" "g" #'magit-status + :desc "Magit file delete" "x" #'magit-file-delete + :desc "Magit blame" "B" #'magit-blame-addition + :desc "Magit clone" "C" #'+magit/clone + :desc "Magit fetch" "F" #'magit-fetch + :desc "Magit buffer log" "L" #'magit-log + :desc "Git stage file" "S" #'magit-stage-file + :desc "Git unstage file" "U" #'magit-unstage-file + (:prefix ("f" . "find") + :desc "Find file" "f" #'magit-find-file + :desc "Find gitconfig file" "g" #'magit-find-git-config-file + :desc "Find commit" "c" #'magit-show-commit + :desc "Find issue" "i" #'forge-visit-issue + :desc "Find pull request" "p" #'forge-visit-pullreq) + (:prefix ("o" . "open in browser") + :desc "Browse region or line" "." #'+vc/git-browse-region-or-line + :desc "Browse remote" "r" #'forge-browse-remote + :desc "Browse commit" "c" #'forge-browse-commit + :desc "Browse an issue" "i" #'forge-browse-issue + :desc "Browse a pull request" "p" #'forge-browse-pullreq + :desc "Browse issues" "I" #'forge-browse-issues + :desc "Browse pull requests" "P" #'forge-browse-pullreqs) + (:prefix ("l" . "list") + (:when (featurep! :tools gist) + :desc "List gists" "g" #'+gist:list) + :desc "List repositories" "r" #'magit-list-repositories + :desc "List submodules" "s" #'magit-list-submodules + :desc "List issues" "i" #'forge-list-issues + :desc "List pull requests" "p" #'forge-list-pullreqs + :desc "List notifications" "n" #'forge-list-notifications) + (:prefix ("c" . "create") + :desc "Initialize repo" "r" #'magit-init + :desc "Clone repo" "R" #'+magit/clone + :desc "Commit" "c" #'magit-commit-create + :desc "Issue" "i" #'forge-create-issue + :desc "Pull request" "p" #'forge-create-pullreq))) (:prefix ("h" . "help") :desc "What face" "'" #'doom/what-face diff --git a/modules/emacs/vc/autoload/evil.el b/modules/emacs/vc/autoload/evil.el index 15bcc1b1e..7803f94c9 100644 --- a/modules/emacs/vc/autoload/evil.el +++ b/modules/emacs/vc/autoload/evil.el @@ -3,6 +3,6 @@ ;;;###autoload (autoload '+vc:git-browse "emacs/vc/autoload/evil" nil t) (evil-define-command +vc:git-browse (bang) - "Ex interface to `+vc/git-browse'." + "Ex interface to `+vc/git-browse-region-or-line'." (interactive "") - (+vc/git-browse bang)) + (+vc/git-browse-region-or-line bang)) diff --git a/modules/emacs/vc/autoload/vc.el b/modules/emacs/vc/autoload/vc.el index 8994a7dad..e2efb9bdc 100644 --- a/modules/emacs/vc/autoload/vc.el +++ b/modules/emacs/vc/autoload/vc.el @@ -13,7 +13,7 @@ (defvar git-link-open-in-browser) ;;;###autoload -(defun +vc/git-browse (arg) +(defun +vc/git-browse-region-or-line (&optional arg) "Open the website for the current version controlled file. Fallback to repository root." (interactive "P") @@ -23,21 +23,6 @@ repository root." (let ((git-link-open-in-browser (not arg))) (git-link (git-link--select-remote) beg end)))) -;;;###autoload -(defun +vc/git-browse-issues (arg) - "Open the issues page for current repo." - (interactive "P") - (let ((url (format "%s/issues" (+vc-git-root-url)))) - (if arg - (message "%s" (kill-new url)) - (browse-url url)))) - -;;;###autoload -(defun +vc/git-browse-pulls () - "Open the pull requests page for current repo." - (interactive) - (browse-url (format "%s/pulls" (+vc-git-root-url)))) - ;;;###autoload (defun +vc*update-header-line (revision) "Show revision details in the header-line, instead of the minibuffer. diff --git a/modules/feature/evil/+commands.el b/modules/feature/evil/+commands.el index 10151fb8f..bfe2b4342 100644 --- a/modules/feature/evil/+commands.el +++ b/modules/feature/evil/+commands.el @@ -85,9 +85,9 @@ This command understands vim file modifiers (like %:p:h). See ;;; GIT (evil-ex-define-cmd "gist" #'+gist:send) ; send current buffer/region to gist (evil-ex-define-cmd "gistl" #'+gist:list) ; list gists by user -(evil-ex-define-cmd "gbrowse" #'+vc:git-browse) ; show file in github/gitlab -(evil-ex-define-cmd "gissues" #'+vc/git-browse-issues) ; show github issues -(evil-ex-define-cmd "git" #'magit-status) ; open magit status window +(evil-ex-define-cmd "gbrowse" #'+vc:git-browse) ; show file/region in github/gitlab +(evil-ex-define-cmd "gissues" #'forge-browse-issues) ; show github issues +(evil-ex-define-cmd "git" #'magit-status) ; open magit status window (evil-ex-define-cmd "gstage" #'magit-stage) (evil-ex-define-cmd "gunstage" #'magit-unstage) (evil-ex-define-cmd "gblame" #'magit-blame)