   (set (make-local-variable 'truncate-lines) t)
   (set (make-local-variable 'compilation-disable-input) t)
   (let ((smbl  'compilation-ack-nogroup)
-        (pttrn '("^\\([^:\n]+?\\):\\([0-9]+\\):" 1 2)))
+        (pttrn '("^\\([^:\n]+?\\):\\([0-9]+\\):\\([0-9]+\\):" 1 2 3)))
     (set (make-local-variable 'compilation-error-regexp-alist) (list smbl))
     (set (make-local-variable 'compilation-error-regexp-alist-alist) (list (cons smbl pttrn))))
   (set (make-local-variable 'compilation-error-face) grep-hit-face))

  :group 'tools
  :group 'matching)

; TODO Determine how to fall back to using ack-grep if ack is not found.
(defcustom ack-and-a-half-executable (executable-find "ack")
  "*The location of the ack executable"
  :group 'ack-and-a-half
  :type 'file)

(defcustom ack-and-a-half-arguments nil
  "*Extra arguments to pass to ack."

`ack-and-a-half-project-root-file-patterns'.  The user is only prompted, if
`ack-and-a-half-prompt-for-directory' is set."
  (interactive (ack-and-a-half-interactive))
  (ack-and-a-half-run directory regexp pattern))

;;;###autoload
(defun ack-and-a-half-same (pattern &optional regexp directory)
