Re: screen and emacs
- Reply: Takashi SHIRAI : "Re: screen and emacs"
- In reply to: Kaoru Kusachi : "Re: screen and emacs"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 30 Mar 2023 12:20:08 UTC
On Thu, 30 Mar 2023 18:46:11 +0900 Kaoru Kusachi <tika@st.rim.or.jp> wrote: 青木@名古屋です。 sysutils/screenは使っていないのですが、FreshPortsで該当の項目を 見てみたところ、デフォルトではportsのものが入っていればそちら、 入っていなければbaseのncursesを使うようです。 となると、termcapの設定に問題があるのかもしれませんね。 https://cgit.freebsd.org/src/tree/share/termcap/termcap?h=releng/13.1 2757行目あたりからscreen用の設定になっているようですが、 https://cgit.freebsd.org/src/commit/share/termcap/termcap?h=releng/13.1&id=e47f1857b2499eaf33c65f6b437f0e564ef4a371 上記が直近の変更で、まさにscreenのエントリを行進しています ので、このとき元になったscreen同梱のterminfoなりそこからの 変換でなにかあったのかもしれません。 2020年の更新なので、最終更新が2015年1月のreleng/10.2には 入っていませんし。 > 草地@リムネットと申します。 > > 普段は 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. > > -- 青木 知明 [Tomoaki AOKI] <junchoon@dec.sakura.ne.jp>