summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--evil-collection-vdiff.el58
-rw-r--r--evil-collection.el7
2 files changed, 65 insertions, 0 deletions
diff --git a/evil-collection-vdiff.el b/evil-collection-vdiff.el
new file mode 100644
index 0000000..e39e7b1
--- /dev/null
+++ b/evil-collection-vdiff.el
@@ -0,0 +1,58 @@
+;;; evil-collection-vdiff.el --- Evil bindings for vdiff -*- lexical-binding: t -*-
+
+;; Copyright (C) 2017 Pierre Neidhardt
+
+;; Author: Evgeni Kolev <evgenysw@gmail.com>
+;; Maintainer: James Nguyen <james@jojojames.com>
+;; Pierre Neidhardt <ambrevar@gmail.com>
+;; URL: https://github.com/jojojames/evil-collection
+;; Version: 0.0.1
+;; Package-Requires: ((emacs "25.1"))
+;; Keywords: evil, vdiff, tools
+
+;; This file 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, or (at your
+;; option) any later version.
+;;
+;; This file 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.
+;;
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;; Evil bindings for vdiff.el https://github.com/justbur/emacs-vdiff
+
+;;; Code:
+(require 'vdiff nil t)
+(require 'evil)
+
+(defun evil-collection-vdiff-setup ()
+ "Set up `evil' bindings for `vdiff-mode'."
+ (evil-define-minor-mode-key 'normal 'vdiff-mode
+ "]c" 'vdiff-next-hunk
+ "[c" 'vdiff-previous-hunk)
+
+ ;; define `do' (diff obtain) and `dp' (diff put) bindings
+ (evil-define-minor-mode-key 'operator 'vdiff-mode
+ "o" '(menu-item
+ ""
+ nil
+ :filter (lambda (&optional _)
+ (when (memq evil-this-operator
+ evil-collection-delete-operators)
+ #'vdiff-receive-changes)))
+ "p" '(menu-item
+ ""
+ nil
+ :filter (lambda (&optional _)
+ (when (memq evil-this-operator
+ evil-collection-delete-operators)
+ #'vdiff-send-changes)))))
+
+(provide 'evil-collection-vdiff)
+
+;;; evil-collection-vdiff.el ends here
diff --git a/evil-collection.el b/evil-collection.el
index b336577..b8aa462 100644
--- a/evil-collection.el
+++ b/evil-collection.el
@@ -136,6 +136,7 @@ or evil-collection.")
transmission
typescript-mode
vc-annotate
+ vdiff
vlf
which-key
woman
@@ -173,5 +174,11 @@ instance:
(require (intern (concat "evil-collection-" (symbol-name m))))
(funcall (intern (concat "evil-collection-" (symbol-name m) "-setup"))))))))
+(defvar evil-collection-delete-operators '(evil-delete
+ evil-cp-delete
+ vil-sp-delete
+ lispyville-delete)
+ "List of delete operators.")
+
(provide 'evil-collection)
;;; evil-collection.el ends here