Emacsの新しいパッケージシステムquelpaのhelmインターフェースを試作してみた

昨日紹介した新しいパッケージシステムquelpahelmインターフェース を書いてみました。

quelpa でインストールしたパッケージにおいて以下のことができます。

  • README.md (README.org) を開く
  • magit を使って git log を見る
  • パッケージリポジトリを dired で開く
  • ソースファイルを開く

もう少しquelpaを使ってみて、気に入ったら
github と MELPA に上げときますね。

設定 helm-quelpa.el(以下のコードと同一)

(require 'helm)
(require 'quelpa)
(require 'magit)

(defvar helm-source-quelpa
  '((name . "quelpa installed packages")
    (candidates . helm-quelpa-candidates)
    (display-to-real . intern)
    (action ("View README or source" . helm-quelpa-view-readme-or-src)
            ("Magit log" . helm-quelpa-magit-log)
            ("Open directory" . helm-quelpa-open-dired)
            ("Find source" . helm-quelpa-find-src))))

(defun helm-quelpa-candidates ()
  (mapcar 'car quelpa-cache))

(defun helm-quelpa-interactive ()
  (list (completing-read "Package: " (helm-quelpa-candidates) nil t)))

(defun helm-quelpa-open-dired (package)
  (interactive (helm-quelpa-interactive))
  (dired (helm-quelpa-package-directory package)))
(defun helm-quelpa-package-directory (package)
  (expand-file-name (symbol-name package) quelpa-build-dir))

(defun helm-quelpa-view-readme-or-src (package)
  (interactive (helm-quelpa-interactive))
  (cl-loop for file in (list "README.md" "README.org" (format "%s.el" package))
           for path = (expand-file-name file (helm-quelpa-package-directory package))
           when (file-exists-p path)
           return (view-file path)))
(defun helm-quelpa-find-src (package)
  (interactive (helm-quelpa-interactive))
  (find-file (expand-file-name (format "%s.el" package)
                               (helm-quelpa-package-directory package))))

(defun helm-quelpa-magit-log (package)
  (interactive (helm-quelpa-interactive))
  (let ((default-directory (helm-quelpa-package-directory package)))
    (magit-status (helm-quelpa-package-directory package))
    (magit-log)))

(defun helm-quelpa ()
  "Helm interface for installed quelpa packages.

- View README
- View git log
- Open directory
- Open source file
"
  (interactive)
  (helm :sources 'helm-source-quelpa :buffer "*helm quelpa*"))

実行方法

$ wget http://rubikitch.com/f/helm-quelpa.el
$ emacs -Q -f package-initialize -l helm-quelpa.el

Emacsネット塾(メルマガ)
Emacsの鬼るびきちのココだけの話
開講中!

★月々527円!初月無料★
★無制限メールコンサル★
★個人的なトラブル解決いたします★
★懇切丁寧な指導★
↓Emacsを手足のように扱いたい人はどうぞ↓
http://www.mag2.com/m/0001373131.html


このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

タグ

トラックバック&コメント

この投稿のトラックバックURL:

コメントをどうぞ

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このページの先頭へ