Emacs
EmacsDay 3

helm-dirsetを使って「複数ディレクトリを分けたわかりやすいインターフェイス」でファイル検索

More than 1 year has passed since last update.

昨日は @tadsan さんの .emacsの紹介 でした。.emacsは定期的にメンテナンスをしたほうがいいですよね。最近自分もトレンドから遅れ気味です。

さて、唐突ですが、ansible.elの紹介をしたいと思います。

ansible.el

tty01.gif

ansible.elはAnsibleのPlaybookを書くためのスニペットセットです。

インストール

M-x package-install ansible

使い方

YASnippetがインストールされていて、設定がされている前提で

M-x ansible

で有効になります。

また以下のようなコードを.emacsに追加することで、YAMLモードにフックさせることも可能です。

(add-hook 'yaml-mode-hook '(lambda () (ansible 1)))

(余談) ansible.elのsnippetの作成方法

自分のブログでも紹介したのですが、実はAnsible Moduleを実装しているそれぞれのソースコードには、Moduleの使い方などがYAMLで書かれています。(おそらくこのコードからドキュメントも生成している??)

YAMLで書かれているということはパースがしやすいということです。

これをスクリプトでパースして、YASnippet用のスニペットファイルを生成しています。現在はAnsible v1.8.1を対象に生成しています。

「Ansible Best Practicesで構成されたディレクトリを簡単に移動したい」

せっかく記述が簡単になってきたので欲しくなってくるのが、ファイル移動です。

「apacheロールのmain.ymlからphpロールのmain.ymlへ移動したい」ということもあるはずです。

この時気になるのが「同名ファイル」です。プロジェクトルートからファイル群を一気に検索してもいいのですが、視認性が悪いです。

そういった場合のファイル移動系のEmacs Lispはcake.elやcake2.elで作成経験がありました。

今回(というか半年前)ansible.elへ導入するために、そこを切り出してライブラリ化してみました(そして忙しさの中忘れ去っていました)。

helm-dirset.el

インストール

絶賛MELPAへの登録申請中です。

使い方

(require 'helm-dirset)
(defun some-mode::helm-directories ()
  (interactive)
  (helm-other-buffer
    (helm-dirset-sources '("/path/to/dir"
                           "/path/more/to/dir2"
                           "/Users/k1low")) nil))

こんな感じに設定することで、各ディレクトリのファイルがディレクトリごとに確認できます。

tty02.gif

基本的に何かしらのマイナーモードに組み込む想定で作っていますが、
よく参照するディレクトリがあるなら、自身で関数を作ってもいいかも知れません。

というわけで

ちょっとしたHelmインターフェイスでした!

明日は @kaz-yos さんです!