# HG changeset patch # User Oleksandr Gavenko # Date 1487803250 -7200 # Node ID d242edfd13213ceb9d86e446beb0378f9af4fb48 # Parent 8ebcfb7fc718df78b750e35e42874430a89ebff0 Function for killing process. Simplify code. Limit search for current directory with prefix. diff -r 8ebcfb7fc718 -r d242edfd1321 ag.el --- a/ag.el Wed Feb 22 23:58:21 2017 +0200 +++ b/ag.el Thu Feb 23 00:40:50 2017 +0200 @@ -1,3 +1,7 @@ +;;; ag.el --- Ag frontend + +;;; Commentary: +;; (defun my/ag-goto () (interactive) @@ -17,9 +21,17 @@ (find-file-other-window (match-string 0)) (goto-line lineno))))) +(defun my/ag-kill-process () + (interactive) + (let ( (proc (get-buffer-process (current-buffer))) ) + (if proc + (interrupt-process proc) + (error "The %s process is not running" (downcase mode-name))))) + (defvar my/ag-mode-map (make-sparse-keymap)) (define-key my/ag-mode-map (kbd "RET") 'my/ag-goto) +(define-key my/ag-mode-map (kbd "C-c C-k") 'my/ag-kill-process) (defface my/ag-lineno-face '((t :inherit warning)) @@ -58,6 +70,22 @@ (defvar my/ag-regex-history nil) +(defun my/ag-setup-buffer (dir) + (setq my/ag-buffer (get-buffer-create my/ag-buffer-name)) + (with-current-buffer my/ag-buffer + (setq default-directory dir) + (erase-buffer) + (my/ag-mode)) + (display-buffer my/ag-buffer)) + +(defun my/ag-run (regex) + (make-process + :name "ag" + :buffer my/ag-buffer + :filter 'my/ag-filter + :command (list "ag" "--group" "--nocolor" regex))) + +;;;###autoload (defun my/ag (regex) (interactive (let* ( (def (when my/ag-regex-history (car my/ag-regex-history))) @@ -67,15 +95,9 @@ (list (read-string (if part (format "Regex [%s]: " part) "Regex: ") "" 'my/ag-regex-history def t)))) - (let ( proc (dir default-directory) ) - (setq my/ag-buffer (get-buffer-create my/ag-buffer-name)) - (with-current-buffer my/ag-buffer - (setq default-directory dir) - (erase-buffer) - (my/ag-mode)) - (display-buffer my/ag-buffer) - (setq proc (make-process - :name "ag" - :buffer my/ag-buffer - :filter 'my/ag-filter - :command (list "ag" "--group" "--nocolor" regex))) )) + (my/ag-setup-buffer (if current-prefix-arg default-directory (or (ignore-errors (vc-root-dir)) default-directory))) + (my/ag-run regex)) + +(provide 'ag) + +;;; ag.el ends here