作为 el-search-occur
的补充,下图搜索 Magit 中 pcase
的使用:
昨天写的代码(在 El-search 作者的帮助下),不确定有多大实用价值:
(defun el-search-helm ()
(interactive)
(el-search--message-no-log "Preparing helm...")
(unless el-search--current-search
(user-error "No active search"))
(let* ((search el-search--current-search)
(stream-of-matches (funcall (el-search-object-get-matches search)))
(candidates (mapcar
(pcase-lambda ((and match `(,buffer ,match-beg ,file)))
(with-current-buffer buffer
(cons (buffer-substring-no-properties
match-beg (el-search--end-of-sexp match-beg))
match)))
(seq-into stream-of-matches 'list))))
(require 'helm)
(helm :sources
(helm-build-sync-source
(el-search--get-search-description-string el-search--current-search)
:candidates candidates
:multiline t
:action (pcase-lambda (`(,buffer ,match-beg ,file))
(if file
(find-file file)
(switch-to-buffer buffer))
(goto-char match-beg)))
:buffer "*helm el-search*")))