summaryrefslogtreecommitdiff
path: root/modules/custom-buffer-file.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2025-11-03 16:10:13 -0600
committerCraig Jennings <c@cjennings.net>2025-11-03 16:10:13 -0600
commitaea61b34693f164ced731cf3b0f0e8ee798c342c (patch)
tree1db40a1c366ad9111c07bb17d1060eab99d851e2 /modules/custom-buffer-file.el
parent4a7eb7fcf6f90574b92337a280a202808a969772 (diff)
feat: Upgrade diff-buffer-with-file to ediff and add difftastic for git
Two improvements for better diff experience: 1. **Upgraded cj/diff-buffer-with-file to use ediff** (custom-buffer-file.el) - Replaced basic unified diff with ediff-current-file - Now uses existing ediff config (horizontal split, j/k navigation) - C-; b D now launches interactive ediff instead of text diff - Simplified from 17 lines to 5 lines - Removed TODO comment about difftastic integration 2. **Added difftastic for git diffs** (vc-config.el) - Installed binary: difftastic 0.64.0 via pacman - Added difftastic.el package integrated with magit - Keybindings in magit-diff: - D → difftastic-magit-diff (dwim) - S → difftastic-magit-show - Provides structural, language-aware diffs for git changes - Better visualization of code structure changes **Result:** - Buffer vs file: Interactive ediff (can navigate, merge, revert) - Git history: Structural difftastic (language-aware visualization) - Right tool for each job Serves Method 3: "Make Fixing Emacs Frictionless" - Better diffs = easier debugging and code review Updated todo.org: Method 1 progress 7/13 (was 5/13) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Diffstat (limited to 'modules/custom-buffer-file.el')
-rw-r--r--modules/custom-buffer-file.el22
1 files changed, 6 insertions, 16 deletions
diff --git a/modules/custom-buffer-file.el b/modules/custom-buffer-file.el
index 007fbe1a..105ed4ff 100644
--- a/modules/custom-buffer-file.el
+++ b/modules/custom-buffer-file.el
@@ -252,23 +252,13 @@ Do not save the deleted text in the kill ring."
(message "Copied: %s" (buffer-name)))
(defun cj/diff-buffer-with-file ()
- "Compare the current modified buffer with the saved version.
-Uses unified diff format (-u) for better readability.
-Signal an error if the buffer is not visiting a file.
-
-TODO: Future integration with difftastic for structural diffs (Method 3)."
+ "Compare the current modified buffer with the saved version using ediff.
+Uses the same ediff configuration from diff-config.el (horizontal split, j/k navigation).
+Signal an error if the buffer is not visiting a file."
(interactive)
- (let ((file-path (buffer-file-name)))
- (cond
- ((not file-path)
- (user-error "Current buffer is not visiting a file"))
- ((not (file-exists-p file-path))
- (user-error "File %s does not exist on disk" file-path))
- ((not (buffer-modified-p))
- (message "Buffer has no unsaved changes"))
- (t
- (let ((diff-switches "-u")) ; unified diff format
- (diff-buffer-with-file (current-buffer)))))))
+ (if (buffer-file-name)
+ (ediff-current-file)
+ (user-error "Current buffer is not visiting a file")))
;; --------------------------- Buffer And File Keymap --------------------------