warna emacs berdasarkan variabel lingkungan $ TERM

9

Saya ingin tahu apakah mungkin untuk membuat emacs, ketika berjalan di layar gnu atau sesi tmux, gunakan warna yang sama seperti kapan TERM=xterm. Dalam layar gnu atau sesi tmux, TERM=screendan emacs menggunakan serangkaian warna yang berbeda dibandingkan dengan kapan TERM=xterm.

Misalnya, ketika TERM=xterm-256color, warna latar depan font-lock-comment-faceadalah 'Firebrick'. Tetapi ketika TERM=screen-256color, itu diatur ke 'chocolate1'.

Agar tmux berfungsi dengan baik, variabel TERM harus disetel ke layar atau turunannya, jadi mengatur ulang TERM bukan pilihan bagi saya.

ALiX
sumber
(Seandainya saya bisa berkomentar ...) Tidak jelas bagi saya jika Anda telah mencoba menjalankan emacs sebagai: TERM=xterm emacsuntuk memaksa TERMpengaturan variabel untuk emacs. Apa yang terjadi ketika Anda melakukan itu?
verdammelt
Saya sedang bereksperimen dengan itu saat ini. Saya belum mendeteksi hal-hal buruk yang terjadi. Tampaknya tmux dapat dikonfigurasi untuk memancarkan urutan kunci xterm (meskipun TERM = xterm masih tidak didukung). Berdasarkan FAQ tmux, tmux mungkin datang untuk mendukung xterm di masa depan, bukan hanya layar.
ALiX

Jawaban:

3

The definisifont-lock-comment-face mencakup banyak varian untuk kasus-kasus dari berbagai dukungan warna.

  • The chocolate1varian digunakan ketika ada setidaknya 88 warna yang tersedia dan “latar belakang” adalah “gelap”.
  • The Firebrickvarian digunakan ketika ada setidaknya 88 warna yang tersedia dan “latar belakang” adalah “cahaya”.

Perbedaan tersebut disebabkan oleh beberapa kode yang memberi arti khusus untuk nilai-nilai JANGKA yang dimulai dengan xterm, rxvt, dtterm, dan eterm: menganggap mereka memiliki “cahaya” latar belakang.

Anda harus dapat menyesuaikan frame-background-mode* sesuai lightnilainya untuk selalu menggunakan varian warna "terang".

Jika Emacs Anda tidak cukup baru untuk memilikinya term/screen.el, maka Anda juga perlu menyesuaikannya untuk diri Anda sendiri yang melakukan panggilan penyesuaian warna yang sesuai. Anda mungkin menggunakan salah satu dari Emacs batang , atau saya memiliki sebuah Intisari yang mencakup .emacs.d/lisp/term/screen.el(dengan beberapa bit ekstra untuk mengenali urutan pengubah + panah / Home / End disediakan oleh tmux ‘s xterm-keyspilihan), dan .emacsmodifikasi yang diperlukan untuk membiarkannya secara otomatis beban .

Tentu saja, masih ada bit kode lain yang secara langsung memeriksa nilai TERM dan melakukan sesuatu yang berbeda untuk screen- dan xterm-seperti nilai ...

* Mx menyesuaikan-frame-latar-mode variabel

Chris Johnsen
sumber