neotreeというパッケージを用いることでファイルやフォルダをツリー表示できる。本パッケージについては多くの先人が参考記事を書いているので、ここでパッケージの詳細は述べない。
neotree-modeではSPCキーに、neotree-quicklook
というチラ見のための関数がバインドされている。この関数はカーソル下のアイテムがファイルならばそれを別ウィンドウに開き、フォルダであれば展開することができる。ただ開いたファイルはそのままバッファとして残り続けるため、バッファを消すのが少々手間という問題がある。
一方、MacOSのFinderではSPCキーにQuick Lookがバインドされており、ファイル固有のアプリケーションを開かずとも、内容をプレビューできる優れものである。
本記事の主旨は表題の通りであり、MacOSのQuick Lookをneotree-modeでも利用可能にするものである。
以下がそのコードである。
(require 'neotree)
(defun neotree-ql-dwim(file-path &optional arg)
(interactive)
(neo-global--select-mru-window nil)
(call-process-shell-command
(format "qlmanage %s -p\"$@\" &>/dev/null" file-path) nil 0))
(defun neotree-quick-look2 ()
"Quick Look like NeoTree open event."
(interactive)
(neo-buffer--execute nil 'neotree-ql-dwim 'neo-open-dir)
(neo-global--select-window))
(with-eval-after-load "neotree"
(define-key neotree-mode-map (kbd "SPC") 'neotree-quick-look2))
追記 (2024/07/08):
Ubuntuで同様の機能を実現する記事を書いた:
追記 (2024/07/13):
コードを見直し、Async Shell Command バッファのポップ周りのごちゃごちゃした操作をなくした。