LoginSignup
10
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-12-03

昨日は @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 さんです!

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10