Chromium Code Reviews| Index: tools/emacs/trybot.el |
| diff --git a/tools/emacs/trybot.el b/tools/emacs/trybot.el |
| index 84eccdc2ec633cdbd132f3da9d5b8be623473476..6aad21978c49d8c1edfe3b1666ab77cdead61241 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." |
| @@ -119,6 +129,7 @@ |
| (switch-to-buffer (get-buffer-create "*trybot*")) |
| (buffer-swap-text (url-retrieve-synchronously url)) |
| - (trybot-fixup))) |
| + ; TODO: extract win/mac/lin from URL and pass in type hint. |
|
Scott Byer
2010/12/13 20:03:42
try:
(let ((type-hint (cond ((string-match "\\bma
|
| + (trybot-fixup 'unknown))) |
| (provide 'trybot) |