diff options
Diffstat (limited to 'lisp/progmodes/compile.el')
-rw-r--r-- | lisp/progmodes/compile.el | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 0c57e6f55b1..2710066c2cd 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -12,7 +12,7 @@ ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -167,6 +167,10 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1)) "^[ \t]*\\[[^] \n]+\\][ \t]*\\([^: \n]+\\):\\([0-9]+\\):\\(?:\\([0-9]+\\):[0-9]+:[0-9]+:\\)?\ \\( warning\\)?" 1 2 3 (4)) + (maven + ;; Maven is a popular build tool for Java. Maven is Free Software. + "\\(.*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\]" 1 2 3) + (bash "^\\([^: \n\t]+\\): line \\([0-9]+\\):" 1 2) @@ -1101,8 +1105,7 @@ Returns the compilation buffer created." (unless (getenv "EMACS") (list "EMACS=t")) (list "INSIDE_EMACS=t") - (copy-sequence process-environment))) - (start-process (symbol-function 'start-process))) + (copy-sequence process-environment)))) (set (make-local-variable 'compilation-arguments) (list command mode name-function highlight-regexp)) (set (make-local-variable 'revert-buffer-function) @@ -1123,22 +1126,14 @@ Returns the compilation buffer created." ;; comint uses `start-file-process'. (get-buffer-process (with-no-warnings - (comint-exec outbuf (downcase mode-name) - shell-file-name nil `("-c" ,command)))) - ;; Redefine temporarily `start-process' in order to - ;; handle remote compilation. - (fset 'start-process - (lambda (name buffer program &rest program-args) - (apply - (if (file-remote-p default-directory) - 'start-file-process - start-process) - name buffer program program-args))) - (unwind-protect - (start-process-shell-command (downcase mode-name) - outbuf command) - ;; Unwindform: Reset original definition of `start-process'. - (fset 'start-process start-process))))) + (comint-exec + outbuf (downcase mode-name) + (if (file-remote-p default-directory) + "/bin/sh" + shell-file-name) + `("-c" ,command)))) + (start-file-process-shell-command (downcase mode-name) + outbuf command)))) ;; Make the buffer's mode line show process state. (setq mode-line-process '(":%s")) (set-process-sentinel proc 'compilation-sentinel) @@ -2055,9 +2050,9 @@ The file-structure looks like this: ;; compilation-error-list) to point-min, but that was only meaningful for ;; the internal uses of compilation-forget-errors: all calls from external ;; packages seem to be followed by a move of compilation-parsing-end to - ;; something equivalent to point-max. So we speculatively move + ;; something equivalent to point-max. So we heuristically move ;; compilation-current-error to point-max (since the external package - ;; won't know that it should do it). --stef + ;; won't know that it should do it). --Stef (setq compilation-current-error nil) (let* ((proc (get-buffer-process (current-buffer))) (mark (if proc (process-mark proc))) @@ -2068,7 +2063,12 @@ The file-structure looks like this: ;; we need to put ours just before the insertion point rather ;; than at the insertion point. If that's not possible, then ;; don't use a marker. --Stef - (if (> pos (point-min)) (copy-marker (1- pos)) pos)))) + (if (> pos (point-min)) (copy-marker (1- pos)) pos))) + ;; Again, since this command is used in buffers that contain several + ;; compilations, to set the beginning of "this compilation", it's a good + ;; place to reset compilation-auto-jump-to-next. + (set (make-local-variable 'compilation-auto-jump-to-next) + compilation-auto-jump-to-first-error)) ;;;###autoload (add-to-list 'auto-mode-alist '("\\.gcov\\'" . compilation-mode)) |