summaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ravi-init-vc.el66
1 files changed, 40 insertions, 26 deletions
diff --git a/lisp/ravi-init-vc.el b/lisp/ravi-init-vc.el
index c480f05..b72a34f 100644
--- a/lisp/ravi-init-vc.el
+++ b/lisp/ravi-init-vc.el
@@ -100,35 +100,49 @@
;; Stolen almost entirely from Fuco (Matus Goljer)
(use-package ediff
+ :hook (ediff-keymap-setup-hook . ravi/add-d-to-ediff-mode-map)
+ :commands ravi/add-d-to-ediff-mode-map
:config
- (progn
- (defvar my-ediff-before-config nil "Window configuration before ediff.")
- (defvar my-ediff-after-config nil "Window configuration after ediff.")
+ (defvar my-ediff-before-config nil "Window configuration before ediff.")
+ (defvar my-ediff-after-config nil "Window configuration after ediff.")
+
+ (unless window-system
+ (setq ediff-split-window-function #'split-window-horizontally)
+ (setq ediff-window-setup-function #'ediff-setup-windows-plain))
- (defun my-ediff-before-setup ()
- "Function to be called before any buffers or window setup for
+ (defun my-ediff-before-setup ()
+ "Function to be called before any buffers or window setup for
ediff."
- (setq my-ediff-before-config (current-window-configuration))
- (set-register ?b (list my-ediff-before-config (point-marker))))
-
- (defun my-ediff-after-setup ()
- "Function to be called after buffers and window setup for ediff."
- (setq my-ediff-after-config (current-window-configuration))
- (set-register ?e (list my-ediff-after-config (point-marker))))
-
- (defun my-ediff-quit ()
- "Function to be called when ediff quits."
- (when my-ediff-before-config
- (set-window-configuration my-ediff-before-config))
- ;; clean up ediff bullshit
- (->> (buffer-list)
- (-map 'buffer-name)
- (--select (string-match-p "\\*[Ee]diff" it))
- (-map 'kill-buffer)))
-
- (add-hook 'ediff-before-setup-hook 'my-ediff-before-setup)
- (add-hook 'ediff-after-setup-windows-hook 'my-ediff-after-setup 'append)
- (add-hook 'ediff-quit-hook 'my-ediff-quit)))
+ (setq my-ediff-before-config (current-window-configuration))
+ (set-register ?b (list my-ediff-before-config (point-marker))))
+
+ (defun my-ediff-after-setup ()
+ "Function to be called after buffers and window setup for ediff."
+ (setq my-ediff-after-config (current-window-configuration))
+ (set-register ?e (list my-ediff-after-config (point-marker))))
+
+ (defun my-ediff-quit ()
+ "Function to be called when ediff quits."
+ (when my-ediff-before-config
+ (set-window-configuration my-ediff-before-config))
+ ;; clean up ediff bullshit
+ (->> (buffer-list)
+ (-map 'buffer-name)
+ (--select (string-match-p "\\*[Ee]diff" it))
+ (-map 'kill-buffer)))
+
+ ;; Copy both sides in a merge
+ (defun ravi/ediff-copy-both-to-C ()
+ (interactive)
+ (ediff-copy-diff ediff-current-difference nil 'C nil
+ (concat
+ (ediff-get-region-contents ediff-current-difference 'A ediff-control-buffer)
+ (ediff-get-region-contents ediff-current-difference 'B ediff-control-buffer))))
+ (defun ravi/add-d-to-ediff-mode-map () (define-key ediff-mode-map "d" #'ravi/ediff-copy-both-to-C))
+
+ (add-hook 'ediff-before-setup-hook 'my-ediff-before-setup)
+ (add-hook 'ediff-after-setup-windows-hook 'my-ediff-after-setup 'append)
+ (add-hook 'ediff-quit-hook 'my-ediff-quit))
(use-package smerge-mode
:config