これに気付くまで3時間以上

わたしゃ馬鹿か.
普通にRuby勉強してた方が効率的じゃないかと終わってから思う.
でも, 知らなきゃいつか悩んでただろうな, これで.

        • -

長いので先にちょっと強引に3行でまとめておく.

  • alignのHelpを見る. Arg list ...となっていておかしい.
  • infoとか他の関数でも同じ状態になっているので直そうとEmacs再インストールとか色々試す.
  • 3時間ぐらいかかって, M-x alignのように関数を先に実行しておけば問題無いと気づく. ドッと疲れる.

詳細な経緯は次の通り.



Helpがおかしい.
デフォルトのバインドだと, C-h f [コマンド名]でそのコマンド(関数)のヘルプが見られる.
align (M-x align)の整列規則に Ruby のそれを追加しようとしていたら, 気付いた.
align のヘルプがちゃんと表示されていない.

[Arg list not available until function definition is loaded.]

こんな風に出る.
関数定義の読み込みに失敗ってことかなと理解する.


何度かやっても同じように出る.
一応元のソースは見れるから, これだけだったら無視しようと思ってた.
でも, グローバル変数が変更できない.
そんなもんないって怒られる.
具体的には, align.elのであげるとこれ.

(setq align-perl-modes (cons 'ruby-mode align-perl-modes))

これやると怒られる.
Rubyのソース組みながら, 試してるときは問題なくいけた.
ちなみに上のは, ruby-modeの整列をとりあえず, perlので代用しようと思って書いた.
結果的にここで, このコードが問題無いと信じたのがまずかったみたいだなあ.
これは, *scratch*バッファで設定する分には問題なくても, .emacsファイルに書く分にはまずいってことだった.
当時は, 関数の実行はできるのに変な状況だと思ってた.



それからは, 原因探そうと迷走.
まず, emacs --no-init-file で.emacsファイルを読み込まないで実行してみる.
(上の設定は, エラーが出るからコメントアウトしていた.)
→同じ状態になる
ここで, .emacsは問題無いと判断.
.emacs関係のファイルのバックアップをとって,
再インストールを実行するという無茶苦茶な行動に出る.
(ホント原因が分からなかった.)


それでもダメ.
途方に暮れて, 色々試しはじめる.
load-file で path ごとファイルを直接指定すれば動くことに気付く.
でも他の関数は, ダメだと嘆く(実行はできる).



ヤケになって, load-pathに指定されているディレクトリにあるファイルを
全て load-file するコードをつくりはじめる.
途中であまりにも面倒になってあきらめる.
(正直, elispあんまり理解してないし.)


その後, *scratch*バッファでちょっと設定して確認, よさそうなら.emacsに保存,
もう1つEmacswo立ち上げて確認を繰り返す.
そして気付いた.
先に関数実行してたら何も問題無いと.
alignならば, M-x alignを先に実行しておくと, Arg list ...は出ない.
ドッと疲れが出る.
そして, 上記の.emacsの設定は, M-x customize-variableを使ってやれば良いことも理解する.
ものすごく簡単にできる.
さらにドッ疲れが出る.



これは, Emacsのマニュアルを読めば書いてあるのかなあ.
でも一度は読んでみるべきだよなあ.
学校のプリンタ使って印刷したんだし.


とりあえずもう寝よう.
文章が無駄に長い気もするけど, 愚痴みたいなエントリだし無視.