雑文発散

追記
過去の日記

2016-06-29 [長年日記]

[] 第107回 朝活を実施した

今朝の活動報告。

  • 仕事

もうこれで大丈夫かな?と思った実装にツッコミを貰って、なるほど!と思いつつ、そこの解答に届かない自分に凹む。


2016-06-28 [長年日記]

[] 第106回 朝活を実施した

今朝の活動報告。

  • 仕事

悩む。


2016-06-27 [長年日記]

[Emacs] Emacs HEAD が Mac でコンパイルできない件が解消した

おとといの日記に書いたように、Emacs の HEAD を Mac でコンパイルしようとすると、エラーで落ちていた件が解消した。これも Travis CI からの通知メールで知った。

これで最新の Emacs に inline patch を当ててビルドできる状態に戻ったので、いつでも HEAD の Emacs を使える。

ただ、これは「inline patch を当ててコンパイルした最新の Emacs」が使えるだけであって、「最新の Emacs で inline patch が正しく動く」ことが保証されているわけではない。

[] 第105回 朝活を実施した

今朝の活動報告。

  • 仕事

ちょっと作業が重くなってる。


2016-06-26 [長年日記]

[] マッサージとか仕事とか

昨日は現実逃避で Emacs の件を調べちゃっていたので、今日はマッサージへ行くついで(?)に少し仕事をしていた。まぁ、単にマッサージの予約時間よりも早めに移動して、カフェで仕事の実装をしていたというだけだけど。


2016-06-25 [長年日記]

[Emacs] Emacs の HEAD でコンパイルに失敗する原因を探っていた

数日前から自分用の homebrew-emacs のビルドが失敗するようになっていた。Travis CI で毎日ビルドしているのだけど、失敗の通知メールが来るようになって、その事に気がついた。

この homebrew-emacs では、これもオレオレの emacs-inline-patch を使っているので、そのパッチが Emacs HEAD の変更に追従できなくなったのだと思って調べていたのだけど、emacs-inline-patch は無関係だった。パッチを当てる前の状態でビルドしてもエラーが出ていたのだ。

  CC       nsfns.o
nsfns.m:728:35: error: expression is not assignable
  FRAME_INTERNAL_BORDER_WIDTH (f) = XINT (arg);
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
nsfns.m:730:37: error: expression is not assignable
    FRAME_INTERNAL_BORDER_WIDTH (f) = 0;
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^

これなんだろうなーと、git blame や git log を見てアタリをつけていると、どうやらこの commit の変更が要因らしいということが分かった。

この修正で FRAME_INTERNAL_BORDER_WIDTH の実装が変わっている。従来は FRAME_INTERNAL_BORDER_WIDTH (f) に直接代入することができていたようなのだが、それができなくなったみたいだ。

その代わりに内部の実装で使っている f->internal_border_width に直接代入してやればいいのでは?と思って、次のようにしてみた。

  /* FRAME_INTERNAL_BORDER_WIDTH (f) = XINT (arg); */
  f->internal_border_width = XINT(arg);
    /* FRAME_INTERNAL_BORDER_WIDTH (f) = 0; */
    f->internal_border_width = 0;

これで試しに make してみると、先ほどまで出ていたエラーは出なくなった。

さらに Emacs のメーリングリストを眺めていたら、このメールを見つけた。

これは Windows 用 Emacs のビルドが失敗する問題を修正したものなのだけど、オレがやってみた修正と同じ方法を取っている。それであれば、先ほどの修正内容で正しそうな気がしてきた。更に Windows は改善したけど Mac は未対応ということであれば、、、もしかして、Emacs のソースコードに貢献するチャンスなのでは!?と思って、どうやって修正を送るかを調べてみた。

Emacs は Git を使ってソースコード管理をしているのだけど、そのホストは git://git.sv.gnu.org/emacs.git になっている。GitHub 上でコードの閲覧ができるようになっているけど、それはミラーされているだけのもの。従って GitHub 上での pull request 運用は行われていない。

リポジトリ内の CONTRIBUTE を見てみると、結構長々と書かれていて、ちょっとカジュアルさがない(泣)

どうやら次のようにして bug-gnu-emacs[at]gnu.org へ送信しろってことみたいだ。

git send-email --to=bug-gnu-emacs[at]gnu.org 0001-DESCRIPTION.patch

実際に送った場合はどうなるんだろう?と、この宛先であるメーリングリストのアーカイブを眺めていたら、このメールを発見した。

これは上記の git send-mail で送ったものでは無さそうだけど、指摘箇所も修正箇所もオレのと全く同じ。既に1日前には報告と修正があがっていたのであった。

ということで、Emacs の commit log に自分の名前が刻めるかも!?と思って、Emacs の内部のことはほとんど分からないながらも頑張って調べてみたのだけど、残念ながら既に対応済みの案件であった。