Jangan pernah membuat bingkai di ediff

14

Secara umum, saya tidak suka bingkai. Saat ini, saya menggunakan

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

Untuk memastikan bahwa ediffitu tidak membuat bingkai ketika dimulai.

Namun, perintah tertentu, seperti ediff-show-registrymasih membuka frame baru.

Apakah ada cara saya dapat sepenuhnya menonaktifkan pembuatan bingkai ediff?

PythonNut
sumber
Bagaimana memodifikasi ediff-skip-unsuitable-frames, atau berkomentar bahwa seluruhnya dalam ediff-show-registry- misalnya, komentar keluar: (ediff-skip-unsuitable-frames 'ok-unsplittable)?
lawlist
5
Ketika Anda berada di sana, pertimbangkan mencari sumber- ediffkeluarga perpustakaan (make-framedan Anda akan menemukan beberapa tempat yang perlu diperbaiki agar sesuai dengan preferensi Anda. Permintaan Anda tentu masuk akal, dan akan pantas (menurut saya) permintaan fitur kepada penulis dan / atau tim Emacs - kebanyakan orang akan menganggap ediff-setup-windows-plainharus berlaku di seluruh papan tanpa berbagai make-framepengecualian.
lawlist

Jawaban:

3

Ada predikat internal di ediff-init.el, disebut ediff-window-display-p. Ketika saya mendefinisikannya kembali (setelah memuat ediff, tentu saja) seperti itu, semuanya bekerja dalam satu bingkai, termasuk fungsi yang Anda sebutkan sebagai masalah:

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

Saya setuju dengan @lawlist bahwa ini adalah permintaan fitur yang bagus - untuk memperbaikinya ediff-window-setup-function.

cyberbisson
sumber
2
Ini mungkin lebih baik ditulis (advice-add 'ediff-window-display-p :override #'ignore), yang dapat lebih mudah dibalik dengan advice-remove(ditambah tidak perlu memuat ediff terlebih dahulu).
npostavs
@npostavs hebat! Terima kasih untuk kode yang lebih cerdas!
cyberbisson
Saya mencoba ini, tetapi sayangnya menyebabkan Ediff berhenti menggunakan fungsi pengaturan jendela kustom saya.
tboyce12
@ tboyce12 Itu membingungkan ... mengapa Anda memiliki fungsi pengaturan jendela kustom jika Anda tidak ingin jendela baru (yaitu bingkai) ditampilkan? Apa fungsinya?
cyberbisson
Saya ingin windows baru, tetapi bukan frame baru. Default ediff-setup-windows-plainmengambil alih seluruh bingkai - Saya ingin tetap membuka "konteks" jendela saya (mis. Catatan dan file lainnya). Jadi saya menulis fungsi pengaturan jendela khusus (menggunakan buffer-tampilan kustom yang didukung oleh jendela-ace untuk memilih di mana mungkin membagi windows dan menampilkan buffer baru). Tampaknya ketika Ediff melakukan booting, ia memeriksa ini ediff-window-display-pdan jika salah, memintas fungsi dan penggunaan pengaturan jendela kustom ediff-setup-windows-plain. Jadi untuk pengaturan khusus saya, saya akan menghindari ediff-show-registry, atau menulis perintah khusus.
tboyce12