Ogólnie nie lubię ramek. Teraz używam
(setq ediff-window-setup-function #'ediff-setup-windows-plain)
Aby upewnić się, że ediff
nie tworzy ramki po uruchomieniu.
Jednak niektóre polecenia, takie jak ediff-show-registry
wciąż otwierają nowe ramki.
Czy jest jakiś sposób, aby całkowicie wyłączyć tworzenie ramek ediff
?
ediff-skip-unsuitable-frames
lub komentując, że się całkowicie wewnątrzediff-show-registry
- np Wykomentuj:(ediff-skip-unsuitable-frames 'ok-unsplittable)
?ediff
bibliotek,(make-frame
a 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, żeediff-setup-windows-plain
powinna złożyć wniosek na całym forum bez różnychmake-frame
wyjątków.Odpowiedzi:
Istnieje wewnętrzny predykat o
ediff-init.el
nazwieediff-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:Zgadzam się z @lawlist, że jest to fajna prośba o funkcję - do naprawy
ediff-window-setup-function
.źródło
(advice-add 'ediff-window-display-p :override #'ignore)
, co można łatwiej odwrócićadvice-remove
(plus nie wymaga wcześniejszego załadowania ediff).ediff-setup-windows-plain
przejmuje 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-p
a jeśli jest fałszem, pomija niestandardową funkcję konfiguracji okna i używaediff-setup-windows-plain
. Więc dla mojej niestandardowej konfiguracji albo unikamediff-show-registry
, albo piszę niestandardowe polecenie.