swiper-helmを少し便利に
swiper-helm
swiper-helm というパッケージをバッファ内検索によく利用しています。ただ普通に呼び出しても空の検索窓が立ちあがってしまってあまり便利ではないです。
ここでは、起動時に、選択範囲あるいはカーソル下のシンボルを検索窓に入れるようにします。また、普通のisearch内からは同じキーで検索中の単語を引き継ぐ swiper-helm-from-isearch
を呼ぶようにします。
設定
;;;
;;; swiper.el / swiper-helm.el
;; https://github.com/abo-abo/swiper
;; https://github.com/abo-abo/swiper-helm
;; http://pragmaticemacs.com/emacs/dont-search-swipe/
;; http://pragmaticemacs.com/emacs/search-or-swipe-for-the-current-word/
(use-package swiper-helm
:commands (swiper
swiper-helm
swiper-helm-at-point
swiper-helm-from-isearch)
:bind (("s-s" . swiper-helm-at-point)
("C-s-s" . swiper-helm))
:bind (:map isearch-mode-map
("s-s" . swiper-helm-from-isearch))
;; Configuration
:config
;; Newly defined
(defun swiper-helm-at-point ()
"Custom function to pick up a thing at a point for swiper-helm
If there is a symbol at the current point, its textual representation is
searched for by swiper-helm. If there is no symbol, empty search box is
started."
(interactive)
(swiper-helm (cond
;; If there is selection use it
((and transient-mark-mode mark-active (not (eq (mark) (point))))
(buffer-substring-no-properties (mark) (point)))
;; Otherwise, use symbol at point or empty
(t (format "%s"
(or (thing-at-point 'symbol)
"")))))))
;;;
;;; swiper.el / swiper-helm.el
;; https://github.com/abo-abo/swiper
;; https://github.com/abo-abo/swiper-helm
;; http://pragmaticemacs.com/emacs/dont-search-swipe/
;; http://pragmaticemacs.com/emacs/search-or-swipe-for-the-current-word/
(use-package swiper-helm
:commands (swiper
swiper-helm
swiper-helm-at-point
swiper-helm-from-isearch)
:bind (("s-s" . swiper-helm-at-point)
("C-s-s" . swiper-helm))
:bind (:map isearch-mode-map
("s-s" . swiper-helm-from-isearch))
;; Configuration
:config
;; Newly defined
(defun swiper-helm-at-point ()
"Custom function to pick up a thing at a point for swiper-helm
If there is a symbol at the current point, its textual representation is
searched for by swiper-helm. If there is no symbol, empty search box is
started."
(interactive)
(swiper-helm (cond
;; If there is selection use it
((and transient-mark-mode mark-active (not (eq (mark) (point))))
(buffer-substring-no-properties (mark) (point)))
;; Otherwise, use symbol at point or empty
(t (format "%s"
(or (thing-at-point 'symbol)
"")))))))
swiper-helm-at-point
が新しく定義した関数です。 s-s
つまり Super-s
を割り当てています。 Super
は右のCommand Keyを設定しています。これで選択範囲があればそれを検索対象に、なければカーソル下のシンボルを検索対象にします。また、isearch内のときは適切な関数が呼ばれるように同じキーを再設定しています。
備考
調べてもよくわかりませんでしたが、ひょっとすると同様の機能がもとからあるかも?
Author And Source
この問題について(swiper-helmを少し便利に), 我々は、より多くの情報をここで見つけました https://qiita.com/kaz-yos/items/7bc62e280c35c0c099aa著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .