ag.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 06 Mar 2017 15:40:53 +0200
changeset 1502 72c63cea35d3
parent 1501 636e49ed6d27
child 1515 a28c181c1412
permissions -rw-r--r--
It much easy to call ag for current directory via modifier then prefix argument.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
     1
;;; ag.el --- Ag frontend
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
     2
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
     3
;;; Commentary:
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
     4
;;
1492
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     5
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     6
(defun my/ag-goto ()
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
  (interactive)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     8
  (save-excursion
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     9
    (let ( lineno end )
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    10
      (forward-line 1)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    11
      (backward-char 1)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    12
      (setq end (point))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    13
      (forward-line 0)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    14
      (if (not (search-forward-regexp "^\\([1-9][0-9]*\\):" end t))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    15
          (message "Not at line number...")
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    16
        (setq lineno (string-to-int (match-string 1)))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    17
        (if (search-backward-regexp "^$" nil t)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    18
            (forward-char)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    19
          (goto-char (point-min)))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    20
        (search-forward-regexp "^.*")
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    21
        (find-file-other-window (match-string 0))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    22
        (goto-line lineno)))))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    23
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    24
(defun my/ag-kill-process ()
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    25
  (interactive)
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    26
  (let ( (proc (get-buffer-process (current-buffer))) )
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    27
    (if proc
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    28
	(interrupt-process proc)
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    29
      (error "The %s process is not running" (downcase mode-name)))))
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    30
1492
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    31
(defvar my/ag-mode-map (make-sparse-keymap))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    32
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    33
(define-key my/ag-mode-map (kbd "RET") 'my/ag-goto)
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    34
(define-key my/ag-mode-map (kbd "C-c C-k") 'my/ag-kill-process)
1492
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    35
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    36
(defface my/ag-lineno-face
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    37
  '((t :inherit warning))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
  "Face for line number.")
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    39
(defface my/ag-path-face
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    40
  '((t :inherit success))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    41
  "Face for line number.")
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    43
(defvar my/ag-keywords
1501
636e49ed6d27 Prevent error if there is no repository. Fix highlighting of line numbers.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1498
diff changeset
    44
  '(("^[1-9][0-9]\\{0,5\\}:" . (0 'my/ag-lineno-face))
1498
e8ad022540d4 Number of lines can be greater then I assumed initially.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1496
diff changeset
    45
    ("^[^:]\\{6\\}.*" . (0 'my/ag-path-face))))
1492
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    46
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    47
(defun my/ag-font-lock-extend-region ()
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    48
  (save-excursion
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    49
    (goto-char font-lock-beg)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    50
    (forward-line 2)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    51
    (setq font-lock-beg (point))))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    52
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    53
(define-derived-mode my/ag-mode fundamental-mode "Ag"
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    54
  "Major mode for Ag parsing."
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    55
  (setq font-lock-defaults '(my/ag-keywords t nil nil)) ;  (font-lock-multiline . t)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    56
  ;; (add-hook 'font-lock-extend-region-functions 'my/ag-font-lock-extend-region)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    57
  (use-local-map my/ag-mode-map))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    58
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    59
(defvar my/ag-buffer-name "*ag*")
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    60
(defvar my/ag-buffer nil)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    61
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    62
(defun my/ag-filter (proc str)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    63
  (when (buffer-live-p (process-buffer proc))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    64
    (with-current-buffer (process-buffer proc)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    65
      (save-excursion
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    66
        (goto-char (process-mark proc))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    67
        (insert str)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    68
        (set-marker (process-mark proc) (point)))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    69
      )))
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    70
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    71
(defvar my/ag-regex-history nil)
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    72
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    73
(defun my/ag-setup-buffer (dir)
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    74
  (setq my/ag-buffer (get-buffer-create my/ag-buffer-name))
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    75
  (with-current-buffer my/ag-buffer
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    76
    (setq default-directory dir)
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    77
    (erase-buffer)
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    78
    (my/ag-mode))
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    79
  (display-buffer my/ag-buffer))
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    80
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    81
(defun my/ag-run (regex)
1496
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    82
  (let ( (default-directory (buffer-local-value 'default-directory my/ag-buffer)) )
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    83
    (make-process
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    84
     :name "ag"
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    85
     :buffer my/ag-buffer
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    86
     :filter 'my/ag-filter
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    87
     :command (list "ag" "--group" "--nocolor" regex))))
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    88
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    89
(defun my/ag-project-root ()
1501
636e49ed6d27 Prevent error if there is no repository. Fix highlighting of line numbers.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1498
diff changeset
    90
  (condition-case err
636e49ed6d27 Prevent error if there is no repository. Fix highlighting of line numbers.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1498
diff changeset
    91
      (let ( backend )
636e49ed6d27 Prevent error if there is no repository. Fix highlighting of line numbers.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1498
diff changeset
    92
        (setq backend (vc-responsible-backend default-directory))
636e49ed6d27 Prevent error if there is no repository. Fix highlighting of line numbers.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1498
diff changeset
    93
        (if backend
1496
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
    94
            (vc-call-backend backend 'root default-directory)
1501
636e49ed6d27 Prevent error if there is no repository. Fix highlighting of line numbers.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1498
diff changeset
    95
          default-directory))
636e49ed6d27 Prevent error if there is no repository. Fix highlighting of line numbers.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1498
diff changeset
    96
    (error default-directory)))
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
    97
1502
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
    98
(defun my/ag-read-regex ()
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
    99
  (let* ( (def (when my/ag-regex-history (car my/ag-regex-history)))
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   100
          (part (when def (if (< (length def) 20)
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   101
                              def
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   102
                            (concat (substring def 0 20) "...")))) )
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   103
    (read-string
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   104
     (if part (format "Regex [%s]: " part) "Regex: ")
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   105
     ""  'my/ag-regex-history  def  t)))
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   106
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
   107
;;;###autoload
1492
8ebcfb7fc718 Add own ag mode.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
   108
(defun my/ag (regex)
1502
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   109
  "Search in 'ag' recursively from VCS root directory and fall to
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   110
current directory if VCS root is not defined."
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   111
  (interactive (list (my/ag-read-regex)))
1496
4b336f352950 (vc-root-dir) selectively work depending on buffer mode. I need root based on
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1493
diff changeset
   112
  (my/ag-setup-buffer (if current-prefix-arg default-directory (my/ag-project-root)))
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
   113
  (my/ag-run regex))
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
   114
1502
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   115
;;;###autoload
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   116
(defun my/ag-default-directory (regex)
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   117
  "Search in 'ag' recursively from current directory."
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   118
  (interactive (list (my/ag-read-regex)))
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   119
  (my/ag-setup-buffer default-directory)
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   120
  (my/ag-run regex))
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   121
72c63cea35d3 It much easy to call ag for current directory via modifier then prefix argument.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1501
diff changeset
   122
1493
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
   123
(provide 'ag)
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
   124
d242edfd1321 Function for killing process. Simplify code. Limit search for current
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1492
diff changeset
   125
;;; ag.el ends here