web-dev-qa-db-ja.com

tmux内でemacs16カラーサポートを取得する正しい方法は?

私は自分の端末(gnome-terminal)用にすでに設定した16色のパレットを利用するemacs用のカスタムカラーテーマ(ソーラー化)設定を取得しようとしています。

TERM=xterm-256colorを使用して通常の端末からemacsを実行すると、M-x list-colors-displayを正しく取得して、16のANSIカラーすべてを表示できます。赤、緑、明るい緑、明るい赤など。

ただし、tmuxおよびTERM=screen-256color内から実行すると、M-x list-colors-displayは基本的な8色のみを一覧表示し、拡張された明るい色は表示されません。両方の設定で、(display-color-cells)を評価すると256色が報告されます。私が見つけることができる明るい色への唯一の参照はLISP/term /xterm.elとLISP/term/rxvt.elにあるので、問題はTERM設定にあるように思われます。

Tmuxが正しく機能するには、TERMをscreenまたはscreen-256colorに設定する必要があるため、TERMを別の方法で設定する必要はありません。エイリアスを使用して運が良かった:

alias emacs='TERM=xterm-256color emacs'

Emacsに16のANSIカラーすべての使用を許可するように強制するためのこれよりも良い方法はありますか?

4
agrubb

ご覧のとおり、追加の色はTERM固有のライブラリファイルによって構成されています(例:term/LISP)。新しいバージョンのGNU Emacsにはterm/screenが含まれており、term/xtermの色の定義を再利用していますが、あなたのように聞こえますEmacsのバージョンはこれを行いません。

新しいEmacsにアップグレードしたくない場合は、おそらく 要点 のコンテンツを使用できます。これにはterm/screen.elと、それを有効にするために.emacsに入れることができるビットが含まれています。そのバージョンのterm/screen.elには、tmuxxterm-keysオプションを有効にした場合に役立つと思われるいくつかの重要な定義も含まれています。

コードのコアビットは次のようになります。

;;; .emacs addition
(add-to-list 'load-path "~/.emacs.d/LISP/")

;;; ~/.emacs.d/LISP/term/screen.el
(load "term/xterm") 
(defun terminal-init-screen ()
  (xterm-register-default-colors)
  (tty-set-up-initial-frame-faces))
2
Chris Johnsen