Here you go. I use this code to list all org files in a specific directory. If you want to list all the files, simply delete the source-converter-string in the source and delete the file emagician / helm-ct-is-org-file.
You probably also want to rename the source / variable / function .;)
edit: Fixed thanks to peeking at helm-cmd-t
note: This is my first real crack in creating a helmet source, and this implementation probably sucks. It also specifically solves my problem (searching for all org files in only one), and not a more generalized problem (creating a steering source based on files from a specific directory).
(defvar emagician/helm-c-source-files `((name . "Find Emagician Files") (header-name . (lambda (_))) (candidates . ,(lambda () (when (file-accessible-directory-p emagician-dir) (directory-files emagician-dir t)))) (match helm-c-match-on-file-name helm-c-match-on-directory-name) (keymap . ,helm-generic-files-map) (candidate-transformer . emagician/helm-ct-is-org-file) (help-message . helm-generic-file-help-message) (mode-line . ,helm-generic-file-mode-line-string) (type . file))) (defun emagician/helm-ct-is-org-file (candidates) (remove-if-not (lambda (c) (and (string= (substring c -4) ".org") (not (string= (substring (file-name-nondirectory c) 0 2) ".#")))) candidates)) (defun emagician/helm-emagician-dir () "List all the org files in the Emagician dir" (interactive) (helm :sources emagician/helm-c-source-files :candidate-number-limit 40 :buffer "*emagician-|-+-|-files*")) (global-set-key (kbd "S-<f3>") 'emagician/helm-emagician-dir)
source share