Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beginning of window can't be in middle of subtraction in some circumstances #35

Open
billsacks opened this issue Mar 23, 2022 · 0 comments

Comments

@billsacks
Copy link

First off, thank you very much for your work on this vdiff package! Compared to ediff, I really like (1) the better alignment of diff regions, which stay aligned as you scroll; and (2) the highlighting of all fine diffs, rather than just those of the current region. I find that these two things make it easier to quickly review diffs.

I'm having trouble understanding when this issue appears and doesn't appear, but I'll describe what I know. My impression is that vdiff's scrolling is supposed to allow the beginning of a window to be in the middle of a subtraction region, thus keeping the two buffers aligned as you scroll through a long subtraction/addition. (It looks like this was something you improved with #5 .) This behavior works for me with a fresh, uncustomized emacs. However, with some customizations, this doesn't work: subtractions are shown either in their entirety or not at all, so that when scrolling, the full set of subtraction lines will be shown until the addition in the other buffer completely disappears. (I can make a screencast if this description isn't clear.)

My minimal reproducer involves an emacs customization that just prints a message on startup. It seems like some messages trigger the issue and others don't. This feels really bizarre, but I am able to reproduce this repeatedly with a particular message.

I have experienced this issue when comparing the two attached files (I have renamed them to have .txt extensions to make GitHub happy), starting at the top of each file. Here is my reproducer, using GNU Emacs 28.0.91 (build 1, x86_64-apple-darwin21.3.0, NS appkit-2113.30 Version 12.2 (Build 21D49)) of 2022-02-18, first giving a "good" result, then making a small change that results in a "bad" result:

(1) From a fresh emacs installation, run:

(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)

M-x list-packages

Then install vdiff from melpa

(2) Quit and restart emacs

(3) Load two files with C-x C-f:
(a) NutrientCompetitionCLM45defaultMod.F90
(b) NutrientCompetitionFlexibleCNMod.F90

(4) Expand emacs window to take up the full screen

(5) Run M-x vdiff-buffers; for first buffer select NutrientCompetitionCLM45defaultMod.F90; for second select NutrientCompetitionFlexibleCNMod.F90

(6) Do C-x o to move cursor to the right window (NutrientCompetitionFlexibleCNMod.F90). Position the mouse over that window and scroll about 10 lines. The removed lines on the left scroll away one at a time.

(7) Add the following to the top of ~/.emacs:

(message "[Prelude] Loading personal configuration files in /Users/sacks/.emacs.d/personal...")

(8) Quit and restart emacs

(9) Redo steps (3)-(6). This time, the removed lines on the left don't scroll away until the corresponding added lines on the right have all gone by.

(Note that I have also reproduced this behavior with emacs27.2, although with a less clean setup.)

NutrientCompetitionCLM45defaultMod.F90.txt

NutrientCompetitionFlexibleCNMod.F90.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant