15 (goto-char (point-min))) |
19 (goto-char (point-min))) |
16 (search-forward-regexp "^.*") |
20 (search-forward-regexp "^.*") |
17 (find-file-other-window (match-string 0)) |
21 (find-file-other-window (match-string 0)) |
18 (goto-line lineno))))) |
22 (goto-line lineno))))) |
19 |
23 |
|
24 (defun my/ag-kill-process () |
|
25 (interactive) |
|
26 (let ( (proc (get-buffer-process (current-buffer))) ) |
|
27 (if proc |
|
28 (interrupt-process proc) |
|
29 (error "The %s process is not running" (downcase mode-name))))) |
|
30 |
20 (defvar my/ag-mode-map (make-sparse-keymap)) |
31 (defvar my/ag-mode-map (make-sparse-keymap)) |
21 |
32 |
22 (define-key my/ag-mode-map (kbd "RET") 'my/ag-goto) |
33 (define-key my/ag-mode-map (kbd "RET") 'my/ag-goto) |
|
34 (define-key my/ag-mode-map (kbd "C-c C-k") 'my/ag-kill-process) |
23 |
35 |
24 (defface my/ag-lineno-face |
36 (defface my/ag-lineno-face |
25 '((t :inherit warning)) |
37 '((t :inherit warning)) |
26 "Face for line number.") |
38 "Face for line number.") |
27 (defface my/ag-path-face |
39 (defface my/ag-path-face |
56 (set-marker (process-mark proc) (point))) |
68 (set-marker (process-mark proc) (point))) |
57 ))) |
69 ))) |
58 |
70 |
59 (defvar my/ag-regex-history nil) |
71 (defvar my/ag-regex-history nil) |
60 |
72 |
|
73 (defun my/ag-setup-buffer (dir) |
|
74 (setq my/ag-buffer (get-buffer-create my/ag-buffer-name)) |
|
75 (with-current-buffer my/ag-buffer |
|
76 (setq default-directory dir) |
|
77 (erase-buffer) |
|
78 (my/ag-mode)) |
|
79 (display-buffer my/ag-buffer)) |
|
80 |
|
81 (defun my/ag-run (regex) |
|
82 (make-process |
|
83 :name "ag" |
|
84 :buffer my/ag-buffer |
|
85 :filter 'my/ag-filter |
|
86 :command (list "ag" "--group" "--nocolor" regex))) |
|
87 |
|
88 ;;;###autoload |
61 (defun my/ag (regex) |
89 (defun my/ag (regex) |
62 (interactive |
90 (interactive |
63 (let* ( (def (when my/ag-regex-history (car my/ag-regex-history))) |
91 (let* ( (def (when my/ag-regex-history (car my/ag-regex-history))) |
64 (part (when def (if (< (length def) 20) |
92 (part (when def (if (< (length def) 20) |
65 def |
93 def |
66 (concat (substring def 0 20) "...")))) ) |
94 (concat (substring def 0 20) "...")))) ) |
67 (list (read-string |
95 (list (read-string |
68 (if part (format "Regex [%s]: " part) "Regex: ") |
96 (if part (format "Regex [%s]: " part) "Regex: ") |
69 "" 'my/ag-regex-history def t)))) |
97 "" 'my/ag-regex-history def t)))) |
70 (let ( proc (dir default-directory) ) |
98 (my/ag-setup-buffer (if current-prefix-arg default-directory (or (ignore-errors (vc-root-dir)) default-directory))) |
71 (setq my/ag-buffer (get-buffer-create my/ag-buffer-name)) |
99 (my/ag-run regex)) |
72 (with-current-buffer my/ag-buffer |
100 |
73 (setq default-directory dir) |
101 (provide 'ag) |
74 (erase-buffer) |
102 |
75 (my/ag-mode)) |
103 ;;; ag.el ends here |
76 (display-buffer my/ag-buffer) |
|
77 (setq proc (make-process |
|
78 :name "ag" |
|
79 :buffer my/ag-buffer |
|
80 :filter 'my/ag-filter |
|
81 :command (list "ag" "--group" "--nocolor" regex))) )) |
|