07aa9b01ed
Note that Forge binds the ' key to the Forge dispatch popup, but evil-magit binds the ' key to the submodule dispatch popup (see https://github.com/emacs-evil/evil-magit/issues/54), and evil-magit's key binding takes precedence with the vim editing style. Because Forge's key binding does not always work, it is omitted from the README. Note also that Magit binds the % key to its worktree dispatch popup, but Spacemacs binds the % key to the magit-gitflow popup, and Spacemacs's key binding takes precedence. Because there is no available key binding for the worktree dispatch popup, Forge's key binding under that dispatch popup is omitted from the README. * CHANGELOG.develop: * layers/+source-control/github/README.org: Update. * layers/+source-control/github/packages.el (github-packages): Add forge. (github/init-forge): Load forge after magit. Configure forge to use spacemacs-cache-directory. (github/init-magithub): Disabling injecting issues and pull-requests sections if forge is installed.
115 lines
3.9 KiB
EmacsLisp
115 lines
3.9 KiB
EmacsLisp
;;; packages.el --- Github Layer packages File for Spacemacs
|
|
;;
|
|
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
|
|
;;
|
|
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
|
;; URL: https://github.com/syl20bnr/spacemacs
|
|
;;
|
|
;; This file is not part of GNU Emacs.
|
|
;;
|
|
;;; License: GPLv3
|
|
|
|
(setq github-packages
|
|
'(
|
|
forge
|
|
gist
|
|
github-clone
|
|
github-search
|
|
magit-gh-pulls
|
|
magithub
|
|
;; this package does not exits, we need it to wrap
|
|
;; the call to spacemacs/declare-prefix.
|
|
(spacemacs-github :location built-in)
|
|
))
|
|
|
|
(defun github/init-forge ()
|
|
(use-package forge
|
|
:after magit
|
|
:init (setq forge-database-file (concat spacemacs-cache-directory
|
|
"forge-database.sqlite"))))
|
|
|
|
(defun github/init-gist ()
|
|
(use-package gist
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(spacemacs/declare-prefix "gg" "github gist")
|
|
(spacemacs/set-leader-keys
|
|
"ggb" 'gist-buffer
|
|
"ggB" 'gist-buffer-private
|
|
"ggl" 'gist-list
|
|
"ggr" 'gist-region
|
|
"ggR" 'gist-region-private))
|
|
:config
|
|
(progn
|
|
(evilified-state-evilify-map gist-list-menu-mode-map
|
|
:mode gist-list-mode
|
|
:bindings
|
|
"f" 'gist-fetch-current
|
|
"K" 'gist-kill-current
|
|
"o" 'gist-browse-current-url)
|
|
(evilified-state-evilify-map gist-list-mode-map
|
|
:mode gist-list-mode
|
|
:bindings
|
|
(kbd "gr") 'gist-list-reload))))
|
|
|
|
(defun github/init-github-clone ()
|
|
(use-package github-clone
|
|
:defer t
|
|
:init
|
|
(progn
|
|
(spacemacs/declare-prefix "ghc" "clone")
|
|
(spacemacs/set-leader-keys
|
|
"ghcc" 'github-clone
|
|
"ghcr" 'github-clone-add-existing-remote
|
|
"ghcf" 'github-clone-fork-remote
|
|
"ghcu" 'github-clone-add-source-remote))))
|
|
|
|
(defun github/init-github-search ()
|
|
(use-package github-search
|
|
:commands (github-search-clone-repo github-search-user-clone-repo)
|
|
:init (spacemacs/set-leader-keys "ghc/" 'github-search-clone-repo)))
|
|
|
|
;; magit-gh-pulls has to be loaded via a pre-config hook because the source code
|
|
;; makes assumptions about the status of the magit-mode keymaps that are
|
|
;; incompatible with the spacemacs' evilification feature.
|
|
;; To avoid errors, magit-gh-pulls must be loaded after magit, but before magit
|
|
;; is configured by spacemacs.
|
|
|
|
(defun github/pre-init-magit-gh-pulls ()
|
|
(spacemacs|use-package-add-hook magit
|
|
:pre-config
|
|
(progn
|
|
(use-package magit-gh-pulls
|
|
:config
|
|
(define-key magit-mode-map "#" 'spacemacs/load-gh-pulls-mode)
|
|
(spacemacs|diminish magit-gh-pulls-mode "Github-PR")))))
|
|
(defun github/init-magit-gh-pulls ())
|
|
|
|
(defun github/init-magithub ()
|
|
(use-package magithub
|
|
:after magit
|
|
:init
|
|
(setq magithub-dir (concat spacemacs-cache-directory "magithub/"))
|
|
:config
|
|
(progn
|
|
;; Configure Magithub to be offline by default because loading data from
|
|
;; projects with many pull requests or issues can be exorbitantly slow.
|
|
;; See <https://github.com/syl20bnr/spacemacs/issues/11176>.
|
|
(when (null (magit-get "--global" "magithub.online"))
|
|
(magit-set "false" "--global" "magithub.online")
|
|
(magit-set "false" "--global" "magithub.status.includeStatusHeader")
|
|
(magit-set "false" "--global" "magithub.status.includePullRequestsSection")
|
|
(magit-set "false" "--global" "magithub.status.includeIssuesSection"))
|
|
(magithub-feature-autoinject `(,@(when (not (package-installed-p 'forge))
|
|
'(issues-section
|
|
pull-requests-section))
|
|
completion
|
|
status-checks-header
|
|
commit-browse
|
|
pull-request-merge))
|
|
(define-key magit-status-mode-map "@" #'magithub-dispatch-popup))))
|
|
|
|
(defun github/init-spacemacs-github ()
|
|
(spacemacs/declare-prefix "gh" "github"))
|