First commit.

This commit is contained in:
2022-01-09 21:19:46 +01:00
commit df36844dcc
107 changed files with 6565 additions and 0 deletions

85
lisp/utilities/ediff.el Normal file
View File

@@ -0,0 +1,85 @@
;;; ediff.el --- Configuration for ediff -*- lexical-binding: t; -*-
;;; Commentary: A comprehensive visual interface to Unix diff and patch utilities
;;; Code:
;;; Doc: https://www.gnu.org/software/emacs/manual/html_mono/ediff.html
(eval-when-compile
(require 'cl))
(defun user--ediff-mode-hook ()
"Ediff mode hook."
(setq
;; Don't wrap long lines.
truncate-lines t))
(defun user--ediff-startup-hook ()
"Ediff startup hook."
(validate-setq
;; Split window differently depending on frame width.
ediff-split-window-function (if (> (frame-width) (* 2 80))
'split-window-horizontally
'split-window-vertically))
;; Go to the first difference on startup.
(ediff-next-difference))
(defun user/ediff-mergetool ()
"Launch ediff as mergetool."
(defun ediff-write-merge-buffer ()
"Write merge buffer to file."
(let ((file ediff-merge-store-file))
(set-buffer ediff-buffer-C)
(write-region (point-min) (point-max) file)
(message "Merge buffer saved in: %s" file)
(set-buffer-modified-p nil)
(sit-for 1)))
(validate-setq
ediff-quit-hook 'kill-emacs
ediff-quit-merge-hook 'ediff-write-merge-buffer)
(let ((local (pop command-line-args-left))
(remote (pop command-line-args-left))
(base (pop command-line-args-left))
(merged (pop command-line-args-left)))
(lexical-let (;; Show only conflicts.
(ediff-show-clashes-only t))
(ediff-merge-files-with-ancestor local remote base nil merged))))
(defun user/ediff-difftool ()
"Launch ediff as difftool."
(let ((local (pop command-line-args-left))
(remote (pop command-line-args-left)))
(ediff local remote)))
(use-package ediff
:defer
:init
;; Go to first difference on start.
(add-hook 'ediff-startup-hook 'user--ediff-startup-hook)
:config
(validate-setq
;; Ignore changes in whitespace.
ediff-diff-options "-w"
ediff-ignore-similar-regions t)
(user/bind-key-global :util :diff 'ediff)
;; window manipulation utilities
(use-package ediff-wind
:ensure nil
:config
(validate-setq
;; Don't create a separate frame for ediff.
ediff-window-setup-function 'ediff-setup-windows-plain))
;; https://github.com/fourier/ztree
;; Ztree is a project dedicated to implementation of several text-tree applications
(use-package ztree))
(provide 'utilities/ediff)
;;; ediff.el ends here