From fad86bb068a03ba65df5d5da0febd888b1c591e9 Mon Sep 17 00:00:00 2001 From: Evgeni Kolev Date: Thu, 15 Feb 2018 14:08:41 +0200 Subject: [PATCH] Add vdiff.el support --- evil-collection-vdiff.el | 58 ++++++++++++++++++++++++++++++++++++++++ evil-collection.el | 7 +++++ 2 files changed, 65 insertions(+) create mode 100644 evil-collection-vdiff.el 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 +;; Maintainer: James Nguyen +;; Pierre Neidhardt +;; 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 . + +;;; 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