Nigdy nie twórz ramki w Ediff

14

Ogólnie nie lubię ramek. Teraz używam

(setq ediff-window-setup-function #'ediff-setup-windows-plain)

Aby upewnić się, że ediffnie tworzy ramki po uruchomieniu.

Jednak niektóre polecenia, takie jak ediff-show-registrywciąż otwierają nowe ramki.

Czy jest jakiś sposób, aby całkowicie wyłączyć tworzenie ramek ediff?

PythonNut
źródło
Jak o modyfikacji ediff-skip-unsuitable-frameslub komentując, że się całkowicie wewnątrz ediff-show-registry- np Wykomentuj: (ediff-skip-unsuitable-frames 'ok-unsplittable)?
prawnik
5
Gdy już tam jesteś, zastanów się nad przeszukaniem źródła rodziny ediffbibliotek, (make-framea znajdziesz kilka miejsc, które wymagają naprawy w celu dostosowania do twoich preferencji. Twoja prośba jest z pewnością uzasadniona i zasługuje (moim zdaniem) na prośbę o dodanie funkcji do autora i / lub zespołu Emacsa - większość osób uważa, że ediff-setup-windows-plainpowinna złożyć wniosek na całym forum bez różnych make-framewyjątków.
prawnik

Odpowiedzi:

3

Istnieje wewnętrzny predykat o ediff-init.elnazwie ediff-window-display-p. Kiedy go przedefiniowałem (oczywiście po załadowaniu Ediffa), wszystko działa w jednej ramce, łącznie z funkcją, o której wspomniałeś jako problem:

(defun ediff-window-display-p () nil)

Zgadzam się z @lawlist, że jest to fajna prośba o funkcję - do naprawy ediff-window-setup-function.

cyberbisson
źródło
2
Można to lepiej napisać (advice-add 'ediff-window-display-p :override #'ignore), co można łatwiej odwrócić advice-remove(plus nie wymaga wcześniejszego załadowania ediff).
npostavs
@npostavs great! Dzięki za mądrzejszy kod!
cyberbisson
Próbowałem tego, ale niestety spowodowało to, że ediff przestał używać mojej niestandardowej funkcji konfiguracji okna.
tboyce12
@ tboyce12 To mylące ... dlaczego masz niestandardową funkcję konfiguracji okna, jeśli nie chcesz, aby nowe okna (tj. ramki) były wyświetlane? Czym zajmuje się ta funkcja?
cyberbisson
Chcę nowe okna, ale nie nowe ramki. Domyślnie ediff-setup-windows-plainprzejmuje całą ramkę - chcę, aby moje okna „kontekstowe” były otwarte (np. Notatki i inne pliki). Napisałem więc niestandardową funkcję konfiguracji okna (używa niestandardowego bufora wyświetlania zasilanego przez ace-window, aby wybrać, gdzie może dzielić okna i wyświetlać nowe bufory). Wygląda na to, że kiedy Ediff uruchamia się, sprawdza to, ediff-window-display-pa jeśli jest fałszem, pomija niestandardową funkcję konfiguracji okna i używa ediff-setup-windows-plain. Więc dla mojej niestandardowej konfiguracji albo unikam ediff-show-registry, albo piszę niestandardowe polecenie.
tboyce12