Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
;;; evil-collection-git-timemachine.el --- Bindings for `git-timemachine' -*- lexical-binding: t -*-
|
2018-04-01 04:14:01 +02:00
|
|
|
|
Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
;; Author: William Carroll <wpcarro@gmail.com>
|
2018-05-26 10:07:22 +02:00
|
|
|
;; Maintainer: James Nguyen <james@jojojames.com>
|
2018-08-27 10:41:51 +02:00
|
|
|
;; Pierre Neidhardt <mail@ambrevar.xyz>
|
2018-04-01 04:14:01 +02:00
|
|
|
;; URL: https://github.com/emacs-evil/evil-collection
|
2018-05-26 10:07:22 +02:00
|
|
|
;; Version: 0.0.1
|
|
|
|
;; Package-Requires: ((emacs "25.1"))
|
|
|
|
;; Keywords: evil, git, tools
|
2018-04-01 04:14:01 +02:00
|
|
|
|
|
|
|
;; This program 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 of the License, or
|
|
|
|
;; (at your option) any later version.
|
|
|
|
|
|
|
|
;; This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
|
|
|
|
;;; Commentary:
|
2018-04-01 04:14:01 +02:00
|
|
|
;; Evil keybindings for `git-timemachine' that conform to the principles
|
|
|
|
;; outlines in evil-collection
|
Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
|
|
|
|
;;; Code:
|
2018-06-20 03:14:50 +02:00
|
|
|
(require 'evil-collection)
|
2018-04-01 04:15:12 +02:00
|
|
|
(require 'git-timemachine nil t)
|
Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
|
2018-04-01 04:15:12 +02:00
|
|
|
(defvar git-timemachine-mode-map)
|
|
|
|
(defconst evil-collection-git-timemachine-map '(git-timemachine-mode-map))
|
Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
|
2018-10-15 12:30:19 +02:00
|
|
|
;;;###autoload
|
Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
(defun evil-collection-git-timemachine-setup ()
|
|
|
|
"Setup `evil' keybindings for `git-timemachine'."
|
2018-04-01 04:15:12 +02:00
|
|
|
(evil-define-minor-mode-key 'normal 'git-timemachine-mode
|
2018-04-21 20:27:17 +02:00
|
|
|
"\C-k" 'git-timemachine-show-previous-revision
|
|
|
|
"\C-j" 'git-timemachine-show-next-revision
|
|
|
|
"q" 'git-timemachine-quit
|
|
|
|
"gtg" 'git-timemachine-show-nth-revision
|
|
|
|
"gtt" 'git-timemachine-show-revision-fuzzy
|
|
|
|
"gty" 'git-timemachine-kill-abbreviated-revision
|
|
|
|
"gtY" 'git-timemachine-kill-revision
|
|
|
|
"gtb" 'git-timemachine-blame))
|
Support git-timemachine
Supports evil bindings for git-timemachine. On my machine, git-timemachine
starts with evil in normal mode, which is problematic when trying to access the
keybindings "n" and "p", which navigate to the next and previous revisions.
Additionally, normal mode eclispses "q", which exits the mode.
I tried using `(evil-set-initial-state 'git-timemachine-mode 'motion)`, but that
didn't work. I assume this is because `git-timemachine` is a minor-mode. To work
around this, I used `add-hook` to ensure motion mode was the initial state.
Once motion mode is the initial state, "p" and "q" become available.
Unfortunately, "n" is still not. To get around this, I used a buffer-local
binding in the local motion state map to map "n" appropriately. One known
shortcoming of this approach is that there is no cleanup done after exiting the
mode.
Any suggestions are eagerly welcomed. Forgive any crude techniques that I used
to get this functioning. I just wanted to broach the discussion with some of the
other maintainers to get some insights and hopefully augment my implementation
as needed.
2018-03-31 19:13:43 +02:00
|
|
|
|
|
|
|
(provide 'evil-collection-git-timemachine)
|
|
|
|
;;; evil-collection-git-timemachine.el ends here
|