branch: elpa/helm commit 2da1315a2b64e9f4a49b8dd7f437da08bd99ff49 Author: Thierry Volpiatto <thie...@posteo.net> Commit: Thierry Volpiatto <thie...@posteo.net>
Add helm-limit-to-sources command --- helm-core.el | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/helm-core.el b/helm-core.el index 710ce789f9..84db8a5780 100644 --- a/helm-core.el +++ b/helm-core.el @@ -438,6 +438,7 @@ i.e. the loop is not entered after running COMMAND." (define-key map (kbd "M-a") #'helm-mark-all) (define-key map (kbd "M-U") #'helm-unmark-all) (define-key map (kbd "C-M-a") #'helm-show-all-candidates-in-source) + (define-key map (kbd "C-M-f") #'helm-limit-to-sources) (define-key map (kbd "C-M-e") #'helm-display-all-sources) (define-key map (kbd "C-s") #'undefined) (define-key map (kbd "M-s") #'undefined) @@ -2421,6 +2422,28 @@ show ARG number of candidates." (helm-set-source-filter nil))) (put 'helm-display-all-sources 'helm-only t) +(defun helm-limit-to-sources () + "Limit sources to display from current session. +This is a toggle command, when hit a second time reset to all sources." + (interactive) + (with-helm-alive-p + (with-helm-buffer + (if (null helm-source-filter) + (when (cdr helm-sources) + (let ((headers (helm-comp-read + "Limit to source(s): " + (mapcar + (lambda (s) + (let* ((name (assoc-default 'name s)) + (disp (helm-aif (assoc-default 'header-name s) + (funcall it name) name))) + (cons disp name))) + helm-sources) + :marked-candidates t + :allow-nest t + :buffer "*helm sources*"))) + (helm-set-source-filter headers))) + (helm-set-source-filter nil))))) ;;; Source infos fns. ;;