昔の最近の出来事(2022.04)

2022/04/30

AM中に起床。

東京都コロナ感染者。新規は 2979人。少ないのは連休中だからか?連休明けにどうなるか。

絵文字じゃない文字の合字。日本語のひらがなで濁音が付く場合、 普通に入力すれば、例えば unicodeコードの「ば(U+3070)」になるかと思います。 で、もう一つ「結合文字の濁点」というものがあるらしく、 「は(U+306f)」と 「結合文字の濁点(U+3099)」を並べる事で 「ば」と表示する事ができるようです。 Emacsで harfbuzzを使って 変数auto-composition-mode が tになっていると、見た目の区別は付かないのですが 文字サーチすると「U+3070」単一と「U+306f U+3099」では違う文字という認識になるようです。 しかもコード上は「は」と「濁点」を並べて"表示上で結合"しているので、「は」で文字サーチすると「ば」も 一致したようにハイライトされます。因みに先日の絵文字でも同様で👨で文字サーチすると👨‍🌾も見た目一致します😓
Webブラウザでは合字の表示がサポートされていますが、 Chromeと Edge(Chromium Edge)では「ば,ば,バ」は文字サーチすると同一と見なすようです。 FirefoxはEmacsと同じく区別するので「ば,ば」のどちらかで文字サーチするともう片方は一致しません。 Firefoxでは「は」でサーチすると「ば」もハイライトされます。 Chromeと Edgeは謎のがんばりが入っているようで「は」をサーチしても「ば」はハイライトされないようです。

と言う訳で、文字検索する時や編集するときに事故しか起こらないと思いますので、「結合文字の濁点」 を使う積極的な理由は無いように思います。少なくとも混在は避けるべきだろうと想像します。 処理も複雑だろうと思うのですが、検索や編集まで含めてコンピュータで文字を扱う事を考えると 「やらかしている感の漂う仕様」に思えます。

前述「結合文字の濁点」の話を記していて少し困った事が。 scratchバッファで変数 auto-composition-modeを nilにすると 結合文字の濁点 が単一文字で表示されるのですが、 別のHTMLモードのバッファでは結合した形でしか表示されませんでした。そうなんだっけ?と思って調べてみたら、 auto-composition-modeという変数と同名のコマンドが存在していて、 「M-x auto-composition-mode」でトグル動作になるようです。バッファローカルのモードのようです。 因みに 「ほとんどのマイナーモードは、モードコマンドと同じ名前のモード変数(mode variable)をもっています。」なのだそうな。 知りませんでした😅。という訳で一旦解決。
もう一つ「M-x global-auto-composition-mode」ってのもありますがこちらは動的に変更するものではなくて、 バッファを開いたときの auto-composition-mode の初期値として作用するようです。 auto-composition-modeは モードラインに表示されていないようなので、現在 tなのか nilなのかは 「M-x describe-variable」とかで調べるしかないなぁ?とは思ったりも。

Akkoってメーカーのキーボードを知ったり(参考)。 エルゴノミクスっぽい感じですが、「B」キーが右手側と左手側の両方に配置されています。 TANEは例えば ローマ字入力では「ba」「be」は右手でBキーを、「bu」「bi」「bo」は左手でBキーを押すので、 左右分離しているキーレイアウトは無理だろうと思っているのですが、このキーボードなら大丈夫かも?わからんけど。

2022/04/29

AM中に起床。

東京都コロナ感染者。新規は 3893人。

おもむろにPS4のバンパラ(バーンアウトパラダイス)を始めたらずっとやってしまったり😓。 シームレスでロード待ちも無いので 止めどころがなくて困ります。

魔女の宅急便。改めてモブがスゲぇなと思います。

絵文字の合字。 👨と🌾をZWJで繋ぐと👨‍🌾(男性の農夫)になったり、 👩と🌾をZWJで繋ぐと👩‍🌾(女性の農夫)になったりするのですが、役が成立するか否かは知らないと判らないし、 連想もできるとは限りません。どう考えてもIMEで「のうふ」を変換してその候補に並んでいないと 文字として選択できないと思います。で、IMEで選べるのであれば、👨‍🌾(男性の農夫)を👩‍🌾(女性の農夫)に 書き換えたいと思ったとき、合字にする前の👨の部分を👩に変える事で編集する事も無いだろうと思う訳です。 そして表示できるか否かがグリフの有無だけではなくて、表示するシステムにも依存する事になり、 大分面倒臭いんじゃなかろうか?とも思う訳です。 日本語文字を入力するのにはIMEを使用して「読み」に対応する「文字列(漢字/ひらがな/英数字/絵文字)」にする必要がある言語だと 「辞書登録の延長」という考え方で良いんじゃないの?と思わなくもありませんが、 IMEの必要無い言語だとそうもいかない事情があるのかしら?🤔

2022/04/28

テレワーク。早くもなく遅くもなく。

東京都コロナ感染者。新規は 5394人。

Web巡回して終了。

2022/04/27

テレワーク。早めに終了。

東京都コロナ感染者。新規は 6052人。

調べ事して終了。

2022/04/26

テレワーク。早めに終了。

東京都コロナ感染者。新規は 5048人。

以前、clangでEmacsってビルドできるってのを確認してたのですが、 そういやネイティブコンパイルを有効にしてもビルドできるのか?と思って試してみたり。 問題無くビルドできて起動も出来ました。ただし、clangでコンパイルされるのはEmacs本体だけですけど。

2022/04/25

テレワーク。早めに終了。

東京都コロナ感染者。新規は 3141人。

Web巡回して終了。

2022/04/24

AM中に起床。

掃除したり洗濯したり。

東京都コロナ感染者。新規は 4936人。

Emacsの28系のgitブランチを時々pullしてみているのですが、結構更新が入っているなぁ?と思ったりも。 27の時はあまり頻繁に更新されている感じではなかったように思ったのですが気のせいかしら? (なので27.1→27.2で ほぼほぼ何も直ってなかったという感じだったと思います) 29系の変更量は多いですが haiku向けが割合を占めているように思ったりも。感覚的なものですけど。

2022/04/23

AM中に起床。

生活備品の調達におでかけ。

東京都コロナ感染者。新規は 5387人。

以前libjxlをビルドした時に cjxl_ngと djxl_ngというツールの ビルドに失敗していたのですが、なんとなく直ってっぽい感じがしたのでビルドを試してみました。 結果、Cygwin64+gcc(g++)を使って失敗することなくビルドできました。 でも、cjxlも cjxl_ngも Segfaultしてエンコードできず。 clangを使ってビルドしたcjxlと cjxl_ngは、どちらもSegfaultすること無く動きました。gcc(g++)がバグっているのか、 clangだとたまたま動くコードになっているだけなのかの区別は付かず。 ただ、libjxlのビルド手順では clangを使う感じになっているので動作保証の範囲内かも知れませんが。

ところで、libjxlを g++でビルドしているとコンパイラのプロセスサイズが数百MBになってました。 emacsのビルドでも コンパイラのプロセスサイズが 50MB~100MB前後になっているのですが、 20年前だと考えられないくらいのメモリ消費量だよなぁと思ったりも。やってる事ってそんなに違うんだっけ?🤔

2022/04/22

テレワーク。早めに終了。

東京都コロナ感染者。新規は 5396人。

Web散策していて知ったページ。 グラフィックボード載ってるのにオンボードのビデオ出力を繋いで気づかない人が居るって本当? てか、なんで気づかないのか判らない🤔

2022/04/21

テレワーク。早めに終了。

東京都コロナ感染者。新規は 6713人。

Web巡回して終了。

2022/04/20

テレワーク。早めに終了。

東京都コロナ感染者。新規は 6776人。

調べ事をして終了。

2022/04/19

テレワーク。早めに終了。

東京都コロナ感染者。新規は 5583人。

合字絵文字の編集。28.1では合字の絵文字が表示できるようになってるのを知ったのですが、 役が揃ったら即座に結合されてしまう為、組み合わせを一部変えたい場合に編集できないなぁ? と思いました。調べてみると auto-composition-mode という変数があって、これが t(デフォルト) の場合は役が揃ったら即座に結合表示されるのですが、nilに設定すると結合前の文字列で表示されるようです。 ZWJ(Zero Width Jointer)にもカーソルが置けるので編集可能です。
あれ?もしかして27.2では auto-composition-mode が nilだったのか?と思って調べてみたら tになってました。 でも結合表示されないようです。

2022/04/18

テレワーク。早めに終了。

東京都コロナ感染者。新規は 3479人。

Revision 2022 の授賞式を観たあと、あまりの眠さに急速停止。

2022/04/17

AM中に起床。

掃除したり洗濯したり。

東京都コロナ感染者。新規は 5220人。

アナウンスは出てないのですが、Cygwin64の Emacs 28.1-1 を入れてみました。 ネイティブコンパイルは無しのバージョンなのでひとまず27.2までと同じ感じです。 emacs-w32については with-imagemagickじゃなかったり、SVGがレンダリングできなかったりは27.2と変わりないです。 という訳でIMEパッチを当てた自前ビルド(ただしnative-compilationは無しで)に置き換え。 そういやパッケージ版は何故か .pdmpファイルが無かったです。 でも自前ビルドした方は .pdmpが生成されるので27.2と同じ要領でコピー。いきなりダメだったりはしなさそう。

テストしていた時は全く気づいていなかったのですが、パッチした28.1のemacs-w32では合字の絵文字が表示できるようになっていました。

Emacs-28.1 harfbuzz合字表示

ただ、線画のレイヤーだけで描いている為、見た目はなんだかイマイチです。カラーで表示できればなぁ🥺。
27.2の時はこんな感じにEmacs上は人がバラバラに表示されてました。 人の絵文字の間の ZWJ(Zero Width Jointer)には一応カーソルを置けたので、合字にしない状態で編集できる感じだったかも。 LuaLaTeX経由でPDF変換すれば合字として変換されてました。 因みに、Cygwin64パッケージのemacs-w32(28.1-1)では uniscribeでの表示となるのですが画像の合字絵文字では 4つ並びの豆腐で表示されるようです。

という訳で 「Emacsの雑記」を28.1ベースに更新してみました。御参考まで。

2022/04/16

AM中に起床。

熱は少し出て調子は良くないけど、2回目ほどの感じではない気も。

東京都コロナ感染者。新規は 6797人。

何気にCygwinのsetupでパッケージを見てみたらアナウンスは出ていないと思うのですが Emacs の28.1(Cygwinパッケージ上は28.1-1) が来ているようだったり。一応アナウンス待ち。 そういやテスト版のアナウンスにも記されていましたが、 emacs-X11は無くなってemacs-gtkに変更されるようです。パッケージでは 27.2のemacs-X11がアンインストール対象となり、 その代わりに 28.1のemacs-gtkがインストールされるという感じになるみたい。

何気にPouetを見たら Revision 2022が開催中なのを知ったり。 (JSTで)比較的早い時間のグラフィックスコンポは見られるかな?

CygwinのEmacs 28.1-2のテスト版のアナウンスがされてたり(28.1-2(64-bit only, TEST)のアナウンス)。 よく把握していなかったのですが、28.1-1はネイティブコンパイル無しのようです (28.1-1(TEST)のアナウンス)。 で、今回アナウンスのあった 28.1-2は 64bitのみでネイティブコンパイル有効のテスト版という事のようです。 28.1-2は1ヵ月ほどテスト期間を取るようです。リベースの方法についても記されていますが、 正式リリースされたとしても当面の間は「そういうもんだ」という回答の質問が挙がるんだろうなとは思ったりも。 以前にも記しましたが、起動時オプションでネイティブコンパイルを切り替えられないと、 二種類パッケージを出さなくてはならなくて面倒臭そう。 ところで 28.1-1の正式リリースアナウンスは出ないのだろうか?

2022/04/15

テレワーク。本日は午前で終了。

午後にワクチン3回目接種完了。さてどうなるか。

東京都コロナ感染者。新規は 6768人。

そういや14年物の携帯の時計が5分とかのオーダーでズレてたり。 自動時刻合わせがONになっているのになんでだ?と思い、一旦手動で時刻合わせしてみて、再度自動時刻合わせに戻すと やっぱり5分すすむので、時計サーバーの時刻がズレてんの?って感じ🤔。謎。

Emacs-28.1でTRAMP経由で画像ファイルをアクセスしたらエラーメッセージが出ている件。 どうにも原因判らず。ファイルが読み込めない訳ではないのと、 気になるなら「/ssh:...」を使えばエラーメッセージは出ないの で少し様子見。

様子見と言いつつ、たまたま同じビルドのEmacsを二つ立ち上げたところ、 何故か二つ目の方はエラーメッセージが出てませんでした。なんだこれ??🤔 もしかして Cygwinの不具合なのか?という気がしてきました。というのを心に留めて様子見するという事で。

2022/04/14

テレワーク。早めに終了。

東京都コロナ感染者。新規は 8540人。関東圏は耐えてる感じだけど 全国的には増加傾向なんだよなぁ。
上海のロックダウン。ロックダウンしてるのに減らないのはなんで?と以前書きましたが 減っていないらしい。こうなると違う経路で感染してるのを疑った方が良いんじゃないか?と思ったりも。 例えば、検査の為に行列作ってるけど大丈夫?とか、検体採取のオペレーションを間違ってて事故感染してる可能性 (一人採取毎に手袋交換や消毒をしないまま新品の採取棒を触ってウイルスを次の人に植え付けるみたいな)とか、 マンションの換気空調が実は全ての部屋で繋がっている可能性とか。 人からしか感染しないのを人同士の接点を無くす事で拡大を抑えるというアルゴリズム自体は間違っていないにも 関わらず、結果が伴わないのはアルゴリズム通りになっていない意外に考えられません。 プログラムをバグらかした理由とかも大抵そういう事だよね?と思ったりもします。

ELISPのデバッガを初めて使ってみました😅。まだ要領がつかめてなくて思ったところを観察できず😓。 当たり前なのですが、見掛け上 簡便に記した関数(例えばmessageやformatといった関数)でも、 ステップ実行すると色々な関数を呼び出しまくっているという感じです。 なのですが、ELISPのデバッガは関数呼び出しの単位で止めたりステップ実行したりという仕組みのようです。 C言語のprintf関数のコードを命令単位でステップ実行しているような感覚です。

2022/04/13

テレワーク。早めに終了。

東京都コロナ感染者。新規は 8253人。

Emacs-28.1でTRAMP経由で画像ファイルをアクセスしたらエラーメッセージが出ている件。 「mm_receive_fd」って文字列を一体誰が出しているんだ?を調べてみたり。 /usr/libや /usr/binを調べてみたところ、どうやら /usr/bin/slogin と /usr/bin/ssh.exe に 含まれていそうだったり。

$ strings -f /usr/bin/* | grep mm_receive
/usr/bin/slogin: mm_receive_fd
/usr/bin/ssh.exe: mm_receive_fd

でもやっぱり判らん。ただ、エラーしたあともう一度やるとイケるという動きになってるようです。 また、「mm_receive_fd: no message header ...」の後ろに正解のELISPコード(リスト)が含まれていて、 mm_receive_fd ...の文字列を削って正解のELISPコードを read関数で読み込むようにすれば イケるんじゃないか?とは思ったりも。

段々解ってきたきたようなそうでもないような。関数 tramp-do-file-attributes-with-perl の実行で mm_receive_fd:... が起こっているようです。リモートマシンにsshで乗り込んで、perlのワンライナーを 実行してリモートファイルのstat()情報をELISPのリストにprintfで変換表示したものを、 Emacsの一時バッファに取り込んでリモートファイルの情報として取得する....という事をやってるみたい。 sshでリモートマシンに乗り込んでコマンド実行しているだけのようなので、 bash上でも適当なコマンドライン実行で再現するんじゃ?と思ったのですが、流石にそんなに甘く無いようです😓。

Cygwinパッケージでは28.1のテスト版が公開されていますが、問題無さそうならば 数日中に正式リリースするようです(アナウンス)。

2022/04/12

テレワーク。早めに終了。

東京都コロナ感染者。新規は 6922人。

Emacs-28.1でTRAMP経由で画像ファイルをアクセスしたらエラーメッセージが出ている件。 28.0.92ではエラーしない為、差分のあるELISPを少しずつ置き換えてみたのですが反応せず。 ふと思って28.0.92の方をビルドし直してみたところエラーが再現するようだったり。 そういやw32apiのヘッダとランタイムが 10.0.0-1 にアップデートされてたなと思ったり。 むむ、そっちなのか?...いやいや、エラーしているのはELISPの方だし....?🤔

メッセージ文字列を頼りにもう少し調べてみたところなんとなくこうなんじゃないか?というのが 判ってきたようなそうでもないような。
tramp-send-command-and-read という関数があり、ここでエラーメッセージを出しているようだったので、 デバッグメッセージを仕込んで様子を見てみたところ、 何かしらELISPのリスト風の文字列がバッファに入るので、それを readという関数で ELISPとして読み込むという事をやってっぽいです。で、何かしらの読み込みを行っている中で 「mm_receive_fd: no message header」という文字列がバッファに入る場合があり、 これをELISPのつもりでread関数で読み込むとELISPの体をなしていないのでエラーしているようです。 これが先日のメッセージの中の 「does not return a valid Lisp expression: ‘mm_receive_fd: no message header」 の事で、「‘mm_receive_fd: no message header」がELISPっぽくないってのがこのメッセージの意味 のようです。てか、何やっているコードで検出したエラーメッセージなのかを知らないと全然意味が判りません😓。
って事が判ったところで「mm_receive_fd」って文字列をELISPやEmacs本体ソースコードをgrepしてみるも見つけられず。 という事から、外部のライブラリの問題だろうと推測。

mm_receive_fdって一般的にどのプログラムが発する文字列だろうと思いWeb検索してみると、 Cygwinとsshに関連した古い質問記事が見つかったのですが イマイチ何のことやらよく判らず。元の英語の質問が無駄に自動翻訳されたページにクローンされてて 沢山情報がありそうで実は全然無いという状況にしょんぼり🥺。 CygwinのMLアーカイブから文字列検索できないか?と思ったのですが、そういや検索機能が無くなっているなぁ? 前はあったと思ったのですが...?

Cygwinパッケージのダウンロードファイルの日付から、w32apiの他に libgcryptも 1.10.1-1 に アップデートされてるな....これか?

2022/04/11

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 4562人。

Emacs-28.1でTRAMP経由で画像ファイルをアクセスしたら何やらエラーメッセージが出ている件。 28.0.92だとエラーしないようなのですが、28.0.92と 28.1 の src/* や lisp/* を比較するも 関連しそうな差分が見当たらず。エラーメッセージは以下のような感じ。

Tramp: Inserting ‘/scp:tane@192.168.86.129:/home/tane/Pictures/xxxx.jpg’...done
Wrong type argument: "Wrong type argument", "stringp nil"
File error: ‘tramp_perl_file_attributes /home/tane/Pictures/xxxx.jpg string’ does not return a valid Lisp expression: ‘mm_receive_fd: no message header
mux_master_process_new_session: failed to receive fd 0 from client
(nil 1 "tane" "tane" (25172 17110) (24772 13078) (24890 9620) 3129218 33204 t 137085 -1)
’
Type C-c C-c or C-c C-h to view the image as text or hex.

画像は表示されるので読み込みが失敗している訳では無さそう。 ネイティブコンパイル無しでも再現するのでELISPもしくはEmacs本体のコードに起因するものだと推測しています。 「/ssh:...」ではエラーメッセージは出ないので「/scp:...」特有の何かみたいですがなんだ?🤔

2022/04/10

AM中に起床。

掃除したり洗濯したり。

東京都コロナ感染者。新規は 8026人。
そういや重傷者数や死者数は減少傾向ではあるな。 死ぬ可能性の高い人からスクリーニングされているのか、ワクチンの3回目効果なのかは判りませんが。

ELISPネイティブコンパイル。Webで少し調べて見た感じ、あまり沢山の例がある訳では無いみたいですが、 極端な改善例を除外してみると 平均で2倍以下の速度改善というのが実態なのかなぁ?という気がします。 平均で2倍以下の速度改善だと「速くなったと実感するまではいかない」と思います。 少しでも稼げるなら良いという考え方はあるとは思いますが、速度と安定性の天秤だと考えると 今のところ CygwinでビルドしたEmacsは釣り合いが取れていないかもな とは思います。

そういえば、EmacsはCygwinで野良ビルドするのが当たり前の事になっているので気にしたことが無かったのですが、 そもそもネイティブコンパイルを有効にした場合、.elnを生成するのに binutils(アセンブラ,リンカ) とライブラリが別途必要になります。Windowsのコンパイル済みバイナリを使う場合ってどうなるんだ?と思ったりも。

DMDの2.099.1がリリースされていたらしい(Change Log: 2.099.1)。 2.099.0のリリースが3月6日だったので、なんか早いな。

2022/04/09

AM中に起床。

東京都コロナ感染者。新規は 8102人。今だ感染する人ってどういう生活様式の人なんだ?
上海のロックダウン。以前から思っていますが ロックダウンしてるのに感染が収まらないのはなんで?って毎度思います。

ELISPネイティブコンパイル。実行速度が速くなるのか実験。 結果から言うと、速くなっているのかよく判らず😓。何か間違っているのかも知れません。

一旦メモ。以下のような(大分)適当に時間のかかるループコードを作成してみました。

(defun natvcomp ()
  "Native Compile test"
  (interactive)
  (let ((sum 0)
        (count 100000000)
        start_time
        end_time)
    (setq start_time (current-time))
    (dotimes (n count)
      (setq sum (+ sum n))
      )
    (setq end_time  (current-time))

    (message (format "%s sec %d"
                     (format-time-string
                      "%s"
                      (time-subtract end_time start_time))
                     sum))

    ))

ここではファイル名を natvcomp_test.elとして上記コードを保存してあるとします。
以下のような感じで実行してみました。


てのを以下のような感じで計ってみました。Emacs本体はCygwin64で野良ビルドしたものになります。

version .el* 3回実行平均
27.2 .el 15.0 sec
同上 .elc 3.3 sec
28.1 .el 15.0 sec
同上 .elc 3.3 sec
同上 .eln 3.0 sec

.elcは4に近い3秒、.elnは3に近い3秒なのかも知れませんが、 いずれにしてもこのコードでは .elcと.elnとの実行時間の違いはほぼ無し。 .eln はほぼ0秒になるくらいを期待しましたが、そんなに甘くは無い...のか?🤔。 全体的に大した速度改善が見込めないのであれば、 Cygwinのはネイティブコンパイルは無しで安定性の方を取るかも?というのは個人的な感想です。 それよりも、.elcにすると意外と速くなるんだと今更思ったりも😅。

4月6日付けでInkscape 1.2Betaが 公開されているのを知ったり。5月予定の1.2リリースに向けて順調に進んでいるようです。

何気にEmacs-28.1でTRAMP経由で画像ファイルをアクセスしたら何やらエラーメッセージが出ているようだったり。 一応ファイルは読み込めているようですが、debug-on-error が何故か有効にならないため どこでエラーが起こっているのか判らず。 エラーメッセージから当たりを付けてデバッグメッセージを仕込んでみるも原因判らず。どうやって調べたもんか。

2022/04/08

テレワーク。早めに終了。

東京都コロナ感染者。新規は 8112人。

ネイティブコンパイルなEmacs-28.1。コンパイルに失敗するELISPがあるようなのですが 「Package cl is deprecated」に関連しそうな感じだったので、いくつかパッケージをアップデートしてみたり。 なんとなく使えるようですが、 Cygwinが「child_info_fork::abort」のメッセージを出して 非同期のネイティブコンパイルやELISPアプリの実行に失敗する場合があるようです。 一度abortが発生すると復帰できなくなるようなので、 一旦Emacsを終了させるしかないようです。ですが、一応動いていそうです。

ネイティブコンパイルで結構ワーニングが出るのですが綺麗にするのが大変かも。くじけた。

ところで、Emacsの起動時オプションで ネイティブコンパイルを無効にした起動ってできないのかしら? Cygwinはちょいちょい rebaseが問題になったりするのですが、起動できないような事が起こった場合でも 「少し遅くても使える」のは意味があるんじゃないかと思ったりも。起動時オプションは無さそうなので バイナリパッケージにするのならば、ネイティブコンパイルありとなしの両方を同梱した方が良いんじゃないかとは思ったりも。

2022/04/07

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 8753人。横ばいだな。

藤子不二雄A氏 死去。88歳か。

Cygwinパッケージに emacs-28.1-1(TEST) ってのが来ている模様。まだ様子見。
Emacs-28の gitリポジトリをpullしてみたら 28.1がリリースされたばかりなのに 何やらTRAMP関連の大量の変更が入っているようだ?と思ったら間違ってコミットしてしまったみたい? なにがなにやらよくわからず。

--with-native-compilationでコンパイルできるのか試したり。 結局libgccjitが要るのかどうかが判らなかったのですが(以前の日記)、 Cygwinのパッケージに libgccjit0 てのがあって(以前は存在しませんでした)、それを入れる必要がありました。 入れないとconfigureはやっぱり通りません。で、makeするといつもの感じでコンパイルステップが進むと 今まで無かった *.elnの生成が始まりました。 native-lisp ってディレクトリの下に生成されるようです。 インストールせずに ./src/emacs.exe で起動すると動くようです。噂通りに使用しているELISPは 非同期に .elnが生成され、~/.emacs.d/eln-cache/28.1-* の下に置かれるようです。 しばらく生成に時間がかかるようですがほどなくして静かになりました。でも、いくつかのコマンドは エラーが出て使えなかったりするようです。むぅ。

2022/04/06

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 8652人。

Emacs-28.1でTRAMP経由のファイルアクセスって試してなかったかも?と思い試してみたら、 なにやらエラーメッセージが出たり。 tramp-dump-connection-properties って関数を書き換えて .emacs上で再定義していたのですが、 24.5時代の関数をベースにしていたのもあって、28.1でとうとうエラーするようになったという感じかも。 再定義をやめればエラーメッセージは出なくなったり。

2022/04/05

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 6968人。

調べ事をして終了。

2022/04/04

テレワーク。早くもなく遅くもなく終了。

東京都コロナ感染者。新規は 4384人。

Emacsのftpアーカイブサイトを見てみたら 28.1が来ているようだったり。という訳でテストしていた28.0.92からIMEおよびその他修正を含んだパッチを作って 28.1に当ててビルド。ただし--with-native-compilationは無しで。ビルド自体もちょろっと動かしてみた感じも問題は無さげ。 Cygwinパッケージでnative-compilationが有効だったら野良ビルドの方でも試してみよう。

とかしている間にリリースアナウンス (Emacs 28.1 released)が出てました。

2022/04/03

AM中に起床。

掃除したり洗濯したり。

東京都コロナ感染者。新規は 7899人。

Emacs28系のgitブランチをpullしてみたら、etc/HISTORYが更新されてて 28.1が4月4日にリリースされる事に決まったみたい。 ほぼ同時に次の28.2向けの28.1.50のブランチが生成されたようなので出るのは間違い無さそう。 28.0.92のリリースが3月13日だった(過去の日記)ので意外と早いなとは思ったりも。 ところでCygwin64のパッケージはネイティブコンパイル有効にされるのだろうか?

2022/04/02

AM中に起床。

東京都コロナ感染者。新規は 7395人。

Emacsでフォントサイズを変えて表示を見ている時に、何気なく美人時計の表示を行ってみたら なんだか時刻が見にくい画像があるなぁ?と思ったり。よく調べてみるとフォントサイズを大きくした時に 画像が想定よりも大きく拡大されているのが原因でした。
Emacsで画像を表示するには create-image という関数を使って画像オブジェクトを生成し、 そのオブジェクトを insert-image という関数を使って カーソル位置に挿入します。 画像オブジェクトは一つの文字のように扱う感じになる訳ですが、 フォントサイズを大きくしたり小さくしたり変更すると、デフォルトではフォントサイズの変化に 応じて画像オブジェクトもサイズが自動で変更されます。これは グローバルな設定として image-scaling-factorという変数がデフォルトで「auto」に設定されているからです。 ただ、image-scaling-factorをauto以外に変更してしまうと画像表示の色々な所が影響を受けてしまいます。 そこで、画像オブジェクト毎にscalingを設定する事ができるようになってます。 美人時計では画像をウインドウサイズに合わせる処理を自前で行っているのですが、 ピクセル数を元に拡大率を決定しているので、それに加えて更にimage-scaling-factor設定の拡大倍率を 乗せてしまうと拡大し過ぎになるという事になってました。 画像オブジェクトを生成する時に明示的にプロパティ「:scale 1.0」を指定する必要がありました。 SVG描画を行うsysmonの時にも同じような事があって直したのですが(過去の日記)、 美人時計の方は気づいていませんでした😓。

という訳で 美人時計のELISP を更新してみました。御参考まで。

2022/04/01

テレワーク。気持ち早めに終了。

東京都コロナ感染者。新規は 7982人。

18歳に成人年齢引き下げ。来年から「成人の日」って何の日になるんだ?とは思ったりも。 酒やタバコがOKになるだけの日なら本来の意味が失われて形骸化しそう。


TOP PREV