Álvaro Ramírez
Search/insert one-liners with Emacs helm-ag
Emacs helm is awesome. helm-ag is double awesome. Searching for one-liners in your codebase, narrowing down with helm, and easily inserting is triple awesome.
(defun ar/helm-ag (arg) "Helm-ag search remembering last location. With ARG, forget the last location." (interactive "P") (defvar ar/helm-ag--default-locaction nil) (setq ar/helm-ag--default-locaction (read-directory-name "search in: " (if arg default-directory ar/helm-ag--default-locaction) nil t)) (helm-do-ag ar/helm-ag--default-locaction)) (defun ar/helm-ag-insert (arg) ;; Helm-ag and insert match. (interactive "P") (let* ((actions (helm-make-actions "Insert" (lambda (candidate) ;; Drop file:line:column. For example: ;; arc_hostlink.c:13:2:#include <linux/fs.h> ;; => #include <linux/fs.h> (insert (replace-regexp-in-string "^[^ ]*:" "" candidate))))) (helm-source-do-ag (helm-build-async-source "The Silver Searcher" :init 'helm-ag--do-ag-set-command :candidates-process 'helm-ag--do-ag-candidate-process :persistent-action 'helm-ag--persistent-action :action actions :nohighlight t :requires-pattern 3 :candidate-number-limit 9999 :keymap helm-do-ag-map :follow (and helm-follow-mode-persistent 1)))) (call-interactively #'ar/helm-ag)))