草地@リムネットと申します。

普段は FreeBSDをデスクトップ環境として使ってはいないのですが、少し古い手元で
動くデスクトップ環境 (FreeBSD 11.4 + xorg 7.7 + xfce4-wm 4.16 + emacs 27.2 +
screen 4.8.0) で確認すると xfce-terminal で screen を起動して emacs -nw を実
行すると同じ様にモードラインの表示が見えなくなると言う現象は確認出来ました。

更に調べてみるとどうも普通にターミナル内で emacs -nw で起動した場合と screen
内で実行した場合ではどうも emacs のカラーマップが変わってしまう様でモードライ
ンの background colorと foreground colorが同じになってしまって見えない状態に
なっている様です。

とりあえず、emacs を screen内で起動した時にだけ強制的にモードラインの色を変更
する様なコードを書いてみましたので、.emacs に追記して確認してみて下さい。

;;
;; mode-line-color (screen)
;;
(when (string= "TERM=screen"
    (format "%s" (nth 0 (nth 0 (list
        (mapcan #'(lambda (e) (and (string-match "^TERM=" e) (list e)))
            initial-environment))))))
  (progn
    (set-face-foreground 'mode-line "black")
    (set-face-background 'mode-line "darkslategrey")
  )
)

これでとりあえず、emacs の mode-lineが見える様にはなるのですが、emacsの
ターミナル設定の問題なのか screenの問題なのかは原因不明です。

# 普段は emacs -nw --color=never で使っているので全く気が付きませんでした。

なお、mode-line に指定している色については M-x list-colors-display で表示
される色の名前を設定しています。

とりあえず参考まで。

On 2023.03.30 11:24, 丸山直昌 wrote:
丸山です。

screen の元ではTERM 環境変数の値は screen です。これは太古の昔からそうで
した。私は

screen も emacs(前身の Nemacs も含めて)もかれこれ30年使っていますが、こ
んな経験は初めてです。最近まで使っていた10.2ではこんなことはありませんで
した。

と書きましたが、具体的には、以下の環境で "screen"+"emacs -nw" を使って、
これまでこの種の問題に遭遇することなく使えていたのです。

SunOS4.1上のkterm
FreeBSD1.1.5.1上のkterm
FreeBSD2.2.6上のkterm
FreeBSD4.4上のkterm
FreeBSD4.7上のkterm
FreeBSD5.5上のkterm
FreeBSD6.4上のkterm
FreeBSD7.4上のkterm
FreeBSD9.1上のkonsole
FreeBSD9.2上のkonsole
FreeBSD9.2上のxfce-terminal
FreeBSD10.2上のkonsole
FreeBSD10.2上のxfce-terminal

ただし、FreeBSD4.4 より前の3つについては、 emacs の日本語対応がない時代
だったので、emacs の日本語化(多言語化)バージョンである mule で、mule -nw
とやっていました。

それが最近FreeBSD13.1に version up してみたら、この現象に遭遇したので、
私は「これは最近入り込んだバグだ」と申し上げているのです。最近10年間ほど
は.screenrc はいじっていません。ただバグがscreenの termcap にあるのか、
screen自体にあるのか、 emacs にあるのか、ncurses(3X)にあるのか、私には判
別がつきません。

Wed, 29 Mar 2023 20:51:00 +0900
Hajimu UMEMOTO <u...@mahoroba.org> writes:

端末と screen 環境下の差は TERM 環境変数の値の違いによるものと思います。
Konsole は使ったことがないのでどのような値になるのかわかりませんが、

私はバグレポートのつもりで書いているので、実際に使ってみて検証してからリ
プライして欲しかったです。

xterm あるいはそれに類するものになっていると思います。screen はデフォ
ルトでは screen になっています。
term コマンドで TERM を設定できます。例えば xterm と設定したいのであれば、

        term xterm

と ~/.screenrc ファイルに書いておきます。

これは、私の理解では

         env TERM=xterm emacs -nw

とたいして変わりないと思いますが、やはりダメです。

今時の端末なら、xterm-256color と指定したいかもしれません。

TERM=screen でなぜモードラインが反転しないのかはわからないですが、おそ
らく emacs の設定によるのではないかと推測します。

--
梅本 肇
u...@mahoroba.org  u...@freebsd.org
プログラムは書いた人の意図ではなく書かれた通り動く  I hate Modula-3 :-)

--------
丸山 直昌 まるやま なおまさ
メールアドレス: m...@amogha.jp


--
草地 薫 (Kaoru Kusachi) t...@st.rim.or.jp
Nakno,Tokyo,Japan.


Reply via email to