2016年9月9日金曜日

helm-swoopのwindowを下部にfull widthで表示する

動機


Full HD (1920x1080)のLCDを使っている関係で、Emacsを縦に3分割 (こんな感じ → [||])している。

この使い方だと、複数のbuffersの内容を参照できて便利だ。一方で、window widthが2分割に比べて狭くなるので、helm関連のwindowでは一度に表示できる情報量が減ってしまう。

特に困るのはhelm-filelist+のように1行の情報量が多いbufferを表示する時で、これを解決するためにhelm関連windowはframeのwidthいっぱいに表示する設定をしている。

(add-to-list 'display-buffer-alist
     `(,(rx bos "*helm" (* not-newline) "*" eos)
       (display-buffer-in-side-window)
       (inhibit-same-window . t)
       (window-height . 0.4)))

cf. https://www.reddit.com/r/emacs/comments/345vtl/make_helm_window_at_the_bottom_without_using_any/

しかし、helm-swoopのwindowには何故か適用されず困っていた。

原因と対策


helm-swoopはbufferを表示する際に何らかの理由でhelm標準となっているfunctionを使っていないらしく (おそらくはswoop.elとの兼ね合いか、helmの更新が早過ぎて書き換えられていないか)、これを変更すれば他のhelm関連windowと同じ設定にできる。

(setq helm-swoop-split-window-function
      '(lambda (buffer)
         (helm-default-display-buffer buffer)))

なお、spacemacsで同じ疑問と回答が掲載されており、それを参考に以上の設定を行った。

cf. [How do I make helm-swoop to open at bottom with full window width? · Issue #4117 · syl20bnr/spacemacs · GitHub](https://github.com/syl20bnr/spacemacs/issues/4117)


0 件のコメント:

コメントを投稿