トップ 最新

かってきままな日々

2020-04-16 (Th) [長年日記]

_ Emacs のフォント設定をいじる

NasuM を使ってたんだけど、これだけじゃ Color Emoji が表示されないんだよな…

てなわけで、fc-cat を実行した結果から、フォントが持ってる文字の文字コードを 割り出して、Emacs Lisp として出力するコードを Emacs Lisp で書いた。

…が、NasuM は文字が歯抜けになっていて、文字コードの範囲がたくさんできてしまう。 NasuM の方は大雑把に括って、Noto Color Emoji の方はある場所だけ set-fontset-font するようにした。

Emacs 起動ごとに fc-cat してると遅いので、 まずは Emacs が起動した状態で

  1. fc-cat してパースして、欲しいフォントについて、 S式をフォントごとに新しいファイルに出力する
  2. 目視で中身を確認して、rename する。 (この時点で、NasuM は rename せずに大雑把な手作りを残す)

で、Emacs 起動時には

  1. 上で作った S式をファイルから読み込む
  2. フォントごと、文字コード範囲ごとに set-fontset-font する

さらに、欲しい機能として、キー操作で文字サイズを大きくしたり 小さくしたりしたいので、

  • set-fontset-font する時には :size を指定
  • サイズを変更する時には、「フォントごと、文字コード範囲ごとに set-fontset-font する」をやりなおす。

今、この最後の項目を、全 frame に対して行っているので、frame ごとにしたい、ってのが課題。

ちなみに、探しててなかなか見つからなかったので、メモ。 ファイルに保存してある S式を評価して結果を得る方法。

   (with-temp-buffer
     (insert-file filename)
     (read (current-buffer)))

こんなんで良し。 load とか eval とかで探してたから全然見つからなかった。 この辺の関数は nil や t を返すんだよね。 read なら結果を返してくれた。

_ macOS で nfs トラブルが発生

macOS を Catalina に上げてから、vagrant 内から nfs mount しようとしても できない、という症状が発生。 数分後に手動で mount してやるとできる、というおまけ付き。 どう考えてもどこかで timeout してる症状。

vagrant の issue を漁りまくったり、/etc/nfs.conf をいじったりしても、 なかなか解決せず。

nfsd を restart した後、2分ほど rpcinfo に mountd が現れない。 2分経つと現れて、その瞬間、mount 可能になる。

mount できない間、以前 mountd がいたところの udp port にパケットが飛んでる。

macOS に log stream --style=syslog なんていうコマンドがあるのを知った ところから話が進み始めた。

mount 可能になるその瞬間、エラーがログに出力されていた。

couldn't register NFS/TCP service

だったかな。

それなら話は早いわけで。TCP を使わないようにすればいい。 /etc/nfs.conf に以下のように設定。

nfs.server.tcp = 0

これで解決。

ただし、何故 register できないのか、そこの根本原因はわからないままだけど。 これで nfsd も mountd も TCP で register されなくなった。

nfs.conf に何も書かない時でも nfsd は tcp も udp も register できてた。 できてなかったのは mountd。つまり mountd の tcp を register しようとして できなかったってこと? エラー吐いた後、それでも mountd は udp のも tcp のも 登録できてる。別の register 情報でリトライして成功したってこと? register ようとした情報までは出力されていないので、 これ以上はわからないかな。

register って portmap への register のことだよね。 面倒くさくてたまらんわ。