Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 Mar 2023 18:46:11 +0900
From:      Kaoru Kusachi <tika@st.rim.or.jp>
To:        users-jp@freebsd.org
Subject:   Re: screen and emacs
Message-ID:  <cacf0008-4277-6131-058c-af82c1d267ac@st.rim.or.jp>
In-Reply-To: <ydl4jq37z94.fsf@pc02.mar>
References:  <ydl4jq37z94.fsf@pc02.mar>

next in thread | previous in thread | raw e-mail | index | archive | help
草地@リムネットと申します。

普段は 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 <ume@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 の設定によるのではないかと推測します。
>>
>> --
>> 梅本 肇
>> ume@mahoroba.org  ume@FreeBSD.org
>> プログラムは書いた人の意図ではなく書かれた通り動く  I hate Modula-3 :-)
> 
> --------
> 丸山 直昌 まるやま なおまさ
> メールアドレス: masa@amogha.jp
> 

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?cacf0008-4277-6131-058c-af82c1d267ac>