• 作成:

MELPAに自作のEmacs Lispパッケージauto-sudoedit, recentf-remove-sudo-tramp-prefix, symbolword-modeを登録するpull requestを送信しました

Emacs Advent Calendar 2017 - Qiitaの5日目の記事です.

私の.emacs.d/mineには自作の5つのパッケージがあり, 自前で読み込んでいます.

作ったのは大体2014~2015年で, ずっと放置していました.

自分で使う分には全くこれで問題ないのですが, せっかく作ったのだから公開して普通に使えるようにするべきだと思ったので, アドベントカレンダーを機にmelpaに登録してみようと思います.

ncaq/eww-goto-alcは英辞郎on the webのログイン必須の上ログインにJavaScript実行が必須という仕様変更に耐えきれなかったので消去しました. サヨナラ.

ncaq/ncaq-emacs-utilsは本当に自分用の雑多なユーティリティなのでmelpaには多分登録しません. するとしても切り出して機能別に分割します.

と原文を読みつつ書いていきます.

レシピの追加自体はたったの1ファイルなので簡単でした.

問題なのはパッケージをちゃんとしたものにすることでした. コメントに依存関係を記述したり, package-lintに怒られないようにプレフィクスを付けたり, checkdocに怒られないように一つ一つ関数にコメントを付けていくのが面倒でした.

Emacs Lispのパッケージが大抵超絶巨大な1つのファイルに全部書き込んでいる理由がやっとわかりました. モジュールをコメントで表現するため分割するのが面倒くさいからですね.

package-lintの怒り方は非常に分かりやすかったのですが, checkdocのDocumentation style: 5Errorsの意味が分からなくてちょっと詰まりました. checkdoc-current-bufferを実行してみたらわかりました. 大文字小文字まで怒るんですね…

EMACS=/path/to/emacs make sandboxを環境変数に代入していることに気が付かずに, Emacsで実行するのかと思ってemacs make sandboxと実行してハマってました. make sandboxを実行しましょう.

というわけで, ちゃんとパッケージの形式に沿うように書き直して, 3つpull requestを作りました. とても疲れました. 同じようなパッケージがある場合ハネられることがあるらしいですが, そしたらそれを使います.

当初はここにパッケージの説明を書こうと思いましたが, 本体のREADME.md放置してこちらに書くのはどうなんだろうと思ったので, これを機にREADME.mdをある程度書きました. そちらを参照してください.