Slide 1

Slide 1 text

パッケージ作成

Slide 2

Slide 2 text

はじめに ● “info elisp” の Packaging の章を読みましょう

Slide 3

Slide 3 text

チェック項目 ● ヘッダ , フッタは適正か ● メタ情報は適切か ● 必要最低限の環境でどうさするか ● バイトコンパイル時に警告 , エラーが出ないか

Slide 4

Slide 4 text

ヘッダ / フッタ ● 1 行目は ファイル名 --- 概要 概要は M-x list-packages Desription カラムに表示 される ● 最終行は ;;; ファイル名 ends here

Slide 5

Slide 5 text

メタ情報 ● 作者 ● バージョン ● 依存関係 ● パッケージコメント

Slide 6

Slide 6 text

必要最低限の環境で動作するか ● Cask を使おう (el-get でも可 ) – bundler 的なもの – 依存関係を記述 ● cask exec emacs -Q -l my-package.el としてエラーが出なければ依存関係は適切 ( 特定の関数実行時にロードする場合は除く )

Slide 7

Slide 7 text

Cask ファイル例 ;; repository (source gnu) (source melpa) ;; read dependencies from helm-ag.el (package-file "helm-ag.el") (development (depends-on "ert") (depends-on "helm-projectile"))

Slide 8

Slide 8 text

バイトコンパイル ● 変数名 , 関数名の typo の検知 ● lexical-binding が有効だと未使用変数も指摘 ● deprecated, obsoleted な関数 , 変数の指摘 ● バイトコンパイル時も cask exec emacs -Q

Slide 9

Slide 9 text

名前付け ( 関数 , マクロ , 変数 ) ● Emacs には名前空間が一つしかない – 安易な名前は容易に衝突する ● パッケージ名を各名前のプレフィックスに使う ● 名前が長くなるが , 補完を使えば耐えられる – 重複するパッケージがないか事前に確認仕様 ● melpa, el-get のレシピ名を確認

Slide 10

Slide 10 text

●遅延ロード対応 ● 必要な関数に autoload cookie をつける ;;;###autoload ← 該当する S 式の前に追加する

Slide 11

Slide 11 text

テスト ● テストパッケージは標準 ● travis-ci 等の CI サービスの利用も難しくない

Slide 12

Slide 12 text

Enjoy Emacs Lisp Hacking