I want ediff to use split-window-sensibly so it will stack the diffs on top/bottom when the window is narrow, but side-by-side when the window is wide. I'd like to use a single frame instead of the overlay help window (ediff-setup-windows-plain).

So I set these two settings in my .emacs:

(setq ediff-split-window-function 'split-window-sensibly)
(setq ediff-window-setup-function 'ediff-setup-windows-plain)

and M-x vc-ediff in a git-controlled and modified file.

Then ediff fails to display the top window. Only the help buffer and buffer B are displayed (with diff highlighting and ediff keybindings). As far as I can tell, all I can do to fix this is to use ediff-setup-windows-multiframe instead.

I'm using Emacs 24 on Ubuntu (I'm also using spacemacs, but I reproduced without my .emacs.d)

Any idea what I can do? I'm not even sure where I'd report a bug (emacs bug, ediff bug, already fixed bug?).

  • If there's a behavior you don't find right when running your elisp code in a stock emacs session (emacs -Q) (without your .emacs (~/.emacs.d/init.el preferred instead)), you can always do M-x report-emacs-bug. You will learn from follow up emails if that actually is a bug or if you need to do something different to get what you want. – Kaushal Modi May 11 '15 at 14:50
  • 1
    I can confirm that I can see the behavior you describe in an emacs -Q session. The window splitting works fine if ediff-split-window-function is set to 'split-window-horizontally or 'split-window-vertically; but not when set to 'split-window-sensibly. To be specific, the failure to split windows happens only when split-window-sensibly tries to split windows vertically, not when horizontally. To test this out, make your window/frame wide and then you should see ediff happening between horizontally split buffers without any issue. (emacs 25.x) – Kaushal Modi May 11 '15 at 17:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.