Saya mencoba mencapai perilaku berikut di Emacs24:
Saya suka menggunakan tema yang berbeda (solarized-dark vs solarized-light) tergantung pada apakah saya terhubung ke server yang sedang berjalan dengan bingkai terminal
% emacsclient -t
atau dengan bingkai gtk
% emacsclient -c
Tampaknya ini berhasil di Emacs yang lebih lama, tetapi Emacs saat ini saya tidak bisa menemukan jalan. Saya sudah mengecek SO (mis., Https://stackoverflow.com/q/18904529/152439 dan jawaban) dan milis (mis. Https://lists.gnu.org/archive/html/help-gnu-emacs/ 2012-02 / msg00227.html dan https://lists.gnu.org/archive/html/help-gnu-emacs/2012-02/msg00237.html ).
Setup saya saat ini terlihat seperti ini:
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes/solarized")
(if (daemonp)
(add-hook 'after-make-frame-functions
(lambda (frame)
(select-frame frame)
(if (display-graphic-p frame)
(load-theme 'solarized-light t)
(load-theme 'solarized-dark t)
)
)
)
(load-theme 'solarized-light t)
)
Masalah dengan ini adalah bahwa jika saya memiliki bingkai grafis terbuka dan kemudian membuka bingkai terminal dengan emacsclient -t
, tema solarized-dark diterapkan ke frame terminal baru (yang benar) dan bingkai grafis yang sudah terbuka (yang harus dibiarkan tidak tersentuh, idealnya). Setara terjadi ketika bingkai terminal sudah terbuka dan saya membuka bingkai grafis baru dengan emacsclient -c
.
EDIT: Dalam hal ini tidak mungkin dengan Emacs24 saat ini, apakah ada rencana untuk membuatnya mungkin lagi?
color-theme.el
IIRC mana yang memiliki pengaturan warna tergantung frame. Tidak ada keuntungan besar dalam menggunakan kemampuan bertema inbuilt selain dari mana-mana.color-theme
sistem tema Emacs 24 dan keduanya . Versi saya dari tema solarized juga mendukung kedua sistem, jika Anda memutuskan untuk pergi rute ini.Jawaban:
Anda tidak dapat melakukan ini menggunakan tema yang berbeda. Solusinya adalah membuat tema yang memiliki definisi wajah berbeda tergantung pada terminal. Jika Anda melihat contoh seperti
font-lock-comment-face
, Anda akan melihat cara kerjanya. Alih-alih menentukan((class color) (min-colors 88) (background dark))
Anda juga bisa menentukan(type tty)
atau(type graphic)
dll. Manual ini memiliki lebih banyak info .Saya kira Anda dapat menulis fungsi yang mengambil dua tema dan menghasilkan tema yang digabungkan, dengan wajah dari satu tema yang ditugaskan
(type tty)
dan wajah dari tema lain yang ditugaskan di(type graphic)
mana kedua tema asli digunakant
.sumber
color-theme-buffer-local menyediakan dukungan tema buffer-local untuk kedua tema warna dan sistem tema Emacs 24. Versi saya dari tema solarized juga mendukung kedua sistem, jika Anda memutuskan untuk pergi rute ini.
sumber
Anda dapat menentukan kondisi untuk kustomisasi wajah, seperti "mode terminal" atau "warna minimal" di editor penyesuaian:
Saat menyesuaikan wajah, klik tombol [Negara] dan pilih "Tampilkan semua spesifikasi tampilan". Kemudian Anda dapat mengatur kondisi untuk spesialisasi wajah lebih lanjut.
Berikut varian minimal untuk mengatur warna latar belakang menjadi hitam saat bingkai tty:
sumber