これに気付くまで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を使ってやれば良いことも理解する.
ものすごく簡単にできる.
さらにドッ疲れが出る.
とりあえずもう寝よう.
文章が無駄に長い気もするけど, 愚痴みたいなエントリだし無視.