helm-swoop で前回の検索文字列を覚えていてほしいと思ったのでこうしてみました。
init.el
(defun my-helm-swoop-resume-last-query ()
"swoop with last query."
(interactive)
(helm-swoop :$query (if (boundp 'helm-swoop-last-query) helm-swoop-last-query "")))
(global-set-key (kbd "C-s") 'my-helm-swoop-resume-last-query)
それらしき関数なり設定なりが見当たらなかったので作ってみました。便利便利。
勘違いしていたので訂正
以降は 2017/11/24 に追記しました。
そもそも helm-swoop の仕様は前回の検索語をそのまま再現するようになっていました。私が前回の検索語をクリアするように設定していたのを忘れていました。その設定は
init.el
(setq helm-swoop-pre-input-function (lambda () ""))
というものでした。つまりわざわざ関数を作らなくても良かったのです (マヌケ過ぎる)。
それでしばらく検索語が再現されるようにして使っていましたが不便です。新たな検索語を入れるときに minibuffer をクリアしないと再現された検索語に追記になってしまいます。これがどうも不便でクリアするように設定したようです。
そもそも M-p
を押せばヒストリがたどれます。ですが、それはなんか遠いです。つまり C-s
M-p
はなんとなく面倒です。isearch
のように2度押したら前回の検索語が入るようになって欲しいです。
ということで上記検索語クリアの設定はそのままにこうしてみました;
init.el
(setq my-helm-swoop-trigger-key (kbd "C-s"))
(eval-after-load "helm-swoop"
(lambda ()
(define-key helm-map my-helm-swoop-trigger-key 'previous-history-element)))
(global-set-key my-helm-swoop-trigger-key 'helm-swoop)
helm-map
に C-s
なんてよく使いそうなキーをバインドしていいのかなと3秒だけ躊躇しましたがそんなキー使った記憶がないので設定しました。