Subject: Ediff 2.81.5 of July 4, 2013; The ediff-registry buffer doesn't set focus to frame when viewing an open session.

From: Itaj Sherman <[email-masked]>
Date: Wed, 8 May 2019 17:06:40 +0300

Congratulations!  You may have unearthed a bug in Ediff!

Please make a concise and accurate summary of what happened
and mail it to the address above.
-----------------------------------------------------------

1) Open several ediff-files3 sessions (whether on single frame or
multiple). Say sessions 1, 2, 3 ...
2) focus the control panel of a diff session-1
3) click 'R' to show registry. A new frame is opened with registry
buffer, raised and focused.
4) select session-1. Click 'RET' to show the session.
The frame with this session will be raised **but not be focused**.
6) focus this frame's contron panel and click 'R' to go back to
registry.
The registry frame will be raised **but not focused**.
7) focus registy and select session-2. Click 'RET'.
session-2 frame is raised and focused.
8) click 'R' back to registry
The registry frame will be raised **but not focused**.
9) focus registy and select session-2. Click 'RET'.
session-2 frame is raised **but not focused**.

Generally another frame you ask to see is raised - but is only focused
the first time it is opened - on later requests it will be raised but
not focused.

My conf:

(customize-set-variable 'ediff-split-window-function
'split-window-horizontally)
(customize-set-variable 'ediff-window-setup-function
'ediff-setup-windows-plain)

(setq itaj-ediff-face-noncurrent '((t (:background "#404010"))))
(setq itaj-ediff-face-current '((t (:background "#006000"))))
(setq itaj-ediff-face-fine '((t (:background "#903030"))))
(custom-set-faces `(ediff-fine-diff-A ,itaj-ediff-face-fine))
(custom-set-faces `(ediff-fine-diff-B ,itaj-ediff-face-fine))
(custom-set-faces `(ediff-fine-diff-C ,itaj-ediff-face-fine))
(custom-set-faces `(ediff-current-diff-A ,itaj-ediff-face-current))
(custom-set-faces `(ediff-current-diff-B ,itaj-ediff-face-current))
(custom-set-faces `(ediff-current-diff-C ,itaj-ediff-face-current))
(custom-set-faces `(ediff-even-diff-A ,itaj-ediff-face-noncurrent))
(custom-set-faces `(ediff-even-diff-B ,itaj-ediff-face-noncurrent))
(custom-set-faces `(ediff-even-diff-C ,itaj-ediff-face-noncurrent))
(custom-set-faces `(ediff-odd-diff-A ,itaj-ediff-face-noncurrent))
(custom-set-faces `(ediff-odd-diff-B ,itaj-ediff-face-noncurrent))
(custom-set-faces `(ediff-odd-diff-C ,itaj-ediff-face-noncurrent))

(defun disable-y-or-n-p (orig-fun &rest args)
  (cl-letf (((symbol-function 'y-or-n-p) (lambda (prompt) t)))
    (apply orig-fun args)))

(advice-add 'ediff-quit :around #'disable-y-or-n-p)

Emacs  : GNU Emacs 25.2.1 (x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll
bars)
 of 2017-09-22, modified by Debian
Package: Ediff 2.81.5 of July 4, 2013

current state:
==============
(setq
 ediff-diff-program "diff"
 ediff-diff-options ""
 ediff-diff3-program "diff3"
 ediff-diff3-options ""
 ediff-shell "sh"
 ediff-use-faces t
 ediff-auto-refine 'on
 ediff-highlighting-style 'face
 ediff-buffer-A #<buffer test_npal_locks_out_of_resources.c<t0>>
 ediff-buffer-B #<buffer test_npal_locks_out_of_resources.c<w>>
 ediff-control-buffer #<buffer *Ediff Control Panel<5>*>
 ediff-forward-word-function 'ediff-forward-word
 ediff-control-frame nil
 ediff-control-frame-parameters '((name . "Ediff") (minibuffer)
(user-position . t) (vertical-scroll-bars)
  (scrollbar-width . 0) (scrollbar-height . 0) (menu-bar-lines . 0)
  (tool-bar-lines . 0) (left-fringe . 0) (right-fringe . 0) (auto-lower)
  (auto-raise . t) (visibility) (width . 1) (height . 1) (top . 1081)
  (left . 1921))
 ediff-control-frame-position-function 'ediff-make-frame-position
 ediff-prefer-iconified-control-frame nil
 ediff-window-setup-function 'ediff-setup-windows-plain
 ediff-split-window-function 'split-window-horizontally
 ediff-job-name 'ediff-files3
 ediff-word-mode nil
 buffer-name "*Ediff Control Panel<5>*"
 ediff-device-type 'x
 )