| Index: tools/emacs/trybot.el
|
| diff --git a/tools/emacs/trybot.el b/tools/emacs/trybot.el
|
| index 84eccdc2ec633cdbd132f3da9d5b8be623473476..784241d2241a8f4a4751d92f6ac8c409f9df355b 100644
|
| --- a/tools/emacs/trybot.el
|
| +++ b/tools/emacs/trybot.el
|
| @@ -40,42 +40,52 @@
|
| (get-chrome-root))
|
| nil))))
|
|
|
| -(defun trybot-fixup ()
|
| +(defun trybot-fixup-win ()
|
| + "Fix up Windows-specific output."
|
| +
|
| + ; Fix Windows paths ("d:\...\src\").
|
| + (save-excursion
|
| + (while (re-search-forward "\\(^.:\\\\.*\\\\src\\\\\\)\\(.*?\\)[(:]" nil t)
|
| + (replace-match "" nil t nil 1)
|
| + ; Line now looks like:
|
| + ; foo\bar\baz.cc error message here
|
| + ; We want to fixup backslashes in path into forward slashes,
|
| + ; without modifying the error message - by matching up to the
|
| + ; first colon above (which will be just beyond the end of the
|
| + ; filename) we can use the end of the match as a limit.
|
| + (subst-char-in-region (point) (match-end 0) ?\\ ?/)
|
| + ; See if we can correct the file name casing.
|
| + (let ((filename (buffer-substring (match-beginning 2) (match-end 2))))
|
| + (if (and (not (file-exists-p filename))
|
| + (setq filename (case-corrected-filename filename)))
|
| + (replace-match filename t t nil 2))))))
|
| +
|
| +(defun trybot-fixup-maclin ()
|
| + "Fix up Mac/Linux output."
|
| + (save-excursion
|
| + (while (re-search-forward "^/b/build/[^ ]*/src/" nil t)
|
| + (replace-match ""))))
|
| +
|
| +(defun trybot-fixup (type-hint)
|
| "Parse and fixup the contents of the current buffer as trybot output."
|
|
|
| + ; XXX is there something I should so so this stuff doesn't end up on the
|
| + ; undo stack?
|
| +
|
| ;; Fixup paths.
|
| (cd (get-chrome-root))
|
|
|
| - ;; Fix up path references.
|
| - ; XXX is there something I should so so this stuff doesn't end up on the
|
| - ; undo stack?
|
| - (goto-char (point-min))
|
| - ; Fix Windows paths ("d:\...\src\").
|
| - (while (re-search-forward "\\(^.:\\\\.*\\\\src\\\\\\)\\(.*?\\)[(:]" nil t)
|
| - (replace-match "" nil t nil 1)
|
| - ; Line now looks like:
|
| - ; foo\bar\baz.cc error message here
|
| - ; We want to fixup backslashes in path into forward slashes, without
|
| - ; modifying the error message - by matching up to the first colon above
|
| - ; (which will be just beyond the end of the filename) we can use the end of
|
| - ; the match as a limit.
|
| - (subst-char-in-region (point) (match-end 0) ?\\ ?/)
|
| - ; See if we can correct the file name casing.
|
| - (let ((filename (buffer-substring (match-beginning 2) (match-end 2))))
|
| - (if (and (not (file-exists-p filename))
|
| - (setq filename (case-corrected-filename filename)))
|
| - (replace-match filename t t nil 2))))
|
| -
|
| - ; Fix Linux/Mac paths ("/b/build/.../src/").
|
| (goto-char (point-min))
|
| - (while (re-search-forward "^/b/build/[^ ]*/src/" nil t)
|
| - (replace-match ""))
|
|
|
| - ;; Clean up and switch into compilation mode.
|
| - (goto-char (point-min))
|
| + ;; Fix up path references.
|
| + (cond ((eq type-hint 'win) (trybot-fixup-win))
|
| + ((eq type-hint 'mac) (trybot-fixup-maclin))
|
| + ((eq type-hint 'linux) (trybot-fixup-maclin))
|
| + (t (trybot-fixup-win) (trybot-fixup-maclin)))
|
| +
|
| (compilation-mode))
|
|
|
| -(defun trybot-test (filename)
|
| +(defun trybot-test (type-hint filename)
|
| "Load the given test data filename and do the trybot parse on it."
|
|
|
| (switch-to-buffer (get-buffer-create "*trybot-test*"))
|
| @@ -85,20 +95,20 @@
|
| (insert-file-contents
|
| (concat (get-chrome-root) "tools/emacs/" filename))
|
|
|
| - (trybot-fixup)))
|
| + (trybot-fixup type-hint)))
|
|
|
| (defun trybot-test-win ()
|
| "Load the Windows test data and do the trybot parse on it."
|
| (interactive)
|
| - (trybot-test "trybot-windows.txt"))
|
| + (trybot-test 'win "trybot-windows.txt"))
|
| (defun trybot-test-mac ()
|
| "Load the Mac test data and do the trybot parse on it."
|
| (interactive)
|
| - (trybot-test "trybot-mac.txt"))
|
| + (trybot-test 'mac "trybot-mac.txt"))
|
| (defun trybot-test-linux ()
|
| "Load the Linux test data and do the trybot parse on it."
|
| (interactive)
|
| - (trybot-test "trybot-linux.txt"))
|
| + (trybot-test 'linux "trybot-linux.txt"))
|
|
|
| (defun trybot (url)
|
| "Fetch a trybot URL and fix up the output into a compilation-mode buffer."
|
| @@ -115,10 +125,15 @@
|
| ;; Extract the body out of the URL.
|
| ; TODO: delete HTTP headers somehow.
|
| (let ((inhibit-read-only t)
|
| - (coding-system-for-read 'utf-8-dos))
|
| + (coding-system-for-read 'utf-8-dos)
|
| + (type-hint (cond ((string-match "/win/" url) 'win)
|
| + ((string-match "/mac/" url) 'mac)
|
| + ; Match /linux, /linux_view, etc.
|
| + ((string-match "/linux" url) 'linux)
|
| + (t 'unknown))))
|
| (switch-to-buffer (get-buffer-create "*trybot*"))
|
| (buffer-swap-text (url-retrieve-synchronously url))
|
|
|
| - (trybot-fixup)))
|
| + (trybot-fixup type-hint)))
|
|
|
| (provide 'trybot)
|
|
|