annotate lisp/progmodes/compile.el @ 110755:5c603f558199

Merge changes made in Gnus trunk. gnus-html.el (gnus-html-put-image): Fix resize image code. shr.el (shr-ensure-paragraph): Fix the non-empty line case.
author Katsumi Yamaoka <yamaoka@jpl.org>
date Mon, 04 Oct 2010 10:16:57 +0000
parents 77c2be84591c
children 4c19a062df30
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38412
253f761ad37b Some fixes to follow coding conventions in files maintained by FSF.
Pavel Janík <Pavel@Janik.cz>
parents: 38077
diff changeset
1 ;;; compile.el --- run compiler as inferior of Emacs, parse error messages
712
16823e891d56 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 621
diff changeset
2
58227
d7757127f475 (compilation-internal-error-properties):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58031
diff changeset
3 ;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 106779
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
87640
e541884bcfee Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 87453
diff changeset
5 ;; Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
6
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
7 ;; Authors: Roland McGrath <roland@gnu.org>,
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
8 ;; Daniel Pfeiffer <occitan@esperanto.org>
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
9 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1846
diff changeset
10 ;; Keywords: tools, processes
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
11
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94659
diff changeset
14 ;; GNU Emacs is free software: you can redistribute it and/or modify
804
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94659
diff changeset
16 ;; the Free Software Foundation, either version 3 of the License, or
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94659
diff changeset
17 ;; (at your option) any later version.
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18
804
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
22 ;; GNU General Public License for more details.
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
23
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
24 ;; You should have received a copy of the GNU General Public License
94673
52b7a8c22af5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94659
diff changeset
25 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26
2337
2ee64176069c Fix library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
27 ;;; Commentary:
2ee64176069c Fix library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
28
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
29 ;; This package provides the compile facilities documented in the Emacs user's
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
30 ;; manual.
2337
2ee64176069c Fix library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
31
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
32 ;; This mode uses some complex data-structures:
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
33
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
34 ;; LOC (or location) is a list of (COLUMN LINE FILE-STRUCTURE)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
35
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
36 ;; COLUMN and LINE are numbers parsed from an error message. COLUMN and maybe
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
37 ;; LINE will be nil for a message that doesn't contain them. Then the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
38 ;; location refers to a indented beginning of line or beginning of file.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
39 ;; Once any location in some file has been jumped to, the list is extended to
81133
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
40 ;; (COLUMN LINE FILE-STRUCTURE MARKER TIMESTAMP . VISITED)
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
41 ;; for all LOCs pertaining to that file.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
42 ;; MARKER initially points to LINE and COLUMN in a buffer visiting that file.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
43 ;; Being a marker it sticks to some text, when the buffer grows or shrinks
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
44 ;; before that point. VISITED is t if we have jumped there, else nil.
81133
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
45 ;; TIMESTAMP is necessary because of "incremental compilation": `omake -P'
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
46 ;; polls filesystem for changes and recompiles when a file is modified
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
47 ;; using the same *compilation* buffer. this necessitates re-parsing markers.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
48
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
49 ;; FILE-STRUCTURE is a list of
109335
230227e56fa7 Doc fix to commentary (Bug#6653).
Chong Yidong <cyd@stupidchicken.com>
parents: 108323
diff changeset
50 ;; ((FILENAME DIRECTORY) FORMATS (LINE LOC ...) ...)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
51
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
52 ;; FILENAME is a string parsed from an error message. DIRECTORY is a string
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
53 ;; obtained by following directory change messages. DIRECTORY will be nil for
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
54 ;; an absolute filename. FORMATS is a list of formats to apply to FILENAME if
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
55 ;; a file of that name can't be found.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
56 ;; The rest of the list is an alist of elements with LINE as key. The keys
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
57 ;; are either nil or line numbers. If present, nil comes first, followed by
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
58 ;; the numbers in decreasing order. The LOCs for each line are again an alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
59 ;; ordered the same way. Note that the whole file structure is referenced in
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
60 ;; every LOC.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
61
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
62 ;; MESSAGE is a list of (LOC TYPE END-LOC)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
63
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
64 ;; TYPE is 0 for info or 1 for warning if the message matcher identified it as
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
65 ;; such, 2 otherwise (for a real error). END-LOC is a LOC pointing to the
74157
e56f52b00e2d Space/tab mixup.
Juanma Barranquero <lekktu@gmail.com>
parents: 74057
diff changeset
66 ;; other end, if the parsed message contained a range. If the end of the
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
67 ;; range didn't specify a COLUMN, it defaults to -1, meaning end of line.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
68 ;; These are the value of the `message' text-properties in the compilation
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
69 ;; buffer.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
70
54747
bdc00a83ecd1 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54742
diff changeset
71 ;;; Code:
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
72
54747
bdc00a83ecd1 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54742
diff changeset
73 (eval-when-compile (require 'cl))
92203
c50ae6f34d03 (tool-bar): Rquire tool-bar.
Jan Djärv <jan.h.d@swipnet.se>
parents: 92170
diff changeset
74 (require 'tool-bar)
102102
0d562146f921 Require comint at top level to fix the last patch.
Sam Steingold <sds@gnu.org>
parents: 102072
diff changeset
75 (require 'comint)
54610
3ae52d0dfe0b doc fixes and restore optionality of next-error's arg
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54424
diff changeset
76
65228
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
77 (defvar font-lock-extra-managed-props)
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
78 (defvar font-lock-keywords)
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
79 (defvar font-lock-maximum-size)
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
80 (defvar font-lock-support-mode)
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
81
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
82
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
83 (defgroup compilation nil
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
84 "Run compiler as inferior of Emacs, parse error messages."
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
85 :group 'tools
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
86 :group 'processes)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
87
569
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
88
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
89 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
90 (defcustom compilation-mode-hook nil
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
91 "List of hook functions run by `compilation-mode' (see `run-mode-hooks')."
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
92 :type 'hook
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
93 :group 'compilation)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
94
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
95 ;;;###autoload
99688
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
96 (defcustom compilation-start-hook nil
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
97 "List of hook functions run by `compilation-start' on the compilation process.
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
98 \(See `run-hook-with-args').
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
99 If you use \"omake -P\" and do not want \\[save-buffers-kill-terminal] to ask whether you want
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
100 the compilation to be killed, you can use this hook:
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
101 (add-hook 'compilation-start-hook
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
102 (lambda (process) (set-process-query-on-exit-flag process nil)) nil t)"
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
103 :type 'hook
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
104 :group 'compilation)
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
105
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
106 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
107 (defcustom compilation-window-height nil
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
108 "Number of lines in a compilation window. If nil, use Emacs default."
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
109 :type '(choice (const :tag "Default" nil)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
110 integer)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
111 :group 'compilation)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
112
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
113 (defvar compilation-first-column 1
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
114 "*This is how compilers number the first column, usually 1 or 0.")
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115
40294
c3b8e6d5266f (compilation-parse-errors-filename-function):
Gerd Moellmann <gerd@gnu.org>
parents: 40222
diff changeset
116 (defvar compilation-parse-errors-filename-function nil
c3b8e6d5266f (compilation-parse-errors-filename-function):
Gerd Moellmann <gerd@gnu.org>
parents: 40222
diff changeset
117 "Function to call to post-process filenames while parsing error messages.
c3b8e6d5266f (compilation-parse-errors-filename-function):
Gerd Moellmann <gerd@gnu.org>
parents: 40222
diff changeset
118 It takes one arg FILENAME which is the name of a file as found
c3b8e6d5266f (compilation-parse-errors-filename-function):
Gerd Moellmann <gerd@gnu.org>
parents: 40222
diff changeset
119 in the compilation output, and should return a transformed file name.")
c3b8e6d5266f (compilation-parse-errors-filename-function):
Gerd Moellmann <gerd@gnu.org>
parents: 40222
diff changeset
120
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 418
diff changeset
121 ;;;###autoload
16985
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
122 (defvar compilation-process-setup-function nil
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
123 "*Function to call to customize the compilation process.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
124 This function is called immediately before the compilation process is
16985
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
125 started. It can be used to set any variables or functions that are used
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
126 while processing the output of the compilation process. The function
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
127 is called with variables `compilation-buffer' and `compilation-window'
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
128 bound to the compilation buffer and window, respectively.")
16985
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
129
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
130 ;;;###autoload
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
131 (defvar compilation-buffer-name-function nil
1133
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
132 "Function to compute the name of a compilation buffer.
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
133 The function receives one argument, the name of the major mode of the
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
134 compilation buffer. It should return a string.
77886
c90e5f7ef586 (compilation-find-file, compilation-handle-exit): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 77786
diff changeset
135 If nil, compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 418
diff changeset
137 ;;;###autoload
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
138 (defvar compilation-finish-function nil
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
139 "Function to call when a compilation process finishes.
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
140 It is called with two arguments: the compilation buffer, and a string
62527
c531c5fa55c5 (compilation-finish-function): Fix defvar.
Luc Teirlinck <teirllm@auburn.edu>
parents: 62518
diff changeset
141 describing how the process finished.")
62518
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
142
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
143 (make-obsolete-variable 'compilation-finish-function
77886
c90e5f7ef586 (compilation-find-file, compilation-handle-exit): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 77786
diff changeset
144 "use `compilation-finish-functions', but it works a little differently."
62518
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
145 "22.1")
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
146
16042
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
147 ;;;###autoload
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
148 (defvar compilation-finish-functions nil
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
149 "Functions to call when a compilation process finishes.
16042
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
150 Each function is called with two arguments: the compilation buffer,
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
151 and a string describing how the process finished.")
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
152
740
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
153 (defvar compilation-in-progress nil
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
154 "List of compilation processes now running.")
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
155 (or (assq 'compilation-in-progress minor-mode-alist)
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
156 (setq minor-mode-alist (cons '(compilation-in-progress " Compiling")
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
157 minor-mode-alist)))
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
158
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
159 (defvar compilation-error "error"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
160 "Stem of message to print when no matches are found.")
1133
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
161
17866
7d458582345c (compilation-parse-errors): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 17653
diff changeset
162 (defvar compilation-arguments nil
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
163 "Arguments that were given to `compilation-start'.")
17866
7d458582345c (compilation-parse-errors): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 17653
diff changeset
164
1133
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
165 (defvar compilation-num-errors-found)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
166
110266
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
167 (defvar compilation-error-regexp-alist-alist
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
168 '((absoft
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
169 "^\\(?:[Ee]rror on \\|[Ww]arning on\\( \\)\\)?[Ll]ine[ \t]+\\([0-9]+\\)[ \t]+\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
170 of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
171
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
172 (ada
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
173 "\\(warning: .*\\)? at \\([^ \n]+\\):\\([0-9]+\\)$" 2 3 nil (1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
174
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
175 (aix
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
176 " in line \\([0-9]+\\) of file \\([^ \n]+[^. \n]\\)\\.? " 2 1)
2461
1ecb75748794 (compilation-error-regexp-alist): Merged HP-UX 7.0 fc regexp with the
Roland McGrath <roland@gnu.org>
parents: 2460
diff changeset
177
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
178 (ant
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
179 "^[ \t]*\\[[^] \n]+\\][ \t]*\\([^: \n]+\\):\\([0-9]+\\):\\(?:\\([0-9]+\\):[0-9]+:[0-9]+:\\)?\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
180 \\( warning\\)?" 1 2 3 (4))
23866
b1adb6a721dd (compilation-error-regexp-alist): Insist on a non-digit in the file name.
Karl Heuer <kwzh@gnu.org>
parents: 23865
diff changeset
181
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
182 (bash
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
183 "^\\([^: \n\t]+\\): line \\([0-9]+\\):" 1 2)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
184
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
185 (borland
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
186 "^\\(?:Error\\|Warnin\\(g\\)\\) \\(?:[FEW][0-9]+ \\)?\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
187 \\([a-zA-Z]?:?[^:( \t\n]+\\)\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
188 \\([0-9]+\\)\\(?:[) \t]\\|:[^0-9\n]\\)" 2 3 nil (1))
8398
38513039d818 (compilation-error-regexp-alist): Make separate
Richard M. Stallman <rms@gnu.org>
parents: 8359
diff changeset
189
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
190 (caml
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
191 "^ *File \\(\"?\\)\\([^,\" \n\t<>]+\\)\\1, lines? \\([0-9]+\\)-?\\([0-9]+\\)?\\(?:$\\|,\
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
192 \\(?: characters? \\([0-9]+\\)-?\\([0-9]+\\)?:\\)?\\([ \n]Warning:\\)?\\)"
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
193 2 (3 . 4) (5 . 6) (7))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
194
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
195 (comma
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
196 "^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
197 \\(?:[(. pos]+\\([0-9]+\\))?\\)?[:.,; (-]\\( warning:\\|[-0-9 ]*(W)\\)?" 1 2 3 (4))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
198
109304
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
199 (cucumber
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
200 "\\(?:^cucumber\\(?: -p [^[:space:]]+\\)?\\|#\\)\
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
201 \\(?: \\)\\([^\(].*\\):\\([1-9][0-9]*\\)" 1 2)
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
202
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
203 (edg-1
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
204 "^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)"
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
205 1 2 nil (3 . 4))
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
206 (edg-2
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
207 "at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$"
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
208 2 1 nil 0)
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
209
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
210 (epc
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
211 "^Error [0-9]+ at (\\([0-9]+\\):\\([^)\n]+\\))" 2 1)
44413
2b898d069325 (compilation-error-regexp-alist):
Richard M. Stallman <rms@gnu.org>
parents: 44209
diff changeset
212
58445
4b0746e87898 (compilation-start): In cd command use substitute-env-vars -- not quite shell compatible but better than nothing.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 58256
diff changeset
213 (ftnchek
4b0746e87898 (compilation-start): In cd command use substitute-env-vars -- not quite shell compatible but better than nothing.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 58256
diff changeset
214 "\\(^Warning .*\\)? line[ \n]\\([0-9]+\\)[ \n]\\(?:col \\([0-9]+\\)[ \n]\\)?file \\([^ :;\n]+\\)"
4b0746e87898 (compilation-start): In cd command use substitute-env-vars -- not quite shell compatible but better than nothing.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 58256
diff changeset
215 4 2 3 (1))
57731
9621341c0037 (compilation-error-regexp-alist-alist) extend irix for NAG Fortran and add ftnchek-*
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57628
diff changeset
216
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
217 (iar
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
218 "^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
219 1 2 nil (3))
15084
01518892abad (compilation-error-regexp-alist): Add regexp
Richard M. Stallman <rms@gnu.org>
parents: 14807
diff changeset
220
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
221 (ibm
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
222 "^\\([^( \n\t]+\\)(\\([0-9]+\\):\\([0-9]+\\)) :\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
223 \\(?:warnin\\(g\\)\\|informationa\\(l\\)\\)?" 1 2 3 (4 . 5))
2461
1ecb75748794 (compilation-error-regexp-alist): Merged HP-UX 7.0 fc regexp with the
Roland McGrath <roland@gnu.org>
parents: 2460
diff changeset
224
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
225 ;; fixme: should be `mips'
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
226 (irix
57731
9621341c0037 (compilation-error-regexp-alist-alist) extend irix for NAG Fortran and add ftnchek-*
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57628
diff changeset
227 "^[-[:alnum:]_/ ]+: \\(?:\\(?:[sS]evere\\|[eE]rror\\|[wW]arnin\\(g\\)\\|[iI]nf\\(o\\)\\)[0-9 ]*: \\)?\
9621341c0037 (compilation-error-regexp-alist-alist) extend irix for NAG Fortran and add ftnchek-*
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57628
diff changeset
228 \\([^,\" \n\t]+\\)\\(?:, line\\|:\\) \\([0-9]+\\):" 3 4 nil (1 . 2))
2461
1ecb75748794 (compilation-error-regexp-alist): Merged HP-UX 7.0 fc regexp with the
Roland McGrath <roland@gnu.org>
parents: 2460
diff changeset
229
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
230 (java
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
231 "^\\(?:[ \t]+at \\|==[0-9]+== +\\(?:at\\|b\\(y\\)\\)\\).+(\\([^()\n]+\\):\\([0-9]+\\))$" 2 3 nil (1))
14048
1a0cc425fb62 Mon Nov 6 18:01:01 1995 Dave Love <d.love@dl.ac.uk>
Roland McGrath <roland@gnu.org>
parents: 14047
diff changeset
232
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
233 (jikes-file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
234 "^\\(?:Found\\|Issued\\) .* compiling \"\\(.+\\)\":$" 1 nil nil 0)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
235 (jikes-line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
236 "^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
237 nil 1 nil 2 0
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
238 (2 (compilation-face '(3))))
2461
1ecb75748794 (compilation-error-regexp-alist): Merged HP-UX 7.0 fc regexp with the
Roland McGrath <roland@gnu.org>
parents: 2460
diff changeset
239
110186
5328ea5b6e41 Fix Ruby compilation error matching.
Chong Yidong <cyd@stupidchicken.com>
parents: 109789
diff changeset
240 (gcc-include
5328ea5b6e41 Fix Ruby compilation error matching.
Chong Yidong <cyd@stupidchicken.com>
parents: 109789
diff changeset
241 "^\\(?:In file included \\| \\|\t\\)from \
5328ea5b6e41 Fix Ruby compilation error matching.
Chong Yidong <cyd@stupidchicken.com>
parents: 109789
diff changeset
242 \\(.+\\):\\([0-9]+\\)\\(?:\\(:\\)\\|\\(,\\|$\\)\\)?" 1 2 nil (3 . 4))
5328ea5b6e41 Fix Ruby compilation error matching.
Chong Yidong <cyd@stupidchicken.com>
parents: 109789
diff changeset
243
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
244 (gnu
104226
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
245 ;; The first line matches the program name for
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
246
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
247 ;; PROGRAM:SOURCE-FILE-NAME:LINENO: MESSAGE
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
248
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
249 ;; format, which is used for non-interactive programs other than
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
250 ;; compilers (e.g. the "jade:" entry in compilation.txt).
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
251
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
252 ;; This first line makes things ambiguous with output such as
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
253 ;; "foo:344:50:blabla" since the "foo" part can match this first
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
254 ;; line (in which case the file name as "344"). To avoid this,
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
255 ;; the second line disallows filenames exclusively composed of
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
256 ;; digits.
e312dc3a4650 Update comment (from Kevin Ryde).
Chong Yidong <cyd@stupidchicken.com>
parents: 103841
diff changeset
257
72025
7b30bf7651d1 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72001
diff changeset
258 ;; Similarly, we get lots of false positives with messages including
7b30bf7651d1 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72001
diff changeset
259 ;; times of the form "HH:MM:SS" where MM is taken as a line number, so
7b30bf7651d1 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72001
diff changeset
260 ;; the last line tries to rule out message where the info after the
7b30bf7651d1 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72001
diff changeset
261 ;; line number starts with "SS". --Stef
94494
07fb6a1d5233 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94168
diff changeset
262
07fb6a1d5233 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94168
diff changeset
263 ;; The core of the regexp is the one with *?. It says that a file name
07fb6a1d5233 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94168
diff changeset
264 ;; can be composed of any non-newline char, but it also rules out some
07fb6a1d5233 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94168
diff changeset
265 ;; valid but unlikely cases, such as a trailing space or a space
110266
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
266 ;; followed by a -, or a colon followed by a space.
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
267
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
268 ;; The "in \\|from " exception was added to handle messages from Ruby.
110186
5328ea5b6e41 Fix Ruby compilation error matching.
Chong Yidong <cyd@stupidchicken.com>
parents: 109789
diff changeset
269 "^\\(?:[[:alpha:]][-[:alnum:].]+: ?\\|[ \t]+\\(?:in \\|from \\)\\)?\
110266
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
270 \\([0-9]*[^0-9\n]\\(?:[^\n :]\\| [^-/\n]\\|:[^ \n]\\)*?\\): ?\
71667
a1e8435263b7 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71150
diff changeset
271 \\([0-9]+\\)\\(?:\\([.:]\\)\\([0-9]+\\)\\)?\
102176
1354605983ec Fix last change.
Chong Yidong <cyd@stupidchicken.com>
parents: 102172
diff changeset
272 \\(?:-\\([0-9]+\\)?\\(?:\\.\\([0-9]+\\)\\)?\\)?:\
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
273 \\(?: *\\(\\(?:Future\\|Runtime\\)?[Ww]arning\\|W:\\)\\|\
78848
38c9038666da (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78749
diff changeset
274 *\\([Ii]nfo\\(?:\\>\\|rmationa?l?\\)\\|I:\\|instantiated from\\|[Nn]ote\\)\\|\
72025
7b30bf7651d1 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72001
diff changeset
275 \[0-9]?\\(?:[^0-9\n]\\|$\\)\\|[0-9][0-9][0-9]\\)"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
276 1 (2 . 5) (4 . 6) (7 . 8))
2461
1ecb75748794 (compilation-error-regexp-alist): Merged HP-UX 7.0 fc regexp with the
Roland McGrath <roland@gnu.org>
parents: 2460
diff changeset
277
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
278 (lcc
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
279 "^\\(?:E\\|\\(W\\)\\), \\([^(\n]+\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
280 2 3 4 (1))
11791
34dbef732b27 (compilation-error-regexp-alist): Add regexps for IBM and Cray compilers.
Roland McGrath <roland@gnu.org>
parents: 11618
diff changeset
281
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
282 (makepp
75290
09d4f4bcd527 Add handling for makepplog.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 75281
diff changeset
283 "^makepp\\(?:\\(?:: warning\\(:\\).*?\\|\\(: Scanning\\|: [LR]e?l?oading makefile\\|: Imported\\|log:.*?\\) \\|: .*?\\)\
62964
6b3810cab95a (compilation-error-regexp-alist-alist): Allow (...) within `...' for makepp messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 62859
diff changeset
284 `\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]\\)"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
285 4 5 nil (1 . 2) 3
62964
6b3810cab95a (compilation-error-regexp-alist-alist): Allow (...) within `...' for makepp messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 62859
diff changeset
286 ("`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]" nil nil
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
287 (2 compilation-info-face)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
288 (3 compilation-line-face nil t)
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
289 (1 (compilation-error-properties 2 3 nil nil nil 0 nil)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
290 append)))
12767
287cc74602fa (compilation-error-regexp-alist): Add regexp for Sun ada.
Roland McGrath <roland@gnu.org>
parents: 12256
diff changeset
291
103463
6d3359edbf15 * progmodes/compile.el (compilation-error-regexp-alist-alist):
Chong Yidong <cyd@stupidchicken.com>
parents: 103248
diff changeset
292 ;; This regexp is pathologically slow on long lines (Bug#3441).
6d3359edbf15 * progmodes/compile.el (compilation-error-regexp-alist-alist):
Chong Yidong <cyd@stupidchicken.com>
parents: 103248
diff changeset
293 ;; (maven
6d3359edbf15 * progmodes/compile.el (compilation-error-regexp-alist-alist):
Chong Yidong <cyd@stupidchicken.com>
parents: 103248
diff changeset
294 ;; ;; Maven is a popular build tool for Java. Maven is Free Software.
6d3359edbf15 * progmodes/compile.el (compilation-error-regexp-alist-alist):
Chong Yidong <cyd@stupidchicken.com>
parents: 103248
diff changeset
295 ;; "\\(.*?\\):\\[\\([0-9]+\\),\\([0-9]+\\)\\]" 1 2 3)
102120
b39c9d4ea068 (compilation-error-regexp-alist-alist):
Nick Roberts <nickrob@snap.net.nz>
parents: 102102
diff changeset
296
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
297 ;; Should be lint-1, lint-2 (SysV lint)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
298 (mips-1
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
299 " (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
300 (mips-2
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
301 " in \\([^()\n ]+\\)(\\([0-9]+\\))$" 1 2)
17582
52780f61eb76 (compilation-error-regexp-alist): Add regexp for Perl -w.
Richard M. Stallman <rms@gnu.org>
parents: 17277
diff changeset
302
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
303 (msft
105915
d1351c2f9b08 * compilation.txt: Add one more error message for msft (Bug#4100).
Chong Yidong <cyd@stupidchicken.com>
parents: 105772
diff changeset
304 ;; The message may be a "warning", "error", or "fatal error" with
d1351c2f9b08 * compilation.txt: Add one more error message for msft (Bug#4100).
Chong Yidong <cyd@stupidchicken.com>
parents: 105772
diff changeset
305 ;; an error code, or "see declaration of" without an error code.
d1351c2f9b08 * compilation.txt: Add one more error message for msft (Bug#4100).
Chong Yidong <cyd@stupidchicken.com>
parents: 105772
diff changeset
306 "^ *\\([0-9]+>\\)?\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) \
d1351c2f9b08 * compilation.txt: Add one more error message for msft (Bug#4100).
Chong Yidong <cyd@stupidchicken.com>
parents: 105772
diff changeset
307 : \\(?:see declaration\\|\\(?:warnin\\(g\\)\\|[a-z ]+\\) C[0-9]+:\\)"
d1351c2f9b08 * compilation.txt: Add one more error message for msft (Bug#4100).
Chong Yidong <cyd@stupidchicken.com>
parents: 105772
diff changeset
308 2 3 nil (4))
18477
270080940256 (compilation-error-regexp-alist): New item, for Oracle compiler.
Richard M. Stallman <rms@gnu.org>
parents: 18273
diff changeset
309
102396
7b826f79f0d7 (compilation-error-regexp-alist-alist): Handle "omake -P" messages "file foo changed".
Sam Steingold <sds@gnu.org>
parents: 102383
diff changeset
310 (omake
7b826f79f0d7 (compilation-error-regexp-alist-alist): Handle "omake -P" messages "file foo changed".
Sam Steingold <sds@gnu.org>
parents: 102383
diff changeset
311 ;; "omake -P" reports "file foo changed"
7b826f79f0d7 (compilation-error-regexp-alist-alist): Handle "omake -P" messages "file foo changed".
Sam Steingold <sds@gnu.org>
parents: 102383
diff changeset
312 ;; (useful if you do "cvs up" and want to see what has changed)
7b826f79f0d7 (compilation-error-regexp-alist-alist): Handle "omake -P" messages "file foo changed".
Sam Steingold <sds@gnu.org>
parents: 102383
diff changeset
313 "omake: file \\(.*\\) changed" 1)
7b826f79f0d7 (compilation-error-regexp-alist-alist): Handle "omake -P" messages "file foo changed".
Sam Steingold <sds@gnu.org>
parents: 102383
diff changeset
314
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
315 (oracle
55990
c6610cef9b75 (compilation-set-window-height): Rearrange the save-* functions because a buffer can have several current point in different windows.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55806
diff changeset
316 "^\\(?:Semantic error\\|Error\\|PCC-[0-9]+:\\).* line \\([0-9]+\\)\
c6610cef9b75 (compilation-set-window-height): Rearrange the save-* functions because a buffer can have several current point in different windows.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55806
diff changeset
317 \\(?:\\(?:,\\| at\\)? column \\([0-9]+\\)\\)?\
c6610cef9b75 (compilation-set-window-height): Rearrange the save-* functions because a buffer can have several current point in different windows.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55806
diff changeset
318 \\(?:,\\| in\\| of\\)? file \\(.*?\\):?$"
18477
270080940256 (compilation-error-regexp-alist): New item, for Oracle compiler.
Richard M. Stallman <rms@gnu.org>
parents: 18273
diff changeset
319 3 1 2)
18984
d2c26a873eb4 (compilation-error-regexp-alist): Add elt for EPC F90.
Richard M. Stallman <rms@gnu.org>
parents: 18619
diff changeset
320
79785
1f0710a42481 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 79717
diff changeset
321 ;; "during global destruction": This comes out under "use
1f0710a42481 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 79717
diff changeset
322 ;; warnings" in recent perl when breaking circular references
1f0710a42481 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 79717
diff changeset
323 ;; during program or thread exit.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
324 (perl
79785
1f0710a42481 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 79717
diff changeset
325 " at \\([^ \n]+\\) line \\([0-9]+\\)\\(?:[,.]\\|$\\| \
1f0710a42481 Kevin Ryde <user42 at zip.com.au>
Glenn Morris <rgm@gnu.org>
parents: 79717
diff changeset
326 during global destruction\\.$\\)" 1 2)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
327
91821
4ab3a4d4cc4e add php error regex for compile mode
Mark A. Hershberger <mah@everybody.org>
parents: 91811
diff changeset
328 (php
4ab3a4d4cc4e add php error regex for compile mode
Mark A. Hershberger <mah@everybody.org>
parents: 91811
diff changeset
329 "\\(?:Parse\\|Fatal\\) error: \\(.*\\) in \\(.*\\) on line \\([0-9]+\\)"
4ab3a4d4cc4e add php error regex for compile mode
Mark A. Hershberger <mah@everybody.org>
parents: 91811
diff changeset
330 2 3 nil nil)
4ab3a4d4cc4e add php error regex for compile mode
Mark A. Hershberger <mah@everybody.org>
parents: 91811
diff changeset
331
109304
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
332 (ruby-Test::Unit
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
333 "[\t ]*\\[\\([^\(].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:$" 1 2)
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
334
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
335 (rxp
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
336 "^\\(?:Error\\|Warnin\\(g\\)\\):.*\n.* line \\([0-9]+\\) char\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
337 \\([0-9]+\\) of file://\\(.+\\)"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
338 4 2 3 (1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
339
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
340 (sparc-pascal-file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
341 "^\\w\\w\\w \\w\\w\\w +[0-3]?[0-9] +[0-2][0-9]:[0-5][0-9]:[0-5][0-9]\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
342 [12][09][0-9][0-9] +\\(.*\\):$"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
343 1 nil nil 0)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
344 (sparc-pascal-line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
345 "^\\(\\(?:E\\|\\(w\\)\\) +[0-9]+\\) line \\([0-9]+\\) - "
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
346 nil 3 nil (2) nil (1 (compilation-face '(2))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
347 (sparc-pascal-example
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
348 "^ +\\([0-9]+\\) +.*\n\\(\\(?:e\\|\\(w\\)\\) [0-9]+\\)-+"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
349 nil 1 nil (3) nil (2 (compilation-face '(3))))
20187
0ee26e03e911 (compilation-error-regexp-alist):
Karl Heuer <kwzh@gnu.org>
parents: 20059
diff changeset
350
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
351 (sun
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
352 ": \\(?:ERROR\\|WARNIN\\(G\\)\\|REMAR\\(K\\)\\) \\(?:[[:alnum:] ]+, \\)?\
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
353 File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
354 3 4 5 (1 . 2))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
355
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
356 (sun-ada
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
357 "^\\([^, \n\t]+\\), line \\([0-9]+\\), char \\([0-9]+\\)[:., \(-]" 1 2 3)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
358
94633
77be8c29913f (compilation-error-regexp-alist-alist):
Nick Roberts <nickrob@snap.net.nz>
parents: 94566
diff changeset
359 (watcom
107202
5e6600997bb8 * progmodes/compile.el (compilation-error-regexp-alist-alist): In
Chong Yidong <cyd@stupidchicken.com>
parents: 106815
diff changeset
360 "^[ \t]*\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)): ?\
94659
b631bc2a3818 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 94657
diff changeset
361 \\(?:\\(Error! E[0-9]+\\)\\|\\(Warning! W[0-9]+\\)\\):"
b631bc2a3818 Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 94657
diff changeset
362 1 2 nil (4))
94633
77be8c29913f (compilation-error-regexp-alist-alist):
Nick Roberts <nickrob@snap.net.nz>
parents: 94566
diff changeset
363
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
364 (4bsd
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
365 "\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\
61425
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
366 \\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
367
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
368 (gcov-file
71789
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
369 "^ *-: *\\(0\\):Source:\\(.+\\)$"
71150
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
370 2 1 nil 0 nil
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
371 (1 compilation-line-face prepend) (2 compilation-info-face prepend))
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
372 (gcov-header
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
373 "^ *-: *\\(0\\):\\(?:Object\\|Graph\\|Data\\|Runs\\|Programs\\):.+$"
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
374 nil 1 nil 0 nil
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
375 (1 compilation-line-face prepend))
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
376 ;; Underlines over all lines of gcov output are too uncomfortable to read.
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
377 ;; However, hyperlinks embedded in the lines are useful.
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
378 ;; So I put default face on the lines; and then put
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
379 ;; compilation-*-face by manually to eliminate the underlines.
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
380 ;; The hyperlinks are still effective.
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
381 (gcov-nomark
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
382 "^ *-: *\\([1-9]\\|[0-9]\\{2,\\}\\):.*$"
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
383 nil 1 nil 0 nil
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
384 (0 'default t)
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
385 (1 compilation-line-face prepend))
61425
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
386 (gcov-called-line
71150
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
387 "^ *\\([0-9]+\\): *\\([0-9]+\\):.*$"
71789
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
388 nil 2 nil 0 nil
71150
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
389 (0 'default t)
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
390 (1 compilation-info-face prepend) (2 compilation-line-face prepend))
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
391 (gcov-never-called
71789
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
392 "^ *\\(#####\\): *\\([0-9]+\\):.*$"
71150
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
393 nil 2 nil 2 nil
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
394 (0 'default t)
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
395 (1 compilation-error-face prepend) (2 compilation-line-face prepend))
86046
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
396
91759
de8465ae991c (compilation-error-regexp-alist-alist): Shorten some names.
Glenn Morris <rgm@gnu.org>
parents: 91716
diff changeset
397 (perl--Pod::Checker
86046
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
398 ;; podchecker error messages, per Pod::Checker.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
399 ;; The style is from the Pod::Checker::poderror() function, eg.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
400 ;; *** ERROR: Spurious text after =cut at line 193 in file foo.pm
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
401 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
402 ;; Plus end_pod() can give "at line EOF" instead of a
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
403 ;; number, so for that match "on line N" which is the
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
404 ;; originating spot, eg.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
405 ;; *** ERROR: =over on line 37 without closing =back at line EOF in file bar.pm
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
406 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
407 ;; Plus command() can give both "on line N" and "at line N";
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
408 ;; the latter is desired and is matched because the .* is
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
409 ;; greedy.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
410 ;; *** ERROR: =over on line 1 without closing =back (at head1) at line 3 in file x.pod
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
411 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
412 "^\\*\\*\\* \\(?:ERROR\\|\\(WARNING\\)\\).* \\(?:at\\|on\\) line \
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
413 \\([0-9]+\\) \\(?:.* \\)?in file \\([^ \t\n]+\\)"
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
414 3 2 nil (1))
91759
de8465ae991c (compilation-error-regexp-alist-alist): Shorten some names.
Glenn Morris <rgm@gnu.org>
parents: 91716
diff changeset
415 (perl--Test
86046
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
416 ;; perl Test module error messages.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
417 ;; Style per the ok() function "$context", eg.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
418 ;; # Failed test 1 in foo.t at line 6
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
419 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
420 "^# Failed test [0-9]+ in \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
421 1 2)
91759
de8465ae991c (compilation-error-regexp-alist-alist): Shorten some names.
Glenn Morris <rgm@gnu.org>
parents: 91716
diff changeset
422 (perl--Test2
87644
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
423 ;; Or when comparing got/want values,
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
424 ;; # Test 2 got: "xx" (t-compilation-perl-2.t at line 10)
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
425 ;;
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
426 ;; And under Test::Harness they're preceded by progress stuff with
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
427 ;; \r and "NOK",
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
428 ;; ... NOK 1# Test 1 got: "1234" (t/foo.t at line 46)
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
429 ;;
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
430 "^\\(.*NOK.*\\)?# Test [0-9]+ got:.* (\\([^ \t\r\n]+\\) at line \
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
431 \\([0-9]+\\))"
bd942570a8d9 Kevin Ryde <user42 at zip.com.au>:
Glenn Morris <rgm@gnu.org>
parents: 87640
diff changeset
432 2 3)
91759
de8465ae991c (compilation-error-regexp-alist-alist): Shorten some names.
Glenn Morris <rgm@gnu.org>
parents: 91716
diff changeset
433 (perl--Test::Harness
86046
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
434 ;; perl Test::Harness output, eg.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
435 ;; NOK 1# Test 1 got: "1234" (t/foo.t at line 46)
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
436 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
437 ;; Test::Harness is slightly designed for tty output, since
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
438 ;; it prints CRs to overwrite progress messages, but if you
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
439 ;; run it in with M-x compile this pattern can at least step
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
440 ;; through the failures.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
441 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
442 "^.*NOK.* \\([^ \t\r\n]+\\) at line \\([0-9]+\\)"
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
443 1 2)
91759
de8465ae991c (compilation-error-regexp-alist-alist): Shorten some names.
Glenn Morris <rgm@gnu.org>
parents: 91716
diff changeset
444 (weblint
86046
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
445 ;; The style comes from HTML::Lint::Error::as_string(), eg.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
446 ;; index.html (13:1) Unknown element <fdjsk>
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
447 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
448 ;; The pattern only matches filenames without spaces, since that
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
449 ;; should be usual and should help reduce the chance of a false
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
450 ;; match of a message from some unrelated program.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
451 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
452 ;; This message style is quite close to the "ibm" entry which is
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
453 ;; for IBM C, though that ibm bit doesn't put a space after the
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
454 ;; filename.
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
455 ;;
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
456 "^\\([^ \t\r\n(]+\\) (\\([0-9]+\\):\\([0-9]+\\)) "
b182750e235e Insert patterns from compilation-perl.el and compilation-weblint.el files.
Vinicius Jose Latorre <viniciusjl@ig.com.br>
parents: 85478
diff changeset
457 1 2 3)
71150
07b8f7d57642 (compilation-error-regexp-alist-alist::gcov-*): Almost rewrite. Underlines over all lines of gcov output are too uncomfortable to read.
Masatake YAMATO <jet@gyve.org>
parents: 71106
diff changeset
458 )
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
459 "Alist of values for `compilation-error-regexp-alist'.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
460
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
461 (defcustom compilation-error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
462 (mapcar 'car compilation-error-regexp-alist-alist)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
463 "Alist that specifies how to match errors in compiler output.
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
464 On GNU and Unix, any string is a valid filename, so these
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
465 matchers must make some common sense assumptions, which catch
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
466 normal cases. A shorter list will be lighter on resource usage.
41843
ab6cfeb406ab (compilation-error-regexp-alist): Added regexps for RXP.
Miles Bader <miles@gnu.org>
parents: 41037
diff changeset
467
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
468 Instead of an alist element, you can use a symbol, which is
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
469 looked up in `compilation-error-regexp-alist-alist'. You can see
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
470 the predefined symbols and their effects in the file
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
471 `etc/compilation.txt' (linked below if you are customizing this).
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
472
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
473 Each elt has the form (REGEXP FILE [LINE COLUMN TYPE HYPERLINK
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
474 HIGHLIGHT...]). If REGEXP matches, the FILE'th subexpression
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
475 gives the file name, and the LINE'th subexpression gives the line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
476 number. The COLUMN'th subexpression gives the column number on
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
477 that line.
52219
cf7c59950b0a 2003-08-14 Thu Jari Aalto <jari.aalto@poboxes.com>
Alex Schroeder <alex@gnu.org>
parents: 52061
diff changeset
478
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
479 If FILE, LINE or COLUMN are nil or that index didn't match, that
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
480 information is not present on the matched line. In that case the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
481 file name is assumed to be the same as the previous one in the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
482 buffer, line number defaults to 1 and column defaults to
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
483 beginning of line's indentation.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
484
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
485 FILE can also have the form (FILE FORMAT...), where the FORMATs
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
486 \(e.g. \"%s.c\") will be applied in turn to the recognized file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
487 name, until a file of that name is found. Or FILE can also be a
67516
6355aeca71ad (compilation-error-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67126
diff changeset
488 function that returns (FILENAME) or (RELATIVE-FILENAME . DIRNAME).
6355aeca71ad (compilation-error-regexp-alist): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 67126
diff changeset
489 In the former case, FILENAME may be relative or absolute.
52219
cf7c59950b0a 2003-08-14 Thu Jari Aalto <jari.aalto@poboxes.com>
Alex Schroeder <alex@gnu.org>
parents: 52061
diff changeset
490
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
491 LINE can also be of the form (LINE . END-LINE) meaning a range
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
492 of lines. COLUMN can also be of the form (COLUMN . END-COLUMN)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
493 meaning a range of columns starting on LINE and ending on
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
494 END-LINE, if that matched.
52219
cf7c59950b0a 2003-08-14 Thu Jari Aalto <jari.aalto@poboxes.com>
Alex Schroeder <alex@gnu.org>
parents: 52061
diff changeset
495
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
496 TYPE is 2 or nil for a real error or 1 for warning or 0 for info.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
497 TYPE can also be of the form (WARNING . INFO). In that case this
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
498 will be equivalent to 1 if the WARNING'th subexpression matched
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
499 or else equivalent to 0 if the INFO'th subexpression matched.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
500 See `compilation-error-face', `compilation-warning-face',
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
501 `compilation-info-face' and `compilation-skip-threshold'.
26229
11ac69b74132 (compilation-error-regexp-alist): Recognize
Gerd Moellmann <gerd@gnu.org>
parents: 26222
diff changeset
502
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
503 What matched the HYPERLINK'th subexpression has `mouse-face' and
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
504 `compilation-message-face' applied. If this is nil, the text
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
505 matched by the whole REGEXP becomes the hyperlink.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
506
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
507 Additional HIGHLIGHTs as described under `font-lock-keywords' can
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
508 be added."
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
509 :type `(set :menu-tag "Pick"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
510 ,@(mapcar (lambda (elt)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
511 (list 'const (car elt)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
512 compilation-error-regexp-alist-alist))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
513 :link `(file-link :tag "example file"
55806
5e730ddfd23a (compilation-error-regexp-alist): Use expand-file-name and data-directory.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55603
diff changeset
514 ,(expand-file-name "compilation.txt" data-directory))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
515 :group 'compilation)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
516
76728
712ae35a87ce (compilation-start): Save compilation-directory rather than
Chong Yidong <cyd@stupidchicken.com>
parents: 76532
diff changeset
517 ;;;###autoload(put 'compilation-directory 'safe-local-variable 'stringp)
53978
227623e374e8 (compilation-directory): New defvar.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53493
diff changeset
518 (defvar compilation-directory nil
227623e374e8 (compilation-directory): New defvar.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53493
diff changeset
519 "Directory to restore to when doing `recompile'.")
227623e374e8 (compilation-directory): New defvar.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53493
diff changeset
520
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
521 (defvar compilation-directory-matcher
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
522 '("\\(?:Entering\\|Leavin\\(g\\)\\) directory `\\(.+\\)'$" (2 . 1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
523 "A list for tracking when directories are entered or left.
73913
2afcd781ea33 (compilation-directory-matcher): Improve previous doc fix.
Glenn Morris <rgm@gnu.org>
parents: 73881
diff changeset
524 If nil, do not track directories, e.g. if all file names are absolute. The
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
525 first element is the REGEXP matching these messages. It can match any number
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
526 of variants, e.g. different languages. The remaining elements are all of the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
527 form (DIR . LEAVE). If for any one of these the DIR'th subexpression
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
528 matches, that is a directory name. If LEAVE is nil or the corresponding
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
529 LEAVE'th subexpression doesn't match, this message is about going into another
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
530 directory. If it does match anything, this message is about going back to the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
531 directory we were in before the last entering message. If you change this,
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
532 you may also want to change `compilation-page-delimiter'.")
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
533
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
534 (defvar compilation-page-delimiter
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
535 "^\\(?:\f\\|.*\\(?:Entering\\|Leaving\\) directory `.+'\n\\)+"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
536 "Value of `page-delimiter' in Compilation mode.")
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
537
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
538 (defvar compilation-mode-font-lock-keywords
72025
7b30bf7651d1 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72001
diff changeset
539 '(;; configure output lines.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
540 ("^[Cc]hecking \\(?:[Ff]or \\|[Ii]f \\|[Ww]hether \\(?:to \\)?\\)?\\(.+\\)\\.\\.\\. *\\(?:(cached) *\\)?\\(\\(yes\\(?: .+\\)?\\)\\|no\\|\\(.*\\)\\)$"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
541 (1 font-lock-variable-name-face)
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
542 (2 (compilation-face '(4 . 3))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
543 ;; Command output lines. Recognize `make[n]:' lines too.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
544 ("^\\([[:alnum:]_/.+-]+\\)\\(\\[\\([0-9]+\\)\\]\\)?[ \t]*:"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
545 (1 font-lock-function-name-face) (3 compilation-line-face nil t))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
546 (" --?o\\(?:utfile\\|utput\\)?[= ]?\\(\\S +\\)" . 1)
71742
fcbb34640a44 (compilation-mode-font-lock-keywords): Don't highlight start/end markers
Romain Francoise <romain@orebokech.com>
parents: 71667
diff changeset
547 ("^Compilation \\(finished\\).*"
fcbb34640a44 (compilation-mode-font-lock-keywords): Don't highlight start/end markers
Romain Francoise <romain@orebokech.com>
parents: 71667
diff changeset
548 (0 '(face nil message nil help-echo nil mouse-face nil) t)
64943
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
549 (1 compilation-info-face))
72025
7b30bf7651d1 (compilation-error-regexp-alist-alist) <gnu>:
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 72001
diff changeset
550 ("^Compilation \\(exited abnormally\\|interrupt\\|killed\\|terminated\\|segmentation fault\\)\\(?:.*with code \\([0-9]+\\)\\)?.*"
71742
fcbb34640a44 (compilation-mode-font-lock-keywords): Don't highlight start/end markers
Romain Francoise <romain@orebokech.com>
parents: 71667
diff changeset
551 (0 '(face nil message nil help-echo nil mouse-face nil) t)
64943
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
552 (1 compilation-error-face)
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
553 (2 compilation-error-face nil t)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
554 "Additional things to highlight in Compilation mode.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
555 This gets tacked on the end of the generated expressions.")
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
556
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
557 (defvar compilation-highlight-regexp t
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
558 "Regexp matching part of visited source lines to highlight temporarily.
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
559 Highlight entire line if t; don't highlight source lines if nil.")
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
560
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
561 (defvar compilation-highlight-overlay nil
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
562 "Overlay used to temporarily highlight compilation matches.")
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
563
23263
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
564 (defcustom compilation-error-screen-columns t
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
565 "If non-nil, column numbers in error messages are screen columns.
23263
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
566 Otherwise they are interpreted as character positions, with
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
567 each character occupying one column.
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
568 The default is to use screen columns, which requires that the compilation
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
569 program and Emacs agree about the display width of the characters,
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
570 especially the TAB character."
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
571 :type 'boolean
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
572 :group 'compilation
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
573 :version "20.4")
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
574
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
575 (defcustom compilation-read-command t
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
576 "Non-nil means \\[compile] reads the compilation command to use.
106779
57e095b90f5b * compile.el (compilation-read-command): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106777
diff changeset
577 Otherwise, \\[compile] just uses the value of `compile-command'.
57e095b90f5b * compile.el (compilation-read-command): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106777
diff changeset
578
57e095b90f5b * compile.el (compilation-read-command): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106777
diff changeset
579 Note that changing this to nil may be a security risk, because a
57e095b90f5b * compile.el (compilation-read-command): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106777
diff changeset
580 file might define a malicious `compile-command' as a file local
57e095b90f5b * compile.el (compilation-read-command): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106777
diff changeset
581 variable, and you might not notice. Therefore, `compile-command'
57e095b90f5b * compile.el (compilation-read-command): Doc fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 106777
diff changeset
582 is considered unsafe if this variable is nil."
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
583 :type 'boolean
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
584 :group 'compilation)
5406
d9a58377567c (compilation-read-command, compilation-ask-about-save): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 5260
diff changeset
585
19766
0790c7dab24d (compilation-ask-about-save): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 19616
diff changeset
586 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
587 (defcustom compilation-ask-about-save t
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
588 "Non-nil means \\[compile] asks which buffers to save before compiling.
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
589 Otherwise, it saves all modified buffers without asking."
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
590 :type 'boolean
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
591 :group 'compilation)
5406
d9a58377567c (compilation-read-command, compilation-ask-about-save): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 5260
diff changeset
592
107802
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
593 (defcustom compilation-save-buffers-predicate nil
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
594 "The second argument (PRED) passed to `save-some-buffers' before compiling.
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
595 E.g., one can set this to
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
596 (lambda ()
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
597 (string-prefix-p my-compilation-root (file-truename (buffer-file-name))))
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
598 to limit saving to files located under `my-compilation-root'.
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
599 Note, that, in general, `compilation-directory' cannot be used instead
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
600 of `my-compilation-root' here."
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
601 :type '(choice
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
602 (const :tag "Default (save all file-visiting buffers)" nil)
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
603 (const :tag "Save all buffers" t)
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
604 function)
107816
1cba68e0c6f6 * compile.el (compilation-save-buffers-predicate): Add missing :version tag.
Glenn Morris <rgm@gnu.org>
parents: 107812
diff changeset
605 :group 'compilation
1cba68e0c6f6 * compile.el (compilation-save-buffers-predicate): Add missing :version tag.
Glenn Morris <rgm@gnu.org>
parents: 107812
diff changeset
606 :version "24.1")
107802
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
607
569
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
608 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
609 (defcustom compilation-search-path '(nil)
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
610 "List of directories to search for source files named in error messages.
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
611 Elements should be directory names, not file names of directories.
77886
c90e5f7ef586 (compilation-find-file, compilation-handle-exit): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 77786
diff changeset
612 The value nil as an element means to try the default directory."
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
613 :type '(repeat (choice (const :tag "Default" nil)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
614 (string :tag "Directory")))
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
615 :group 'compilation)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
616
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
617 ;;;###autoload
105957
25e1d7e37015 * widget.el (define-widget): Purecopy the docstring.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 105915
diff changeset
618 (defcustom compile-command (purecopy "make -k ")
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
619 "Last shell command used to do a compilation; default for next compilation.
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
620
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
621 Sometimes it is useful for files to supply local values for this variable.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
622 You might also use mode hooks to specify it in certain modes, like this:
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
623
19007
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
624 (add-hook 'c-mode-hook
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
625 (lambda ()
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
626 (unless (or (file-exists-p \"makefile\")
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
627 (file-exists-p \"Makefile\"))
38493
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
628 (set (make-local-variable 'compile-command)
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
629 (concat \"make -k \"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
630 (file-name-sans-extension buffer-file-name))))))"
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
631 :type 'string
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
632 :group 'compilation)
106777
e96c7312f94c Fix compile-command's safe-local-variable condition.
Chong Yidong <cyd@stupidchicken.com>
parents: 105965
diff changeset
633 ;;;###autoload(put 'compile-command 'safe-local-variable (lambda (a) (and (stringp a) (or (not (boundp 'compilation-read-command)) compilation-read-command))))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
634
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
635 ;;;###autoload
65055
0b9598224a95 (compilation-disable-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 65052
diff changeset
636 (defcustom compilation-disable-input nil
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
637 "If non-nil, send end-of-file as compilation process input.
65052
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
638 This only affects platforms that support asynchronous processes (see
65070
5a147188ccac (compilation-disable-input): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 65055
diff changeset
639 `start-process'); synchronous compilation processes never accept input."
65052
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
640 :type 'boolean
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
641 :group 'compilation
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
642 :version "22.1")
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
643
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
644 ;; A weak per-compilation-buffer hash indexed by (FILENAME . DIRECTORY). Each
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
645 ;; value is a FILE-STRUCTURE as described above, with the car eq to the hash
74157
e56f52b00e2d Space/tab mixup.
Juanma Barranquero <lekktu@gmail.com>
parents: 74057
diff changeset
646 ;; key. This holds the tree seen from root, for storing new nodes.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
647 (defvar compilation-locs ())
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
648
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
649 (defvar compilation-debug nil
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
650 "*Set this to t before creating a *compilation* buffer.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
651 Then every error line will have a debug text property with the matcher that
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
652 fit this line and the match data. Use `describe-text-properties'.")
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
653
12920
905444ab8d92 (compilation-exit-message-function): New variable.
Roland McGrath <roland@gnu.org>
parents: 12767
diff changeset
654 (defvar compilation-exit-message-function nil "\
905444ab8d92 (compilation-exit-message-function): New variable.
Roland McGrath <roland@gnu.org>
parents: 12767
diff changeset
655 If non-nil, called when a compilation process dies to return a status message.
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
656 This should be a function of three arguments: process status, exit status,
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
657 and exit message; it returns a cons (MESSAGE . MODELINE) of the strings to
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
658 write into the compilation buffer, and to put in its mode line.")
12920
905444ab8d92 (compilation-exit-message-function): New variable.
Roland McGrath <roland@gnu.org>
parents: 12767
diff changeset
659
52061
d11e55dcc374 2003-07-28 Tak Ota <Takaaki.Ota@am.sony.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 51797
diff changeset
660 (defvar compilation-environment nil
d11e55dcc374 2003-07-28 Tak Ota <Takaaki.Ota@am.sony.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 51797
diff changeset
661 "*List of environment variables for compilation to inherit.
d11e55dcc374 2003-07-28 Tak Ota <Takaaki.Ota@am.sony.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 51797
diff changeset
662 Each element should be a string of the form ENVVARNAME=VALUE.
d11e55dcc374 2003-07-28 Tak Ota <Takaaki.Ota@am.sony.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 51797
diff changeset
663 This list is temporarily prepended to `process-environment' prior to
d11e55dcc374 2003-07-28 Tak Ota <Takaaki.Ota@am.sony.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 51797
diff changeset
664 starting the compilation process.")
d11e55dcc374 2003-07-28 Tak Ota <Takaaki.Ota@am.sony.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 51797
diff changeset
665
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
666 ;; History of compile commands.
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
667 (defvar compile-history nil)
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
668
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
669 (defface compilation-error
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
670 '((t :inherit font-lock-warning-face))
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
671 "Face used to highlight compiler errors."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
672 :group 'compilation
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
673 :version "22.1")
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
674
63196
72620d384ae2 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-367
Miles Bader <miles@gnu.org>
parents: 63057
diff changeset
675 (defface compilation-warning
55603
706a50524d5f (compilation-warning-face, compilation-info-face): Use min-colors.
Eli Zaretskii <eliz@gnu.org>
parents: 55553
diff changeset
676 '((((class color) (min-colors 16)) (:foreground "Orange" :weight bold))
706a50524d5f (compilation-warning-face, compilation-info-face): Use min-colors.
Eli Zaretskii <eliz@gnu.org>
parents: 55553
diff changeset
677 (((class color)) (:foreground "cyan" :weight bold))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
678 (t (:weight bold)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
679 "Face used to highlight compiler warnings."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
680 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
681 :version "22.1")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
682
63196
72620d384ae2 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-367
Miles Bader <miles@gnu.org>
parents: 63057
diff changeset
683 (defface compilation-info
56877
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
684 '((((class color) (min-colors 16) (background light))
55603
706a50524d5f (compilation-warning-face, compilation-info-face): Use min-colors.
Eli Zaretskii <eliz@gnu.org>
parents: 55553
diff changeset
685 (:foreground "Green3" :weight bold))
61394
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61362
diff changeset
686 (((class color) (min-colors 88) (background dark))
31aa9a390538 * mh-customize.el (mh-speedbar-selected-folder-face): Special case
Dan Nicolaescu <dann@ics.uci.edu>
parents: 61362
diff changeset
687 (:foreground "Green1" :weight bold))
56877
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
688 (((class color) (min-colors 16) (background dark))
55603
706a50524d5f (compilation-warning-face, compilation-info-face): Use min-colors.
Eli Zaretskii <eliz@gnu.org>
parents: 55553
diff changeset
689 (:foreground "Green" :weight bold))
706a50524d5f (compilation-warning-face, compilation-info-face): Use min-colors.
Eli Zaretskii <eliz@gnu.org>
parents: 55553
diff changeset
690 (((class color)) (:foreground "green" :weight bold))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
691 (t (:weight bold)))
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
692 "Face used to highlight compiler information."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
693 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
694 :version "22.1")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
695
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
696 (defface compilation-line-number
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
697 '((t :inherit font-lock-variable-name-face))
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
698 "Face for displaying line numbers in compiler messages."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
699 :group 'compilation
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
700 :version "22.1")
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
701
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
702 (defface compilation-column-number
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
703 '((t :inherit font-lock-type-face))
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
704 "Face for displaying column numbers in compiler messages."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
705 :group 'compilation
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
706 :version "22.1")
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
707
69765
1a3385f6eeec (compilation-message-face): Make it defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 68773
diff changeset
708 (defcustom compilation-message-face 'underline
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
709 "Face name to use for whole messages.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
710 Faces `compilation-error-face', `compilation-warning-face',
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
711 `compilation-info-face', `compilation-line-face' and
69765
1a3385f6eeec (compilation-message-face): Make it defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 68773
diff changeset
712 `compilation-column-face' get prepended to this, when applicable."
1a3385f6eeec (compilation-message-face): Make it defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 68773
diff changeset
713 :type 'face
1a3385f6eeec (compilation-message-face): Make it defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 68773
diff changeset
714 :group 'compilation
1a3385f6eeec (compilation-message-face): Make it defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 68773
diff changeset
715 :version "22.1")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
716
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
717 (defvar compilation-error-face 'compilation-error
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
718 "Face name to use for file name in error messages.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
719
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
720 (defvar compilation-warning-face 'compilation-warning
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
721 "Face name to use for file name in warning messages.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
722
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
723 (defvar compilation-info-face 'compilation-info
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
724 "Face name to use for file name in informational messages.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
725
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
726 (defvar compilation-line-face 'compilation-line-number
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
727 "Face name to use for line numbers in compiler messages.")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
728
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
729 (defvar compilation-column-face 'compilation-column-number
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
730 "Face name to use for column numbers in compiler messages.")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
731
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
732 ;; same faces as dired uses
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
733 (defvar compilation-enter-directory-face 'font-lock-function-name-face
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
734 "Face name to use for entering directory messages.")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
735
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
736 (defvar compilation-leave-directory-face 'font-lock-type-face
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
737 "Face name to use for leaving directory messages.")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
738
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
739
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
740
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
741 ;; Used for compatibility with the old compile.el.
55237
37068e6cd644 (compilation-last-buffer): Add var alias.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55227
diff changeset
742 (defvaralias 'compilation-last-buffer 'next-error-last-buffer)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
743 (defvar compilation-parsing-end (make-marker))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
744 (defvar compilation-parse-errors-function nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
745 (defvar compilation-error-list nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
746 (defvar compilation-old-error-list nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
747
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
748 (defcustom compilation-auto-jump-to-first-error nil
99816
e3d342053d75 (compilation-auto-jump-to-first-error):
Juri Linkov <juri@jurta.org>
parents: 99688
diff changeset
749 "If non-nil, automatically jump to the first error during compilation."
82004
af49557163c6 (compilation-auto-jump-to-first-error): Add
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81999
diff changeset
750 :type 'boolean
af49557163c6 (compilation-auto-jump-to-first-error): Add
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81999
diff changeset
751 :group 'compilation
af49557163c6 (compilation-auto-jump-to-first-error): Add
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81999
diff changeset
752 :version "23.1")
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
753
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
754 (defvar compilation-auto-jump-to-next nil
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
755 "If non-nil, automatically jump to the next error encountered.")
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
756 (make-variable-buffer-local 'compilation-auto-jump-to-next)
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
757
108376
96ef3c75fd61 * progmodes/compile.el (compilation-buffer-modtime): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108083
diff changeset
758 (defvar compilation-buffer-modtime nil
107479
6edb016a3cfc Fix bug#5620: recalculate all markers on compilation buffer
Sam Steingold <sds@gnu.org>
parents: 107202
diff changeset
759 "The buffer modification time, for buffers not associated with files.")
108376
96ef3c75fd61 * progmodes/compile.el (compilation-buffer-modtime): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108083
diff changeset
760 (make-variable-buffer-local 'compilation-buffer-modtime)
85478
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
761
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
762 (defvar compilation-skip-to-next-location t
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
763 "*If non-nil, skip multiple error messages for the same source location.")
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
764
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
765 (defcustom compilation-skip-threshold 1
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
766 "Compilation motion commands skip less important messages.
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
767 The value can be either 2 -- skip anything less than error, 1 --
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
768 skip anything less than warning or 0 -- don't skip any messages.
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
769 Note that all messages not positively identified as warning or
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
770 info, are considered errors."
110266
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
771 :type '(choice (const :tag "Skip warnings and info" 2)
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
772 (const :tag "Skip info" 1)
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
773 (const :tag "No skip" 0))
85478
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
774 :group 'compilation
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
775 :version "22.1")
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
776
110266
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
777 (defun compilation-set-skip-threshold (level)
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
778 "Switch the `compilation-skip-threshold' level."
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
779 (interactive
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
780 (list
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
781 (mod (if current-prefix-arg
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
782 (prefix-numeric-value current-prefix-arg)
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
783 (1+ compilation-skip-threshold))
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
784 3)))
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
785 (setq compilation-skip-threshold level)
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
786 (message "Skipping %s"
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
787 (case compilation-skip-threshold
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
788 (0 "Nothing")
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
789 (1 "Info messages")
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
790 (2 "Warnings and info"))))
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
791
85478
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
792 (defcustom compilation-skip-visited nil
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
793 "Compilation motion commands skip visited messages if this is t.
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
794 Visited messages are ones for which the file, line and column have been jumped
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
795 to from the current content in the current compilation buffer, even if it was
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
796 from a different message."
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
797 :type 'boolean
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
798 :group 'compilation
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
799 :version "22.1")
786d3a985758 * term/x-win.el (x-gtk-stock-map, icon-map-list)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85366
diff changeset
800
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
801 (defun compilation-face (type)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
802 (or (and (car type) (match-end (car type)) compilation-warning-face)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
803 (and (cdr type) (match-end (cdr type)) compilation-info-face)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
804 compilation-error-face))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
805
60353
ee6146798de1 Add comment for compilation-directory-properties.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 59996
diff changeset
806 ;; Internal function for calculating the text properties of a directory
ee6146798de1 Add comment for compilation-directory-properties.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 59996
diff changeset
807 ;; change message. The directory property is important, because it is
ee6146798de1 Add comment for compilation-directory-properties.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 59996
diff changeset
808 ;; the stack of nested enter-messages. Relative filenames on the following
ee6146798de1 Add comment for compilation-directory-properties.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 59996
diff changeset
809 ;; lines are relative to the top of the stack.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
810 (defun compilation-directory-properties (idx leave)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
811 (if leave (setq leave (match-end leave)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
812 ;; find previous stack, and push onto it, or if `leave' pop it
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
813 (let ((dir (previous-single-property-change (point) 'directory)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
814 (setq dir (if dir (or (get-text-property (1- dir) 'directory)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
815 (get-text-property dir 'directory))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
816 `(face ,(if leave
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
817 compilation-leave-directory-face
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
818 compilation-enter-directory-face)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
819 directory ,(if leave
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
820 (or (cdr dir)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
821 '(nil)) ; nil only isn't a property-change
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
822 (cons (match-string-no-properties idx) dir))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
823 mouse-face highlight
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
824 keymap compilation-button-map
76748
e22915955932 Change help-echo (again). `Entering directory DIR' visits DIR
Nick Roberts <nickrob@snap.net.nz>
parents: 76728
diff changeset
825 help-echo "mouse-2: visit destination directory")))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
826
74157
e56f52b00e2d Space/tab mixup.
Juanma Barranquero <lekktu@gmail.com>
parents: 74057
diff changeset
827 ;; Data type `reverse-ordered-alist' retriever. This function retrieves the
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
828 ;; KEY element from the ALIST, creating it in the right position if not already
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
829 ;; present. ALIST structure is
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
830 ;; '(ANCHOR (KEY1 ...) (KEY2 ...)... (KEYn ALIST ...))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
831 ;; ANCHOR is ignored, but necessary so that elements can be inserted. KEY1
74157
e56f52b00e2d Space/tab mixup.
Juanma Barranquero <lekktu@gmail.com>
parents: 74057
diff changeset
832 ;; may be nil. The other KEYs are ordered backwards so that growing line
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
833 ;; numbers can be inserted in front and searching can abort after half the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
834 ;; list on average.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
835 (eval-when-compile ;Don't keep it at runtime if not needed.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
836 (defmacro compilation-assq (key alist)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
837 `(let* ((l1 ,alist)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
838 (l2 (cdr l1)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
839 (car (if (if (null ,key)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
840 (if l2 (null (caar l2)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
841 (while (if l2 (if (caar l2) (< ,key (caar l2)) t))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
842 (setq l1 l2
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
843 l2 (cdr l1)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
844 (if l2 (eq ,key (caar l2))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
845 l2
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
846 (setcdr l1 (cons (list ,key) l2)))))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
847
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
848 (defun compilation-auto-jump (buffer pos)
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
849 (with-current-buffer buffer
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
850 (goto-char pos)
94526
c444df26b274 (compilation-auto-jump): Set window point to `pos' explicitly.
Juri Linkov <juri@jurta.org>
parents: 94494
diff changeset
851 (let ((win (get-buffer-window buffer 0)))
c444df26b274 (compilation-auto-jump): Set window point to `pos' explicitly.
Juri Linkov <juri@jurta.org>
parents: 94494
diff changeset
852 (if win (set-window-point win pos)))
91811
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
853 (if compilation-auto-jump-to-first-error
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
854 (compile-goto-error))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
855
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
856 ;; This function is the central driver, called when font-locking to gather
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
857 ;; all information needed to later jump to corresponding source code.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
858 ;; Return a property list with all meta information on this error location.
65695
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
859
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
860 (defun compilation-error-properties (file line end-line col end-col type fmt)
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
861 (unless (< (next-single-property-change (match-beginning 0)
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
862 'directory nil (point))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
863 (point))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
864 (if file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
865 (if (functionp file)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
866 (setq file (funcall file))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
867 (let (dir)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
868 (setq file (match-string-no-properties file))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
869 (unless (file-name-absolute-p file)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
870 (setq dir (previous-single-property-change (point) 'directory)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
871 dir (if dir (or (get-text-property (1- dir) 'directory)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
872 (get-text-property dir 'directory)))))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
873 (setq file (cons file (car dir)))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
874 ;; This message didn't mention one, get it from previous
65695
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
875 (let ((prev-pos
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
876 ;; Find the previous message.
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
877 (previous-single-property-change (point) 'message)))
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
878 (if prev-pos
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
879 ;; Get the file structure that belongs to it.
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
880 (let* ((prev
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
881 (or (get-text-property (1- prev-pos) 'message)
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
882 (get-text-property prev-pos 'message)))
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
883 (prev-struct
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
884 (car (nth 2 (car prev)))))
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
885 ;; Construct FILE . DIR from that.
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
886 (if prev-struct
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
887 (setq file (cons (car prev-struct)
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
888 (cadr prev-struct))))))
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
889 (unless file
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
890 (setq file '("*unknown*")))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
891 ;; All of these fields are optional, get them only if we have an index, and
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
892 ;; it matched some part of the message.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
893 (and line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
894 (setq line (match-string-no-properties line))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
895 (setq line (string-to-number line)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
896 (and end-line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
897 (setq end-line (match-string-no-properties end-line))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
898 (setq end-line (string-to-number end-line)))
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
899 (if col
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
900 (if (functionp col)
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
901 (setq col (funcall col))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
902 (and
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
903 (setq col (match-string-no-properties col))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
904 (setq col (- (string-to-number col) compilation-first-column)))))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
905 (if (and end-col (functionp end-col))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
906 (setq end-col (funcall end-col))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
907 (if (and end-col (setq end-col (match-string-no-properties end-col)))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
908 (setq end-col (- (string-to-number end-col) compilation-first-column -1))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
909 (if end-line (setq end-col -1))))
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
910 (if (consp type) ; not a static type, check what it is.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
911 (setq type (or (and (car type) (match-end (car type)) 1)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
912 (and (cdr type) (match-end (cdr type)) 0)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
913 2)))
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
914
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
915 (when (and compilation-auto-jump-to-next
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
916 (>= type compilation-skip-threshold))
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
917 (kill-local-variable 'compilation-auto-jump-to-next)
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
918 (run-with-timer 0 nil 'compilation-auto-jump
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
919 (current-buffer) (match-beginning 0)))
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
920
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
921 (compilation-internal-error-properties file line end-line col end-col type fmt)))
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
922
58244
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
923 (defun compilation-move-to-column (col screen)
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
924 "Go to column COL on the current line.
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
925 If SCREEN is non-nil, columns are screen columns, otherwise, they are
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
926 just char-counts."
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
927 (if screen
102383
51a8a51bd2a2 (compilation-move-to-column): Guard against negative col values.
Sam Steingold <sds@gnu.org>
parents: 102176
diff changeset
928 (move-to-column (max col 0))
58244
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
929 (goto-char (min (+ (line-beginning-position) col) (line-end-position)))))
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
930
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
931 (defun compilation-internal-error-properties (file line end-line col end-col type fmts)
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
932 "Get the meta-info that will be added as text-properties.
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
933 LINE, END-LINE, COL, END-COL are integers or nil.
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
934 TYPE can be 0, 1, or 2, meaning error, warning, or just info.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
935 FILE should be (FILENAME) or (RELATIVE-FILENAME . DIRNAME) or nil.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
936 FMTS is a list of format specs for transforming the file name.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
937 (See `compilation-error-regexp-alist'.)"
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
938 (unless file (setq file '("*unknown*")))
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
939 (let* ((file-struct (compilation-get-file-structure file fmts))
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
940 ;; Get first already existing marker (if any has one, all have one).
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
941 ;; Do this first, as the compilation-assq`s may create new nodes.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
942 (marker-line (car (cddr file-struct))) ; a line structure
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
943 (marker (nth 3 (cadr marker-line))) ; its marker
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
944 (compilation-error-screen-columns compilation-error-screen-columns)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
945 end-marker loc end-loc)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
946 (if (not (and marker (marker-buffer marker)))
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
947 (setq marker nil) ; no valid marker for this file
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
948 (setq loc (or line 1)) ; normalize no linenumber to line 1
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
949 (catch 'marker ; find nearest loc, at least one exists
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
950 (dolist (x (nthcdr 3 file-struct)) ; loop over remaining lines
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
951 (if (> (car x) loc) ; still bigger
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
952 (setq marker-line x)
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
953 (if (> (- (or (car marker-line) 1) loc)
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
954 (- loc (car x))) ; current line is nearer
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
955 (setq marker-line x))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
956 (throw 'marker t))))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
957 (setq marker (nth 3 (cadr marker-line))
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
958 marker-line (or (car marker-line) 1))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
959 (with-current-buffer (marker-buffer marker)
66735
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
960 (save-excursion
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
961 (save-restriction
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
962 (widen)
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
963 (goto-char (marker-position marker))
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
964 (when (or end-col end-line)
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
965 (beginning-of-line (- (or end-line line) marker-line -1))
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
966 (if (or (null end-col) (< end-col 0))
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
967 (end-of-line)
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
968 (compilation-move-to-column
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
969 end-col compilation-error-screen-columns))
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
970 (setq end-marker (list (point-marker))))
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
971 (beginning-of-line (if end-line
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
972 (- line end-line -1)
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
973 (- loc marker-line -1)))
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
974 (if col
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
975 (compilation-move-to-column
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
976 col compilation-error-screen-columns)
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
977 (forward-to-indentation 0))
11893f0cbfb1 (compilation-internal-error-properties):
Richard M. Stallman <rms@gnu.org>
parents: 66119
diff changeset
978 (setq marker (list (point-marker)))))))
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
979
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
980 (setq loc (compilation-assq line (cdr file-struct)))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
981 (if end-line
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
982 (setq end-loc (compilation-assq end-line (cdr file-struct))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
983 end-loc (compilation-assq end-col end-loc))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
984 (if end-col ; use same line element
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
985 (setq end-loc (compilation-assq end-col loc))))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
986 (setq loc (compilation-assq col loc))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
987 ;; If they are new, make the loc(s) reference the file they point to.
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
988 (or (cdr loc) (setcdr loc `(,line ,file-struct ,@marker)))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
989 (if end-loc
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
990 (or (cdr end-loc)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
991 (setcdr end-loc `(,(or end-line line) ,file-struct ,@end-marker))))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
992
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
993 ;; Must start with face
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
994 `(face ,compilation-message-face
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
995 message (,loc ,type ,end-loc)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
996 ,@(if compilation-debug
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
997 `(debug (,(assoc (with-no-warnings matcher) font-lock-keywords)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
998 ,@(match-data))))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
999 help-echo ,(if col
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1000 "mouse-2: visit this file, line and column"
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1001 (if line
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1002 "mouse-2: visit this file and line"
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1003 "mouse-2: visit this file"))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1004 keymap compilation-button-map
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1005 mouse-face highlight)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1006
17056
0f7992bc968f Rewrite Font Lock support.
Simon Marshall <simon@gnu.org>
parents: 17054
diff changeset
1007 (defun compilation-mode-font-lock-keywords ()
0f7992bc968f Rewrite Font Lock support.
Simon Marshall <simon@gnu.org>
parents: 17054
diff changeset
1008 "Return expressions to highlight in Compilation mode."
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1009 (if compilation-parse-errors-function
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1010 ;; An old package! Try the compatibility code.
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1011 '((compilation-compat-parse-errors))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1012 (append
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1013 ;; make directory tracking
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1014 (if compilation-directory-matcher
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1015 `((,(car compilation-directory-matcher)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1016 ,@(mapcar (lambda (elt)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1017 `(,(car elt)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1018 (compilation-directory-properties
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1019 ,(car elt) ,(cdr elt))
61760
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1020 t t))
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1021 (cdr compilation-directory-matcher)))))
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1022
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1023 ;; Compiler warning/error lines.
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1024 (mapcar
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1025 (lambda (item)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1026 (if (symbolp item)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1027 (setq item (cdr (assq item
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1028 compilation-error-regexp-alist-alist))))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1029 (let ((file (nth 1 item))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1030 (line (nth 2 item))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1031 (col (nth 3 item))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1032 (type (nth 4 item))
103841
bb5ce7283e84 (compilation-mode-font-lock-keywords): Omake sometimes indents the
Sam Steingold <sds@gnu.org>
parents: 103463
diff changeset
1033 (pat (car item))
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1034 end-line end-col fmt)
103841
bb5ce7283e84 (compilation-mode-font-lock-keywords): Omake sometimes indents the
Sam Steingold <sds@gnu.org>
parents: 103463
diff changeset
1035 ;; omake reports some error indented, so skip the indentation.
bb5ce7283e84 (compilation-mode-font-lock-keywords): Omake sometimes indents the
Sam Steingold <sds@gnu.org>
parents: 103463
diff changeset
1036 ;; another solution is to modify (some?) regexps in
bb5ce7283e84 (compilation-mode-font-lock-keywords): Omake sometimes indents the
Sam Steingold <sds@gnu.org>
parents: 103463
diff changeset
1037 ;; `compilation-error-regexp-alist'.
bb5ce7283e84 (compilation-mode-font-lock-keywords): Omake sometimes indents the
Sam Steingold <sds@gnu.org>
parents: 103463
diff changeset
1038 ;; note that omake usage is not limited to ocaml and C (for stubs).
105574
5d7b16939e28 (compilation-mode-font-lock-keywords): Do not prepend "^ *" to
Sam Steingold <sds@gnu.org>
parents: 105573
diff changeset
1039 (when (and (= ?^ (aref pat 0)) ; anchored: starts with "^"
5d7b16939e28 (compilation-mode-font-lock-keywords): Do not prepend "^ *" to
Sam Steingold <sds@gnu.org>
parents: 105573
diff changeset
1040 ;; but does not allow an arbitrary number of leading spaces
105581
a72293bb4ac8 fix a typo in the last patch
Sam Steingold <sds@gnu.org>
parents: 105574
diff changeset
1041 (not (and (= ? (aref pat 1)) (= ?* (aref pat 2)))))
105574
5d7b16939e28 (compilation-mode-font-lock-keywords): Do not prepend "^ *" to
Sam Steingold <sds@gnu.org>
parents: 105573
diff changeset
1042 (setq pat (concat "^ *" (substring pat 1))))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1043 (if (consp file) (setq fmt (cdr file) file (car file)))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1044 (if (consp line) (setq end-line (cdr line) line (car line)))
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1045 (if (consp col) (setq end-col (cdr col) col (car col)))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1046
54807
1e00569924bf (compilation-mode-font-lock-keywords): Fix test not to treat nil as a function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54761
diff changeset
1047 (if (functionp line)
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1048 ;; The old compile.el had here an undocumented hook that
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1049 ;; allowed `line' to be a function that computed the actual
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1050 ;; error location. Let's do our best.
103841
bb5ce7283e84 (compilation-mode-font-lock-keywords): Omake sometimes indents the
Sam Steingold <sds@gnu.org>
parents: 103463
diff changeset
1051 `(,pat
61760
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1052 (0 (save-match-data
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1053 (compilation-compat-error-properties
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1054 (funcall ',line (cons (match-string ,file)
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1055 (cons default-directory
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1056 ',(nthcdr 4 item)))
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1057 ,(if col `(match-string ,col))))))
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1058 (,file compilation-error-face t))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1059
55080
b8afe141e350 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55068
diff changeset
1060 (unless (or (null (nth 5 item)) (integerp (nth 5 item)))
b8afe141e350 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55068
diff changeset
1061 (error "HYPERLINK should be an integer: %s" (nth 5 item)))
b8afe141e350 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55068
diff changeset
1062
103841
bb5ce7283e84 (compilation-mode-font-lock-keywords): Omake sometimes indents the
Sam Steingold <sds@gnu.org>
parents: 103463
diff changeset
1063 `(,pat
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1064
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1065 ,@(when (integerp file)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1066 `((,file ,(if (consp type)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1067 `(compilation-face ',type)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1068 (aref [compilation-info-face
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1069 compilation-warning-face
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1070 compilation-error-face]
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1071 (or type 2))))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1072
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1073 ,@(when line
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1074 `((,line compilation-line-face nil t)))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1075 ,@(when end-line
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1076 `((,end-line compilation-line-face nil t)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1077
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
1078 ,@(when (integerp col)
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1079 `((,col compilation-column-face nil t)))
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
1080 ,@(when (integerp end-col)
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1081 `((,end-col compilation-column-face nil t)))
54747
bdc00a83ecd1 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54742
diff changeset
1082
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1083 ,@(nthcdr 6 item)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1084 (,(or (nth 5 item) 0)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1085 (compilation-error-properties ',file ,line ,end-line
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1086 ,col ,end-col ',(or type 2)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1087 ',fmt)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1088 append))))) ; for compilation-message-face
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1089 compilation-error-regexp-alist)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1090
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
1091 compilation-mode-font-lock-keywords)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1092
100226
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1093 (defun compilation-read-command (command)
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1094 (read-shell-command "Compile command: " command
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1095 (if (equal (car compile-history) command)
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1096 '(compile-history . 1)
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1097 'compile-history)))
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1098
12920
905444ab8d92 (compilation-exit-message-function): New variable.
Roland McGrath <roland@gnu.org>
parents: 12767
diff changeset
1099
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1100 ;;;###autoload
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1101 (defun compile (command &optional comint)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1102 "Compile the program including the current buffer. Default: run `make'.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1103 Runs COMMAND, a shell command, in a separate process asynchronously
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104 with output going to the buffer `*compilation*'.
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1105
75145
72242573ed99 (compile): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 74157
diff changeset
1106 You can then use the command \\[next-error] to find the next error message
72242573ed99 (compile): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 74157
diff changeset
1107 and move to the source code that caused it.
72242573ed99 (compile): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 74157
diff changeset
1108
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1109 If optional second arg COMINT is t the buffer will be in Comint mode with
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1110 `compilation-shell-minor-mode'.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1111
9888
9d7972f4657c (compile): With prefix arg, prompt even if (not compilation-read-command).
Roland McGrath <roland@gnu.org>
parents: 9868
diff changeset
1112 Interactively, prompts for the command if `compilation-read-command' is
9d7972f4657c (compile): With prefix arg, prompt even if (not compilation-read-command).
Roland McGrath <roland@gnu.org>
parents: 9868
diff changeset
1113 non-nil; otherwise uses `compile-command'. With prefix arg, always prompts.
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
1114 Additionally, with universal prefix arg, compilation buffer will be in
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
1115 comint mode, i.e. interactive.
9888
9d7972f4657c (compile): With prefix arg, prompt even if (not compilation-read-command).
Roland McGrath <roland@gnu.org>
parents: 9868
diff changeset
1116
78388
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1117 To run more than one compilation at once, start one then rename
51797
7ea30d8ab42d (compile-auto-highlight): Default now t.
Richard M. Stallman <rms@gnu.org>
parents: 51452
diff changeset
1118 the \`*compilation*' buffer to some other name with
78388
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1119 \\[rename-buffer]. Then _switch buffers_ and start the new compilation.
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1120 It will create a new \`*compilation*' buffer.
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1121
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1122 On most systems, termination of the main compilation process
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1123 kills its subprocesses.
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1124
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1125 The name used for the buffer is actually whatever is returned by
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1126 the function in `compilation-buffer-name-function', so you can set that
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1127 to a function that generates a unique name."
5406
d9a58377567c (compilation-read-command, compilation-ask-about-save): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 5260
diff changeset
1128 (interactive
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
1129 (list
58031
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
1130 (let ((command (eval compile-command)))
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
1131 (if (or compilation-read-command current-prefix-arg)
100226
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1132 (compilation-read-command command)
58031
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
1133 command))
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
1134 (consp current-prefix-arg)))
38493
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1135 (unless (equal command (eval compile-command))
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1136 (setq compile-command command))
107802
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
1137 (save-some-buffers (not compilation-ask-about-save)
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
1138 compilation-save-buffers-predicate)
81999
c0fc8e3cb6b4 (compilation-start): Remember the original directory in a buffer-local
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81816
diff changeset
1139 (setq-default compilation-directory default-directory)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1140 (compilation-start command comint))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1141
38493
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1142 ;; run compile with the default command line
100226
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1143 (defun recompile (&optional edit-command)
41037
5dd37d315c33 (recompile): Use compilation-arguments if set, so as to be able to M-x
Richard M. Stallman <rms@gnu.org>
parents: 40902
diff changeset
1144 "Re-compile the program including the current buffer.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1145 If this is run in a Compilation mode buffer, re-use the arguments from the
100226
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1146 original use. Otherwise, recompile using `compile-command'.
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1147 If the optional argument `edit-command' is non-nil, the command can be edited."
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1148 (interactive "P")
107802
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
1149 (save-some-buffers (not compilation-ask-about-save)
7f4bd56a3dd2 (compilation-save-buffers-predicate): New custom variable.
Sam Steingold <sds@gnu.org>
parents: 107554
diff changeset
1150 compilation-save-buffers-predicate)
81999
c0fc8e3cb6b4 (compilation-start): Remember the original directory in a buffer-local
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81816
diff changeset
1151 (let ((default-directory (or compilation-directory default-directory)))
100226
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1152 (when edit-command
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1153 (setcar compilation-arguments
82d19f721db4 (compilation-read-command): Extracted from compile.
Sam Steingold <sds@gnu.org>
parents: 99816
diff changeset
1154 (compilation-read-command (car compilation-arguments))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1155 (apply 'compilation-start (or compilation-arguments
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1156 `(,(eval compile-command))))))
12256
e50e5d419c51 (grep-null-device): Defined.
Richard M. Stallman <rms@gnu.org>
parents: 12219
diff changeset
1157
20877
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
1158 (defcustom compilation-scroll-output nil
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
1159 "Non-nil to scroll the *compilation* buffer window as output appears.
20877
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
1160
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1161 Setting it causes the Compilation mode commands to put point at the
20877
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
1162 end of their output window so that the end of the output is always
91811
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1163 visible rather than the beginning.
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1164
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1165 The value `first-error' stops scrolling at the first error, and leaves
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1166 point on its location in the *compilation* buffer."
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1167 :type '(choice (const :tag "No scrolling" nil)
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1168 (const :tag "Scroll compilation output" t)
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1169 (const :tag "Stop scrolling at the first error" first-error))
22291
7c8d8ad75d43 (compilation-scroll-output): Correct the :version
Karl Heuer <kwzh@gnu.org>
parents: 22208
diff changeset
1170 :version "20.3"
20877
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
1171 :group 'compilation)
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
1172
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1173
65783
a2cbf1cc9c6d (compilation-buffer-name): New arg MODE-COMMAND.
Richard M. Stallman <rms@gnu.org>
parents: 65734
diff changeset
1174 (defun compilation-buffer-name (mode-name mode-command name-function)
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1175 "Return the name of a compilation buffer to use.
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1176 If NAME-FUNCTION is non-nil, call it with one argument MODE-NAME
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1177 to determine the buffer name.
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1178 Likewise if `compilation-buffer-name-function' is non-nil.
78388
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1179 If current buffer has the major mode MODE-COMMAND,
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1180 return the name of the current buffer, so that it gets reused.
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1181 Otherwise, construct a buffer name from MODE-NAME."
48035
c27fdc870952 (grep-find-use-xargs): Fix docstring. Patch from Matt Swift
Juanma Barranquero <lekktu@gmail.com>
parents: 47787
diff changeset
1182 (cond (name-function
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1183 (funcall name-function mode-name))
48035
c27fdc870952 (grep-find-use-xargs): Fix docstring. Patch from Matt Swift
Juanma Barranquero <lekktu@gmail.com>
parents: 47787
diff changeset
1184 (compilation-buffer-name-function
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1185 (funcall compilation-buffer-name-function mode-name))
82352
0349c504d001 (compilation-buffer-name): Don't check compilation-arguments. It is
Glenn Morris <rgm@gnu.org>
parents: 82323
diff changeset
1186 ((eq mode-command major-mode)
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1187 (buffer-name))
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1188 (t
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1189 (concat "*" (downcase mode-name) "*"))))
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
1190
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1191 ;; This is a rough emulation of the old hack, until the transition to new
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1192 ;; compile is complete.
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1193 (defun compile-internal (command error-message
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1194 &optional name-of-mode parser
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1195 error-regexp-alist name-function
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1196 enter-regexp-alist leave-regexp-alist
47300
5128d5a8980c (compile-internal): Add optional argument no-async.
Colin Walters <walters@gnu.org>
parents: 46344
diff changeset
1197 file-regexp-alist nomessage-regexp-alist
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1198 no-async highlight-regexp local-map)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1199 (if parser
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1200 (error "Compile now works very differently, see `compilation-error-regexp-alist'"))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1201 (let ((compilation-error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1202 (append file-regexp-alist (or error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1203 compilation-error-regexp-alist)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1204 (compilation-error (replace-regexp-in-string "^No more \\(.+\\)s\\.?"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1205 "\\1" error-message)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1206 (compilation-start command nil name-function highlight-regexp)))
94168
c9abaca676e7 (compile-internal): Add WHEN to obsolescence declaration.
Juanma Barranquero <lekktu@gmail.com>
parents: 93336
diff changeset
1207 (make-obsolete 'compile-internal 'compilation-start "22.1")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1208
65175
0ef9e8908562 * progmodes/compile.el (compilation-start): Add autoload cookie.
Romain Francoise <romain@orebokech.com>
parents: 65162
diff changeset
1209 ;;;###autoload
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1210 (defun compilation-start (command &optional mode name-function highlight-regexp)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1211 "Run compilation command COMMAND (low level interface).
57067
e9dd601d101f Parse command to see if it starts with a cd, and if so perform it for the *compilation* buffer. Change the header to reflect this.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57021
diff changeset
1212 If COMMAND starts with a cd command, that becomes the `default-directory'.
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1213 The rest of the arguments are optional; for them, nil means use the default.
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1214
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1215 MODE is the major mode to set in the compilation buffer. Mode
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1216 may also be t meaning use `compilation-shell-minor-mode' under `comint-mode'.
78388
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1217
65162
217750047c30 (compilation-start): Doc fix.
Romain Francoise <romain@orebokech.com>
parents: 65070
diff changeset
1218 If NAME-FUNCTION is non-nil, call it with one argument (the mode name)
78388
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1219 to determine the buffer name. Otherwise, the default is to
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1220 reuses the current buffer if it has the proper major mode,
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1221 else use or create a buffer with name based on the major mode.
47300
5128d5a8980c (compile-internal): Add optional argument no-async.
Colin Walters <walters@gnu.org>
parents: 46344
diff changeset
1222
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1223 If HIGHLIGHT-REGEXP is non-nil, `next-error' will temporarily highlight
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1224 the matching section of the visited source line; the default is to use the
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1225 global value of `compilation-highlight-regexp'.
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1226
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1227 Returns the compilation buffer created."
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1228 (or mode (setq mode 'compilation-mode))
57067
e9dd601d101f Parse command to see if it starts with a cd, and if so perform it for the *compilation* buffer. Change the header to reflect this.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57021
diff changeset
1229 (let* ((name-of-mode
e9dd601d101f Parse command to see if it starts with a cd, and if so perform it for the *compilation* buffer. Change the header to reflect this.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57021
diff changeset
1230 (if (eq mode t)
102102
0d562146f921 Require comint at top level to fix the last patch.
Sam Steingold <sds@gnu.org>
parents: 102072
diff changeset
1231 "compilation"
110266
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
1232 (replace-regexp-in-string "-mode\\'" "" (symbol-name mode))))
57628
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1233 (thisdir default-directory)
57067
e9dd601d101f Parse command to see if it starts with a cd, and if so perform it for the *compilation* buffer. Change the header to reflect this.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57021
diff changeset
1234 outwin outbuf)
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1235 (with-current-buffer
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1236 (setq outbuf
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1237 (get-buffer-create
82352
0349c504d001 (compilation-buffer-name): Don't check compilation-arguments. It is
Glenn Morris <rgm@gnu.org>
parents: 82323
diff changeset
1238 (compilation-buffer-name name-of-mode mode name-function)))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1239 (let ((comp-proc (get-buffer-process (current-buffer))))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1240 (if comp-proc
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1241 (if (or (not (eq (process-status comp-proc) 'run))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1242 (yes-or-no-p
1554
5af75a1a9a24 * compile.el (compile-internal): Use NAME-OF-MODE in the prompt
Jim Blandy <jimb@redhat.com>
parents: 1294
diff changeset
1243 (format "A %s process is running; kill it? "
5af75a1a9a24 * compile.el (compile-internal): Use NAME-OF-MODE in the prompt
Jim Blandy <jimb@redhat.com>
parents: 1294
diff changeset
1244 name-of-mode)))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1245 (condition-case ()
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1246 (progn
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1247 (interrupt-process comp-proc)
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1248 (sit-for 1)
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1249 (delete-process comp-proc))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1250 (error nil))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1251 (error "Cannot have two processes in `%s' at once"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1252 (buffer-name)))))
57628
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1253 ;; first transfer directory from where M-x compile was called
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1254 (setq default-directory thisdir)
57517
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1255 ;; Make compilation buffer read-only. The filter can still write it.
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1256 ;; Clear out the compilation buffer.
57628
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1257 (let ((inhibit-read-only t)
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1258 (default-directory thisdir))
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
1259 ;; Then evaluate a cd command if any, but don't perform it yet, else
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
1260 ;; start-command would do it again through the shell: (cd "..") AND
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
1261 ;; sh -c "cd ..; make"
107554
41aaf2a76894 Fix for `compile' (Bug#5771).
Chong Yidong <cyd@stupidchicken.com>
parents: 107489
diff changeset
1262 (cd (if (string-match "\\`\\s *cd\\(?:\\s +\\(\\S +?\\)\\)?\\s *[;&\n]"
41aaf2a76894 Fix for `compile' (Bug#5771).
Chong Yidong <cyd@stupidchicken.com>
parents: 107489
diff changeset
1263 command)
57628
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1264 (if (match-end 1)
58445
4b0746e87898 (compilation-start): In cd command use substitute-env-vars -- not quite shell compatible but better than nothing.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 58256
diff changeset
1265 (substitute-env-vars (match-string 1 command))
57628
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1266 "~")
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1267 default-directory))
63057
3949ec3f5f5a (compilation-start): Move `erase-buffer' up
Juri Linkov <juri@jurta.org>
parents: 62964
diff changeset
1268 (erase-buffer)
62859
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1269 ;; Select the desired mode.
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1270 (if (not (eq mode t))
95899
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1271 (progn
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1272 (buffer-disable-undo)
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1273 (funcall mode))
62859
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1274 (setq buffer-read-only nil)
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1275 (with-no-warnings (comint-mode))
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1276 (compilation-shell-minor-mode))
94566
c31e26fe0b1f * progmodes/compile.el (compilation-start): Move setting of
Sam Steingold <sds@gnu.org>
parents: 94526
diff changeset
1277 ;; Remember the original dir, so we can use it when we recompile.
c31e26fe0b1f * progmodes/compile.el (compilation-start): Move setting of
Sam Steingold <sds@gnu.org>
parents: 94526
diff changeset
1278 ;; default-directory' can't be used reliably for that because it may be
c31e26fe0b1f * progmodes/compile.el (compilation-start): Move setting of
Sam Steingold <sds@gnu.org>
parents: 94526
diff changeset
1279 ;; affected by the special handling of "cd ...;".
c31e26fe0b1f * progmodes/compile.el (compilation-start): Move setting of
Sam Steingold <sds@gnu.org>
parents: 94526
diff changeset
1280 ;; NB: must be fone after (funcall mode) as that resets local variables
c31e26fe0b1f * progmodes/compile.el (compilation-start): Move setting of
Sam Steingold <sds@gnu.org>
parents: 94526
diff changeset
1281 (set (make-local-variable 'compilation-directory) thisdir)
62859
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1282 (if highlight-regexp
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1283 (set (make-local-variable 'compilation-highlight-regexp)
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1284 highlight-regexp))
91811
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1285 (if (or compilation-auto-jump-to-first-error
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
1286 (eq compilation-scroll-output 'first-error))
81795
15008ad392dc (compilation-auto-jump-to-first-error,compilation-auto-jump-to-next): New vars.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81758
diff changeset
1287 (set (make-local-variable 'compilation-auto-jump-to-next) t))
62859
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1288 ;; Output a mode setter, for saving and later reloading this buffer.
57517
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1289 (insert "-*- mode: " name-of-mode
108083
6f2d16153b19 * progmodes/compile.el: (compilation-start): Abbreviate default directory.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107816
diff changeset
1290 "; default-directory: "
6f2d16153b19 * progmodes/compile.el: (compilation-start): Abbreviate default directory.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 107816
diff changeset
1291 (prin1-to-string (abbreviate-file-name default-directory))
64926
37347aa3aaae (compilation-start): Add the line "Compilation started" with compilation
Eli Zaretskii <eliz@gnu.org>
parents: 64863
diff changeset
1292 " -*-\n"
64943
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
1293 (format "%s started at %s\n\n"
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
1294 mode-name
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
1295 (substring (current-time-string) 0 19))
64926
37347aa3aaae (compilation-start): Add the line "Compilation started" with compilation
Eli Zaretskii <eliz@gnu.org>
parents: 64863
diff changeset
1296 command "\n")
63057
3949ec3f5f5a (compilation-start): Move `erase-buffer' up
Juri Linkov <juri@jurta.org>
parents: 62964
diff changeset
1297 (setq thisdir default-directory))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1298 (set-buffer-modified-p nil))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1299 ;; Pop up the compilation buffer.
87332
4a1edf137bff John J Foerch <jjfoerch at earthlink.net> (tiny change)
Glenn Morris <rgm@gnu.org>
parents: 86046
diff changeset
1300 ;; http://lists.gnu.org/archive/html/emacs-devel/2007-11/msg01638.html
4a1edf137bff John J Foerch <jjfoerch at earthlink.net> (tiny change)
Glenn Morris <rgm@gnu.org>
parents: 86046
diff changeset
1301 (setq outwin (display-buffer outbuf))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1302 (with-current-buffer outbuf
57530
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1303 (let ((process-environment
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1304 (append
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1305 compilation-environment
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1306 (if (if (boundp 'system-uses-terminfo) ; `if' for compiler warning
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1307 system-uses-terminfo)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1308 (list "TERM=dumb" "TERMCAP="
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1309 (format "COLUMNS=%d" (window-width)))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1310 (list "TERM=emacs"
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1311 (format "TERMCAP=emacs:co#%d:tc=unknown:"
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1312 (window-width))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1313 ;; Set the EMACS variable, but
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1314 ;; don't override users' setting of $EMACS.
72833
81a55a7dc3c3 * etc/NEWS: In terminal-oriented subshells, the EMACS environment
Paul Eggert <eggert@twinsun.com>
parents: 72830
diff changeset
1315 (unless (getenv "EMACS")
74057
636627b25f70 (compilation-start): Set EMACS and INSIDE_EMACS to t.
Chong Yidong <cyd@stupidchicken.com>
parents: 73913
diff changeset
1316 (list "EMACS=t"))
636627b25f70 (compilation-start): Set EMACS and INSIDE_EMACS to t.
Chong Yidong <cyd@stupidchicken.com>
parents: 73913
diff changeset
1317 (list "INSIDE_EMACS=t")
57530
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1318 (copy-sequence process-environment))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1319 (set (make-local-variable 'compilation-arguments)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1320 (list command mode name-function highlight-regexp))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1321 (set (make-local-variable 'revert-buffer-function)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1322 'compilation-revert-buffer)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1323 (set-window-start outwin (point-min))
79635
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1324
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1325 ;; Position point as the user will see it.
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1326 (let ((desired-visible-point
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1327 ;; Put it at the end if `compilation-scroll-output' is set.
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1328 (if compilation-scroll-output
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1329 (point-max)
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1330 ;; Normally put it at the top.
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1331 (point-min))))
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1332 (if (eq outwin (selected-window))
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1333 (goto-char desired-visible-point)
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1334 (set-window-point outwin desired-visible-point)))
0aa6ec4cac21 (compilation-start): Set initial visible point properly even when
Richard M. Stallman <rms@gnu.org>
parents: 78848
diff changeset
1335
57530
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1336 ;; The setup function is called before compilation-set-window-height
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1337 ;; so it can set the compilation-window-height buffer locally.
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1338 (if compilation-process-setup-function
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1339 (funcall compilation-process-setup-function))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1340 (compilation-set-window-height outwin)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1341 ;; Start the compilation.
98584
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1342 (if (fboundp 'start-process)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1343 (let ((proc
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1344 (if (eq mode t)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1345 ;; comint uses `start-file-process'.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1346 (get-buffer-process
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1347 (with-no-warnings
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1348 (comint-exec
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1349 outbuf (downcase mode-name)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1350 (if (file-remote-p default-directory)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1351 "/bin/sh"
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1352 shell-file-name)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1353 nil `("-c" ,command))))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1354 (start-file-process-shell-command (downcase mode-name)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1355 outbuf command))))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1356 ;; Make the buffer's mode line show process state.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1357 (setq mode-line-process
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1358 (list (propertize ":%s" 'face 'compilation-warning)))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1359 (set-process-sentinel proc 'compilation-sentinel)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1360 (unless (eq mode t)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1361 ;; Keep the comint filter, since it's needed for proper handling
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1362 ;; of the prompts.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1363 (set-process-filter proc 'compilation-filter))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1364 ;; Use (point-max) here so that output comes in
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1365 ;; after the initial text,
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1366 ;; regardless of where the user sees point.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1367 (set-marker (process-mark proc) (point-max) outbuf)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1368 (when compilation-disable-input
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1369 (condition-case nil
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1370 (process-send-eof proc)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1371 ;; The process may have exited already.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1372 (error nil)))
99688
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
1373 (run-hook-with-args 'compilation-start-hook proc)
0dc2933fc901 (compilation-start-hook): New hook.
Sam Steingold <sds@gnu.org>
parents: 99653
diff changeset
1374 (setq compilation-in-progress
98584
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1375 (cons proc compilation-in-progress)))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1376 ;; No asynchronous processes available.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1377 (message "Executing `%s'..." command)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1378 ;; Fake modeline display as if `start-process' were run.
94168
c9abaca676e7 (compile-internal): Add WHEN to obsolescence declaration.
Juanma Barranquero <lekktu@gmail.com>
parents: 93336
diff changeset
1379 (setq mode-line-process
98584
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1380 (list (propertize ":run" 'face 'compilation-warning)))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1381 (force-mode-line-update)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1382 (sit-for 0) ; Force redisplay
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1383 (save-excursion
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1384 ;; Insert the output at the end, after the initial text,
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1385 ;; regardless of where the user sees point.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1386 (goto-char (point-max))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1387 (let* ((buffer-read-only nil) ; call-process needs to modify outbuf
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1388 (status (call-process shell-file-name nil outbuf nil "-c"
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1389 command)))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1390 (cond ((numberp status)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1391 (compilation-handle-exit
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1392 'exit status
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1393 (if (zerop status)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1394 "finished\n"
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1395 (format "exited abnormally with code %d\n" status))))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1396 ((stringp status)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1397 (compilation-handle-exit 'signal status
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1398 (concat status "\n")))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1399 (t
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1400 (compilation-handle-exit 'bizarre status status)))))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1401 ;; Without async subprocesses, the buffer is not yet
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1402 ;; fontified, so fontify it now.
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1403 (let ((font-lock-verbose nil)) ; shut up font-lock messages
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1404 (font-lock-fontify-buffer))
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1405 (set-buffer-modified-p nil)
573274f314a9 (compilation-start): Resurrect the version for systems that don't support
Eli Zaretskii <eliz@gnu.org>
parents: 98499
diff changeset
1406 (message "Executing `%s'...done" command)))
57628
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1407 ;; Now finally cd to where the shell started make/grep/...
98499
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1408 (setq default-directory thisdir)
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1409 ;; The following form selected outwin ever since revision 1.183,
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1410 ;; so possibly messing up point in some other window (bug#1073).
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1411 ;; Moved into the scope of with-current-buffer, though still with
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1412 ;; complete disregard for the case when compilation-scroll-output
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1413 ;; equals 'first-error (martin 2008-10-04).
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1414 (when compilation-scroll-output
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1415 (goto-char (point-max))))
6e7acef982ee (compilation-start): Make sure to move to point-max
Martin Rudalics <rudalics@gmx.at>
parents: 95899
diff changeset
1416
54424
6ea174960a93 (compilation-start): Always set compilation-last-buffer and return it.
Kim F. Storm <storm@cua.dk>
parents: 54368
diff changeset
1417 ;; Make it so the next C-x ` will use this buffer.
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1418 (setq next-error-last-buffer outbuf)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1419
8483
19dbc8373bec (compilation-set-window-height): New function,
Richard M. Stallman <rms@gnu.org>
parents: 8425
diff changeset
1420 (defun compilation-set-window-height (window)
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1421 "Set the height of WINDOW according to `compilation-window-height'."
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1422 (let ((height (buffer-local-value 'compilation-window-height (window-buffer window))))
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1423 (and height
78465
b8c25f200566 (compilation-set-window-height): Use window-full-width-p instead of
Martin Rudalics <rudalics@gmx.at>
parents: 78388
diff changeset
1424 (window-full-width-p window)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1425 ;; If window is alone in its frame, aside from a minibuffer,
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1426 ;; don't change its height.
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1427 (not (eq window (frame-root-window (window-frame window))))
55990
c6610cef9b75 (compilation-set-window-height): Rearrange the save-* functions because a buffer can have several current point in different windows.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55806
diff changeset
1428 ;; Stef said that doing the saves in this order is safer:
c6610cef9b75 (compilation-set-window-height): Rearrange the save-* functions because a buffer can have several current point in different windows.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55806
diff changeset
1429 (save-excursion
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1430 (save-selected-window
55990
c6610cef9b75 (compilation-set-window-height): Rearrange the save-* functions because a buffer can have several current point in different windows.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55806
diff changeset
1431 (select-window window)
c6610cef9b75 (compilation-set-window-height): Rearrange the save-* functions because a buffer can have several current point in different windows.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55806
diff changeset
1432 (enlarge-window (- height (window-height))))))))
8483
19dbc8373bec (compilation-set-window-height): New function,
Richard M. Stallman <rms@gnu.org>
parents: 8425
diff changeset
1433
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1434 (defvar compilation-menu-map
92397
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1435 (let ((map (make-sparse-keymap "Errors"))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1436 (opt-map (make-sparse-keymap "Skip")))
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1437 (define-key map [stop-subjob]
92493
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1438 '(menu-item "Stop Compilation" kill-compilation
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1439 :help "Kill the process made by the M-x compile or M-x grep commands"))
92397
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1440 (define-key map [compilation-mode-separator3]
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1441 '("----" . nil))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1442 (define-key map [compilation-next-error-follow-minor-mode]
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1443 '(menu-item
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1444 "Auto Error Display" next-error-follow-minor-mode
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1445 :help "Display the error under cursor when moving the cursor"
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1446 :button (:toggle . next-error-follow-minor-mode)))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1447 (define-key map [compilation-skip]
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1448 (cons "Skip Less Important Messages" opt-map))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1449 (define-key opt-map [compilation-skip-none]
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1450 '(menu-item "Don't Skip Any Messages"
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1451 (lambda ()
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1452 (interactive)
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1453 (customize-set-variable 'compilation-skip-threshold 0))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1454 :help "Do not skip any type of messages"
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1455 :button (:radio . (eq compilation-skip-threshold 0))))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1456 (define-key opt-map [compilation-skip-info]
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1457 '(menu-item "Skip Info"
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1458 (lambda ()
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1459 (interactive)
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1460 (customize-set-variable 'compilation-skip-threshold 1))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1461 :help "Skip anything less than warning"
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1462 :button (:radio . (eq compilation-skip-threshold 1))))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1463 (define-key opt-map [compilation-skip-warning-and-info]
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1464 '(menu-item "Skip Warnings and Info"
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1465 (lambda ()
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1466 (interactive)
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1467 (customize-set-variable 'compilation-skip-threshold 2))
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1468 :help "Skip over Warnings and Info, stop for errors"
9fc81417e8c4 (compilation-menu-map): Add menu entries
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92231
diff changeset
1469 :button (:radio . (eq compilation-skip-threshold 2))))
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1470 (define-key map [compilation-mode-separator2]
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1471 '("----" . nil))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1472 (define-key map [compilation-first-error]
92493
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1473 '(menu-item "First Error" first-error
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1474 :help "Restart at the first error, visit corresponding source code"))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1475 (define-key map [compilation-previous-error]
92493
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1476 '(menu-item "Previous Error" previous-error
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1477 :help "Visit previous `next-error' message and corresponding source code"))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1478 (define-key map [compilation-next-error]
92493
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1479 '(menu-item "Next Error" next-error
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1480 :help "Visit next `next-error' message and corresponding source code"))
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1481 map))
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1482
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1483 (defvar compilation-minor-mode-map
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1484 (let ((map (make-sparse-keymap)))
54856
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1485 (define-key map [mouse-2] 'compile-goto-error)
59025
ad6398d47add (compilation-minor-mode-map)
Kim F. Storm <storm@cua.dk>
parents: 58503
diff changeset
1486 (define-key map [follow-link] 'mouse-face)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1487 (define-key map "\C-c\C-c" 'compile-goto-error)
10268
84777124c262 (compilation-minor-mode-map): Bind C-m to compilation-goto-error.
Richard M. Stallman <rms@gnu.org>
parents: 10096
diff changeset
1488 (define-key map "\C-m" 'compile-goto-error)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1489 (define-key map "\C-c\C-k" 'kill-compilation)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1490 (define-key map "\M-n" 'compilation-next-error)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1491 (define-key map "\M-p" 'compilation-previous-error)
946
ef045ff2cb94 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 936
diff changeset
1492 (define-key map "\M-{" 'compilation-previous-file)
ef045ff2cb94 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 936
diff changeset
1493 (define-key map "\M-}" 'compilation-next-file)
94775
b51bb57e843b (compilation-minor-mode-map, compilation-mode-map):
Sam Steingold <sds@gnu.org>
parents: 94673
diff changeset
1494 (define-key map "g" 'recompile) ; revert
b51bb57e843b (compilation-minor-mode-map, compilation-mode-map):
Sam Steingold <sds@gnu.org>
parents: 94673
diff changeset
1495 (define-key map "q" 'quit-window)
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1496 ;; Set up the menu-bar
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1497 (define-key map [menu-bar compilation]
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1498 (cons "Errors" compilation-menu-map))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1499 map)
2760
1c7595e3089b (Setting minor-mode-map-alist):
Richard M. Stallman <rms@gnu.org>
parents: 2603
diff changeset
1500 "Keymap for `compilation-minor-mode'.")
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1501
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1502 (defvar compilation-shell-minor-mode-map
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1503 (let ((map (make-sparse-keymap)))
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1504 (define-key map "\M-\C-m" 'compile-goto-error)
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1505 (define-key map "\M-\C-n" 'compilation-next-error)
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1506 (define-key map "\M-\C-p" 'compilation-previous-error)
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1507 (define-key map "\M-{" 'compilation-previous-file)
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1508 (define-key map "\M-}" 'compilation-next-file)
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1509 ;; Set up the menu-bar
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1510 (define-key map [menu-bar compilation]
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1511 (cons "Errors" compilation-menu-map))
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1512 map)
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1513 "Keymap for `compilation-shell-minor-mode'.")
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1514
54875
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1515 (defvar compilation-button-map
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1516 (let ((map (make-sparse-keymap)))
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1517 (define-key map [mouse-2] 'compile-goto-error)
59025
ad6398d47add (compilation-minor-mode-map)
Kim F. Storm <storm@cua.dk>
parents: 58503
diff changeset
1518 (define-key map [follow-link] 'mouse-face)
54875
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1519 (define-key map "\C-m" 'compile-goto-error)
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1520 map)
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1521 "Keymap for compilation-message buttons.")
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1522 (fset 'compilation-button-map compilation-button-map)
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1523
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1524 (defvar compilation-mode-map
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1525 (let ((map (make-sparse-keymap)))
58503
dc83ecc1ac97 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 58491
diff changeset
1526 ;; Don't inherit from compilation-minor-mode-map,
dc83ecc1ac97 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 58491
diff changeset
1527 ;; because that introduces a menu bar item we don't want.
dc83ecc1ac97 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 58491
diff changeset
1528 ;; That confuses C-down-mouse-3.
58491
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1529 (define-key map [mouse-2] 'compile-goto-error)
59025
ad6398d47add (compilation-minor-mode-map)
Kim F. Storm <storm@cua.dk>
parents: 58503
diff changeset
1530 (define-key map [follow-link] 'mouse-face)
58491
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1531 (define-key map "\C-c\C-c" 'compile-goto-error)
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1532 (define-key map "\C-m" 'compile-goto-error)
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1533 (define-key map "\C-c\C-k" 'kill-compilation)
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1534 (define-key map "\M-n" 'compilation-next-error)
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1535 (define-key map "\M-p" 'compilation-previous-error)
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1536 (define-key map "\M-{" 'compilation-previous-file)
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1537 (define-key map "\M-}" 'compilation-next-file)
64727
5f8a240b7621 (compilation-mode-map): Bind TAB to `compilation-next-error'
Juri Linkov <juri@jurta.org>
parents: 64699
diff changeset
1538 (define-key map "\t" 'compilation-next-error)
5f8a240b7621 (compilation-mode-map): Bind TAB to `compilation-next-error'
Juri Linkov <juri@jurta.org>
parents: 64699
diff changeset
1539 (define-key map [backtab] 'compilation-previous-error)
94775
b51bb57e843b (compilation-minor-mode-map, compilation-mode-map):
Sam Steingold <sds@gnu.org>
parents: 94673
diff changeset
1540 (define-key map "g" 'recompile) ; revert
b51bb57e843b (compilation-minor-mode-map, compilation-mode-map):
Sam Steingold <sds@gnu.org>
parents: 94673
diff changeset
1541 (define-key map "q" 'quit-window)
58491
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1542
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1543 (define-key map " " 'scroll-up)
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1544 (define-key map "\^?" 'scroll-down)
57021
600db57321a8 (compilation-mode-map): Rename `next-error-follow-mode' to `next-error-follow-minor-mode'.
Juri Linkov <juri@jurta.org>
parents: 56961
diff changeset
1545 (define-key map "\C-c\C-f" 'next-error-follow-minor-mode)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1546
8425
8b8835f1630a Set up a "Compile" menubar item.
Richard M. Stallman <rms@gnu.org>
parents: 8406
diff changeset
1547 ;; Set up the menu-bar
58491
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1548 (let ((submap (make-sparse-keymap "Compile")))
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1549 (define-key map [menu-bar compilation]
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1550 (cons "Compile" submap))
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1551 (set-keymap-parent submap compilation-menu-map))
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1552 (define-key map [menu-bar compilation compilation-separator2]
8425
8b8835f1630a Set up a "Compile" menubar item.
Richard M. Stallman <rms@gnu.org>
parents: 8406
diff changeset
1553 '("----" . nil))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1554 (define-key map [menu-bar compilation compilation-grep]
92493
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1555 '(menu-item "Search Files (grep)..." grep
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1556 :help "Run grep, with user-specified args, and collect output in a buffer"))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1557 (define-key map [menu-bar compilation compilation-recompile]
92493
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1558 '(menu-item "Recompile" recompile
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1559 :help "Re-compile the program including the current buffer"))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1560 (define-key map [menu-bar compilation compilation-compile]
92493
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1561 '(menu-item "Compile..." compile
402ee2cfca27 * bindings.el (mode-line-remote): Add mouse-face. Improve tooltip.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92397
diff changeset
1562 :help "Compile the program including the current buffer. Default: run `make'"))
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1563 map)
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1564 "Keymap for compilation log buffers.
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1565 `compilation-minor-mode-map' is a parent of this.")
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1566
92203
c50ae6f34d03 (tool-bar): Rquire tool-bar.
Jan Djärv <jan.h.d@swipnet.se>
parents: 92170
diff changeset
1567 (defvar compilation-mode-tool-bar-map
98661
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1568 ;; When bootstrapping, tool-bar-map is not properly initialized yet,
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1569 ;; so don't do anything.
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1570 (when (keymapp (butlast tool-bar-map))
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1571 (let ((map (butlast (copy-keymap tool-bar-map)))
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1572 (help (last tool-bar-map))) ;; Keep Help last in tool bar
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1573 (tool-bar-local-item
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1574 "left-arrow" 'previous-error-no-select 'previous-error-no-select map
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1575 :rtl "right-arrow"
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1576 :help "Goto previous error")
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1577 (tool-bar-local-item
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1578 "right-arrow" 'next-error-no-select 'next-error-no-select map
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1579 :rtl "left-arrow"
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1580 :help "Goto next error")
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1581 (tool-bar-local-item
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1582 "cancel" 'kill-compilation 'kill-compilation map
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1583 :enable '(let ((buffer (compilation-find-buffer)))
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1584 (get-buffer-process buffer))
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1585 :help "Stop compilation")
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1586 (tool-bar-local-item
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1587 "refresh" 'recompile 'recompile map
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1588 :help "Restart compilation")
cfea943367ab (compilation-mode-tool-bar-map): Check if tool-bar-map has been
Chong Yidong <cyd@stupidchicken.com>
parents: 98630
diff changeset
1589 (append map help))))
92203
c50ae6f34d03 (tool-bar): Rquire tool-bar.
Jan Djärv <jan.h.d@swipnet.se>
parents: 92170
diff changeset
1590
17653
b7810d4fb620 (compilation-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17639
diff changeset
1591 (put 'compilation-mode 'mode-class 'special)
b7810d4fb620 (compilation-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17639
diff changeset
1592
13755
5f7ea59f14b6 (compilation-mode): Add autoload cookie.
Roland McGrath <roland@gnu.org>
parents: 13540
diff changeset
1593 ;;;###autoload
57517
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1594 (defun compilation-mode (&optional name-of-mode)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1595 "Major mode for compilation log buffers.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1596 \\<compilation-mode-map>To visit the source for a line-numbered error,
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1597 move point to the error message line and type \\[compile-goto-error].
569
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
1598 To kill the compilation, type \\[kill-compilation].
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
1599
64194
76fced56e97e (compilation-mode-hook, compilation-mode): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 64085
diff changeset
1600 Runs `compilation-mode-hook' with `run-mode-hooks' (which see).
56687
fb266772e0e7 (compilation-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 56154
diff changeset
1601
fb266772e0e7 (compilation-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 56154
diff changeset
1602 \\{compilation-mode-map}"
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1603 (interactive)
9376
f0ac347309e2 (compilation-mode-font-lock-keywords): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8976
diff changeset
1604 (kill-all-local-variables)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1605 (use-local-map compilation-mode-map)
95777
edc51d72cb17 * window.c (Vwindow_point_insertion_type): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94775
diff changeset
1606 ;; Let windows scroll along with the output.
edc51d72cb17 * window.c (Vwindow_point_insertion_type): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94775
diff changeset
1607 (set (make-local-variable 'window-point-insertion-type) t)
92203
c50ae6f34d03 (tool-bar): Rquire tool-bar.
Jan Djärv <jan.h.d@swipnet.se>
parents: 92170
diff changeset
1608 (set (make-local-variable 'tool-bar-map) compilation-mode-tool-bar-map)
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1609 (setq major-mode 'compilation-mode
57517
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1610 mode-name (or name-of-mode "Compilation"))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1611 (set (make-local-variable 'page-delimiter)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1612 compilation-page-delimiter)
108376
96ef3c75fd61 * progmodes/compile.el (compilation-buffer-modtime): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108083
diff changeset
1613 (set (make-local-variable 'compilation-buffer-modtime) nil)
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1614 (compilation-setup)
58256
02a1d74082fd (compilation-setup): Don't set buffer-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58244
diff changeset
1615 (setq buffer-read-only t)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1616 (run-mode-hooks 'compilation-mode-hook))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1617
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1618 (defmacro define-compilation-mode (mode name doc &rest body)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1619 "This is like `define-derived-mode' without the PARENT argument.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1620 The parent is always `compilation-mode' and the customizable `compilation-...'
65070
5a147188ccac (compilation-disable-input): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 65055
diff changeset
1621 variables are also set from the name of the mode you have chosen,
5a147188ccac (compilation-disable-input): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 65055
diff changeset
1622 by replacing the first word, e.g `compilation-scroll-output' from
5a147188ccac (compilation-disable-input): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 65055
diff changeset
1623 `grep-scroll-output' if that variable exists."
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1624 (let ((mode-name (replace-regexp-in-string "-mode\\'" "" (symbol-name mode))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1625 `(define-derived-mode ,mode compilation-mode ,name
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1626 ,doc
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1627 ,@(mapcar (lambda (v)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1628 (setq v (cons v
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1629 (intern-soft (replace-regexp-in-string
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1630 "^compilation" mode-name
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1631 (symbol-name v)))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1632 (and (cdr v)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1633 (or (boundp (cdr v))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1634 (if (boundp 'byte-compile-bound-variables)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1635 (memq (cdr v) byte-compile-bound-variables)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1636 `(set (make-local-variable ',(car v)) ,(cdr v))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1637 '(compilation-buffer-name-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1638 compilation-directory-matcher
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1639 compilation-error
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1640 compilation-error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1641 compilation-error-regexp-alist-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1642 compilation-error-screen-columns
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1643 compilation-finish-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1644 compilation-finish-functions
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1645 compilation-first-column
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1646 compilation-mode-font-lock-keywords
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1647 compilation-page-delimiter
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1648 compilation-parse-errors-filename-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1649 compilation-process-setup-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1650 compilation-scroll-output
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1651 compilation-search-path
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1652 compilation-skip-threshold
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1653 compilation-window-height))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1654 ,@body)))
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1655
17866
7d458582345c (compilation-parse-errors): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 17653
diff changeset
1656 (defun compilation-revert-buffer (ignore-auto noconfirm)
49186
ce4ad428dcab (compilation-revert-buffer): If buffer has a file, revert it in the normal way.
Richard M. Stallman <rms@gnu.org>
parents: 48844
diff changeset
1657 (if buffer-file-name
ce4ad428dcab (compilation-revert-buffer): If buffer has a file, revert it in the normal way.
Richard M. Stallman <rms@gnu.org>
parents: 48844
diff changeset
1658 (let (revert-buffer-function)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1659 (revert-buffer ignore-auto noconfirm))
49186
ce4ad428dcab (compilation-revert-buffer): If buffer has a file, revert it in the normal way.
Richard M. Stallman <rms@gnu.org>
parents: 48844
diff changeset
1660 (if (or noconfirm (yes-or-no-p (format "Restart compilation? ")))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1661 (apply 'compilation-start compilation-arguments))))
17866
7d458582345c (compilation-parse-errors): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 17653
diff changeset
1662
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1663 (defvar compilation-current-error nil
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1664 "Marker to the location from where the next error will be found.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1665 The global commands next/previous/first-error/goto-error use this.")
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1666
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1667 (defvar compilation-messages-start nil
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1668 "Buffer position of the beginning of the compilation messages.
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1669 If nil, use the beginning of buffer.")
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1670
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1671 ;; A function name can't be a hook, must be something with a value.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1672 (defconst compilation-turn-on-font-lock 'turn-on-font-lock)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1673
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1674 (defun compilation-setup (&optional minor)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1675 "Prepare the buffer for the compilation parsing commands to work.
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1676 Optional argument MINOR indicates this is called from
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1677 `compilation-minor-mode'."
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1678 (make-local-variable 'compilation-current-error)
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1679 (make-local-variable 'compilation-messages-start)
30688
f0a91dd9685b (compilation-setup): Make variable
Gerd Moellmann <gerd@gnu.org>
parents: 29121
diff changeset
1680 (make-local-variable 'compilation-error-screen-columns)
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1681 (make-local-variable 'overlay-arrow-position)
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1682 (set (make-local-variable 'overlay-arrow-string) "")
61362
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1683 (setq next-error-overlay-arrow-position nil)
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1684 (add-hook 'kill-buffer-hook
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1685 (lambda () (setq next-error-overlay-arrow-position nil)) nil t)
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1686 ;; Note that compilation-next-error-function is for interfacing
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1687 ;; with the next-error function in simple.el, and it's only
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1688 ;; coincidentally named similarly to compilation-next-error.
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1689 (setq next-error-function 'compilation-next-error-function)
81758
f03856eb136b * files.el (file-remote-p): Introduce optional parameter CONNECTED.
Michael Albinus <michael.albinus@gmx.de>
parents: 81135
diff changeset
1690 (set (make-local-variable 'comint-file-name-prefix)
f03856eb136b * files.el (file-remote-p): Introduce optional parameter CONNECTED.
Michael Albinus <michael.albinus@gmx.de>
parents: 81135
diff changeset
1691 (or (file-remote-p default-directory) ""))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1692 (set (make-local-variable 'font-lock-extra-managed-props)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1693 '(directory message help-echo mouse-face debug))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1694 (set (make-local-variable 'compilation-locs)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1695 (make-hash-table :test 'equal :weakness 'value))
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1696 ;; lazy-lock would never find the message unless it's scrolled to.
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1697 ;; jit-lock might fontify some things too late.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1698 (set (make-local-variable 'font-lock-support-mode) nil)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1699 (set (make-local-variable 'font-lock-maximum-size) nil)
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66735
diff changeset
1700 (if minor
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66735
diff changeset
1701 (let ((fld font-lock-defaults))
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1702 (font-lock-add-keywords nil (compilation-mode-font-lock-keywords))
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1703 (if font-lock-mode
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1704 (if fld
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1705 (font-lock-fontify-buffer)
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1706 (font-lock-change-mode)
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1707 (turn-on-font-lock))
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66735
diff changeset
1708 (turn-on-font-lock)))
67126
ed2c1481cde9 * progmodes/compile.el (compilation-setup): Fix last fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 67112
diff changeset
1709 (setq font-lock-defaults '(compilation-mode-font-lock-keywords t))
67112
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66735
diff changeset
1710 ;; maybe defer font-lock till after derived mode is set up
146389d32df6 * hi-lock.el (hi-lock-buffer-mode): Renamed from `hi-lock-mode'.
Chong Yidong <cyd@stupidchicken.com>
parents: 66735
diff changeset
1711 (run-mode-hooks 'compilation-turn-on-font-lock)))
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1712
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1713 ;;;###autoload
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1714 (define-minor-mode compilation-shell-minor-mode
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1715 "Toggle compilation shell minor mode.
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1716 With arg, turn compilation mode on if and only if arg is positive.
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1717 In this minor mode, all the error-parsing commands of the
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1718 Compilation major mode are available but bound to keys that don't
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1719 collide with Shell mode. See `compilation-mode'.
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1720 Turning the mode on runs the normal hook `compilation-shell-minor-mode-hook'."
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1721 nil " Shell-Compile"
48400
e57b9088b4a1 (compilation-shell-minor-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48279
diff changeset
1722 :group 'compilation
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1723 (if compilation-shell-minor-mode
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1724 (compilation-setup t)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1725 (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1726 (font-lock-fontify-buffer)))
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1727
4445
a1e412873732 (compilation-minor-mode): Make variable buffer-local.
Roland McGrath <roland@gnu.org>
parents: 4350
diff changeset
1728 ;;;###autoload
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1729 (define-minor-mode compilation-minor-mode
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1730 "Toggle compilation minor mode.
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1731 With arg, turn compilation mode on if and only if arg is positive.
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1732 In this minor mode, all the error-parsing commands of the
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1733 Compilation major mode are available. See `compilation-mode'.
14607
3c86ac6a871a (compilation-minor-mode): Run compilation-minor-mode-hook.
Roland McGrath <roland@gnu.org>
parents: 14562
diff changeset
1734 Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1735 nil " Compilation"
48400
e57b9088b4a1 (compilation-shell-minor-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48279
diff changeset
1736 :group 'compilation
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1737 (if compilation-minor-mode
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1738 (compilation-setup t)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1739 (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1740 (font-lock-fontify-buffer)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1741
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1742 (defun compilation-handle-exit (process-status exit-status msg)
77886
c90e5f7ef586 (compilation-find-file, compilation-handle-exit): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 77786
diff changeset
1743 "Write MSG in the current buffer and hack its `mode-line-process'."
57517
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1744 (let ((inhibit-read-only t)
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1745 (status (if compilation-exit-message-function
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1746 (funcall compilation-exit-message-function
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1747 process-status exit-status msg)
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1748 (cons msg exit-status)))
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1749 (omax (point-max))
77786
a4a6ec16f923 Nikolaj Schumacher <n_schumacher at web.de> (tiny change)
Glenn Morris <rgm@gnu.org>
parents: 77723
diff changeset
1750 (opoint (point))
a4a6ec16f923 Nikolaj Schumacher <n_schumacher at web.de> (tiny change)
Glenn Morris <rgm@gnu.org>
parents: 77723
diff changeset
1751 (cur-buffer (current-buffer)))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1752 ;; Record where we put the message, so we can ignore it later on.
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1753 (goto-char omax)
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1754 (insert ?\n mode-name " " (car status))
44209
9501986a69c8 (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 44139
diff changeset
1755 (if (and (numberp compilation-window-height)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1756 (zerop compilation-window-height))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1757 (message "%s" (cdr status)))
24558
ea8a9509b52f (compilation-handle-exit): Do right thing
Richard M. Stallman <rms@gnu.org>
parents: 24326
diff changeset
1758 (if (bolp)
ea8a9509b52f (compilation-handle-exit): Do right thing
Richard M. Stallman <rms@gnu.org>
parents: 24326
diff changeset
1759 (forward-char -1))
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1760 (insert " at " (substring (current-time-string) 0 19))
24558
ea8a9509b52f (compilation-handle-exit): Do right thing
Richard M. Stallman <rms@gnu.org>
parents: 24326
diff changeset
1761 (goto-char (point-max))
42939
0786ea38f9fd (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 42408
diff changeset
1762 ;; Prevent that message from being recognized as a compilation error.
0786ea38f9fd (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 42408
diff changeset
1763 (add-text-properties omax (point)
0786ea38f9fd (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 42408
diff changeset
1764 (append '(compilation-handle-exit t) nil))
92160
a4731dee1c1f (compilation-start): Specify a face for
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92148
diff changeset
1765 (setq mode-line-process
a4731dee1c1f (compilation-start): Specify a face for
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92148
diff changeset
1766 (let ((out-string (format ":%s [%s]" process-status (cdr status)))
92170
cdf4278cefa8 (compilation-handle-exit):
Juri Linkov <juri@jurta.org>
parents: 92160
diff changeset
1767 (msg (format "%s %s" mode-name
cdf4278cefa8 (compilation-handle-exit):
Juri Linkov <juri@jurta.org>
parents: 92160
diff changeset
1768 (replace-regexp-in-string "\n?$" "" (car status)))))
cdf4278cefa8 (compilation-handle-exit):
Juri Linkov <juri@jurta.org>
parents: 92160
diff changeset
1769 (message "%s" msg)
cdf4278cefa8 (compilation-handle-exit):
Juri Linkov <juri@jurta.org>
parents: 92160
diff changeset
1770 (propertize out-string
cdf4278cefa8 (compilation-handle-exit):
Juri Linkov <juri@jurta.org>
parents: 92160
diff changeset
1771 'help-echo msg 'face (if (> exit-status 0)
cdf4278cefa8 (compilation-handle-exit):
Juri Linkov <juri@jurta.org>
parents: 92160
diff changeset
1772 'compilation-error
cdf4278cefa8 (compilation-handle-exit):
Juri Linkov <juri@jurta.org>
parents: 92160
diff changeset
1773 'compilation-info))))
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1774 ;; Force mode line redisplay soon.
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1775 (force-mode-line-update)
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1776 (if (and opoint (< opoint omax))
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1777 (goto-char opoint))
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1778 (with-no-warnings
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1779 (if compilation-finish-function
77786
a4a6ec16f923 Nikolaj Schumacher <n_schumacher at web.de> (tiny change)
Glenn Morris <rgm@gnu.org>
parents: 77723
diff changeset
1780 (funcall compilation-finish-function cur-buffer msg)))
a4a6ec16f923 Nikolaj Schumacher <n_schumacher at web.de> (tiny change)
Glenn Morris <rgm@gnu.org>
parents: 77723
diff changeset
1781 (run-hook-with-args 'compilation-finish-functions cur-buffer msg)))
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1782
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1783 ;; Called when compilation process changes state.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1784 (defun compilation-sentinel (proc msg)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1785 "Sentinel for compilation buffers."
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1786 (if (memq (process-status proc) '(exit signal))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1787 (let ((buffer (process-buffer proc)))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1788 (if (null (buffer-name buffer))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1789 ;; buffer killed
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1790 (set-process-buffer proc nil)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1791 (with-current-buffer buffer
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1792 ;; Write something in the compilation buffer
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1793 ;; and hack its mode line.
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1794 (compilation-handle-exit (process-status proc)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1795 (process-exit-status proc)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1796 msg)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1797 ;; Since the buffer and mode line will show that the
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1798 ;; process is dead, we can delete it now. Otherwise it
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1799 ;; will stay around until M-x list-processes.
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1800 (delete-process proc)))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1801 (setq compilation-in-progress (delq proc compilation-in-progress)))))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1802
2472
f911936cec3f (compilation-filter): New function.
Roland McGrath <roland@gnu.org>
parents: 2471
diff changeset
1803 (defun compilation-filter (proc string)
f911936cec3f (compilation-filter): New function.
Roland McGrath <roland@gnu.org>
parents: 2471
diff changeset
1804 "Process filter for compilation buffers.
102072
1867fcb8720e (compilation-filter): Call `comint-carriage-motion', just like `comint-output-filter'.
Sam Steingold <sds@gnu.org>
parents: 100908
diff changeset
1805 Just inserts the text,
1867fcb8720e (compilation-filter): Call `comint-carriage-motion', just like `comint-output-filter'.
Sam Steingold <sds@gnu.org>
parents: 100908
diff changeset
1806 handles carriage motion (see `comint-inhibit-carriage-motion'),
1867fcb8720e (compilation-filter): Call `comint-carriage-motion', just like `comint-output-filter'.
Sam Steingold <sds@gnu.org>
parents: 100908
diff changeset
1807 and runs `compilation-filter-hook'."
95899
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1808 (when (buffer-live-p (process-buffer proc))
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1809 (with-current-buffer (process-buffer proc)
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1810 (let ((inhibit-read-only t)
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1811 ;; `save-excursion' doesn't use the right insertion-type for us.
103248
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1812 (pos (copy-marker (point) t))
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1813 (min (point-min-marker))
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1814 (max (point-max-marker)))
95899
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1815 (unwind-protect
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1816 (progn
103248
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1817 ;; If we are inserting at the end of the accessible part
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1818 ;; of the buffer, keep the inserted text visible.
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1819 (set-marker-insertion-type max t)
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1820 (widen)
95899
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1821 (goto-char (process-mark proc))
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1822 ;; We used to use `insert-before-markers', so that windows with
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1823 ;; point at `process-mark' scroll along with the output, but we
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1824 ;; now use window-point-insertion-type instead.
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1825 (insert string)
102072
1867fcb8720e (compilation-filter): Call `comint-carriage-motion', just like `comint-output-filter'.
Sam Steingold <sds@gnu.org>
parents: 100908
diff changeset
1826 (unless comint-inhibit-carriage-motion
1867fcb8720e (compilation-filter): Call `comint-carriage-motion', just like `comint-output-filter'.
Sam Steingold <sds@gnu.org>
parents: 100908
diff changeset
1827 (comint-carriage-motion (process-mark proc) (point)))
95899
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1828 (set-marker (process-mark proc) (point))
108376
96ef3c75fd61 * progmodes/compile.el (compilation-buffer-modtime): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108083
diff changeset
1829 (set (make-local-variable 'compilation-buffer-modtime) (current-time))
95899
d5d7186027e2 * progmodes/compile.el (compilation-start): Don't disable undo in
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95808
diff changeset
1830 (run-hooks 'compilation-filter-hook))
103248
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1831 (goto-char pos)
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1832 (narrow-to-region min max)
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1833 (set-marker min nil)
97c6a390ad50 * progmodes/compile.el (compilation-filter): If inserting at end
Richard M. Stallman <rms@gnu.org>
parents: 102396
diff changeset
1834 (set-marker max nil))))))
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1835
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1836 ;;; test if a buffer is a compilation buffer, assuming we're in the buffer
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1837 (defsubst compilation-buffer-internal-p ()
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1838 "Test if inside a compilation buffer."
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1839 (local-variable-p 'compilation-locs))
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1840
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1841 ;;; test if a buffer is a compilation buffer, using compilation-buffer-internal-p
5472
ed690a728e13 (compilation-buffer-p): Move defsubst before all callers.
Roland McGrath <roland@gnu.org>
parents: 5456
diff changeset
1842 (defsubst compilation-buffer-p (buffer)
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1843 "Test if BUFFER is a compilation buffer."
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1844 (with-current-buffer buffer
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1845 (compilation-buffer-internal-p)))
5472
ed690a728e13 (compilation-buffer-p): Move defsubst before all callers.
Roland McGrath <roland@gnu.org>
parents: 5456
diff changeset
1846
75281
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1847 (defmacro compilation-loop (< property-change 1+ error limit)
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1848 `(let (opt)
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1849 (while (,< n 0)
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1850 (setq opt pt)
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1851 (or (setq pt (,property-change pt 'message))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1852 ;; Handle the case where where the first error message is
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1853 ;; at the start of the buffer, and n < 0.
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1854 (if (or (eq (get-text-property ,limit 'message)
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1855 (get-text-property opt 'message))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1856 (eq pt opt))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1857 (error ,error compilation-error)
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1858 (setq pt ,limit)))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1859 ;; prop 'message usually has 2 changes, on and off, so
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1860 ;; re-search if off
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1861 (or (setq msg (get-text-property pt 'message))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1862 (if (setq pt (,property-change pt 'message nil ,limit))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1863 (setq msg (get-text-property pt 'message)))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1864 (error ,error compilation-error))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1865 (or (< (cadr msg) compilation-skip-threshold)
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1866 (if different-file
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1867 (eq (prog1 last (setq last (nth 2 (car msg))))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1868 last))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1869 (if compilation-skip-visited
81133
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1870 (nthcdr 5 (car msg)))
75281
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1871 (if compilation-skip-to-next-location
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1872 (eq (car msg) loc))
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1873 ;; count this message only if none of the above are true
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1874 (setq n (,1+ n))))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1875
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1876 (defun compilation-next-error (n &optional different-file pt)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1877 "Move point to the next error in the compilation buffer.
80090
f41bdf06d470 (compilation-next-error): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 79785
diff changeset
1878 This function does NOT find the source line like \\[next-error].
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1879 Prefix arg N says how many error messages to move forwards (or
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1880 backwards, if negative).
80090
f41bdf06d470 (compilation-next-error): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 79785
diff changeset
1881 Optional arg DIFFERENT-FILE, if non-nil, means find next error for a
f41bdf06d470 (compilation-next-error): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 79785
diff changeset
1882 file that is different from the current one.
f41bdf06d470 (compilation-next-error): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 79785
diff changeset
1883 Optional arg PT, if non-nil, specifies the value of point to start
f41bdf06d470 (compilation-next-error): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 79785
diff changeset
1884 looking for the next message."
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1885 (interactive "p")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1886 (or (compilation-buffer-p (current-buffer))
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1887 (error "Not in a compilation buffer"))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1888 (or pt (setq pt (point)))
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1889 (let* ((msg (get-text-property pt 'message))
91716
5bb2c18b8034 (compilation-next-error): Add clarifying comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87744
diff changeset
1890 ;; `loc' is used by the compilation-loop macro.
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1891 (loc (car msg))
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1892 last)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1893 (if (zerop n)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1894 (unless (or msg ; find message near here
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1895 (setq msg (get-text-property (max (1- pt) (point-min))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1896 'message)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1897 (setq pt (previous-single-property-change pt 'message nil
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1898 (line-beginning-position)))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1899 (unless (setq msg (get-text-property (max (1- pt) (point-min)) 'message))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1900 (setq pt (next-single-property-change pt 'message nil
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1901 (line-end-position)))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1902 (or (setq msg (get-text-property pt 'message))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1903 (setq pt (point)))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1904 (setq last (nth 2 (car msg)))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1905 (if (>= n 0)
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1906 (compilation-loop > next-single-property-change 1-
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1907 (if (get-buffer-process (current-buffer))
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1908 "No more %ss yet"
75281
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1909 "Moved past last %s")
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1910 (point-max))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1911 ;; Don't move "back" to message at or before point.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1912 ;; Pass an explicit (point-min) to make sure pt is non-nil.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1913 (setq pt (previous-single-property-change pt 'message nil (point-min)))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1914 (compilation-loop < previous-single-property-change 1+
75281
4f425a488281 (compilation-loop): New arg limit. Handle case where the first error
Chong Yidong <cyd@stupidchicken.com>
parents: 75145
diff changeset
1915 "Moved back before first %s" (point-min))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1916 (goto-char pt)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1917 (or msg
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1918 (error "No %s here" compilation-error))))
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1919
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1920 (defun compilation-previous-error (n)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1921 "Move point to the previous error in the compilation buffer.
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1922 Prefix arg N says how many error messages to move backwards (or
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1923 forwards, if negative).
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1924 Does NOT find the source line like \\[previous-error]."
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1925 (interactive "p")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1926 (compilation-next-error (- n)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1927
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1928 (defun compilation-next-file (n)
54610
3ae52d0dfe0b doc fixes and restore optionality of next-error's arg
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54424
diff changeset
1929 "Move point to the next error for a different file than the current one.
3ae52d0dfe0b doc fixes and restore optionality of next-error's arg
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54424
diff changeset
1930 Prefix arg N says how many files to move forwards (or backwards, if negative)."
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1931 (interactive "p")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1932 (compilation-next-error n t))
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1933
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1934 (defun compilation-previous-file (n)
54610
3ae52d0dfe0b doc fixes and restore optionality of next-error's arg
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54424
diff changeset
1935 "Move point to the previous error for a different file than the current one.
3ae52d0dfe0b doc fixes and restore optionality of next-error's arg
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54424
diff changeset
1936 Prefix arg N says how many files to move backwards (or forwards, if negative)."
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1937 (interactive "p")
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1938 (compilation-next-file (- n)))
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1939
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1940 (defun kill-compilation ()
45582
08fe4d419957 Modified doc string to say that the kill-compilation function also
Robert J. Chassell <bob@rattlesnake.com>
parents: 45215
diff changeset
1941 "Kill the process made by the \\[compile] or \\[grep] commands."
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1942 (interactive)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1943 (let ((buffer (compilation-find-buffer)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1944 (if (get-buffer-process buffer)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1945 (interrupt-process (get-buffer-process buffer))
65070
5a147188ccac (compilation-disable-input): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 65055
diff changeset
1946 (error "The %s process is not running" (downcase mode-name)))))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1947
54856
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1948 (defalias 'compile-mouse-goto-error 'compile-goto-error)
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1949
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1950 (defun compile-goto-error (&optional event)
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1951 "Visit the source for the error message at point.
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1952 Use this command in a compilation log buffer. Sets the mark at point there."
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1953 (interactive (list last-input-event))
54868
a50d004dc072 (compile-goto-error): Use it.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54857
diff changeset
1954 (if event (posn-set-point (event-end event)))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1955 (or (compilation-buffer-p (current-buffer))
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1956 (error "Not in a compilation buffer"))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1957 (if (get-text-property (point) 'directory)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1958 (dired-other-window (car (get-text-property (point) 'directory)))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1959 (push-mark)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1960 (setq compilation-current-error (point))
65788
cbc600deccb5 (compile-goto-error): Delete extra paren.
Romain Francoise <romain@orebokech.com>
parents: 65783
diff changeset
1961 (next-error-internal)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1962
59116
dc790c155f8a (compilation-find-buffer): Rename arg.
Richard M. Stallman <rms@gnu.org>
parents: 59025
diff changeset
1963 (defun compilation-find-buffer (&optional avoid-current)
78388
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1964 "Return a compilation buffer.
78465
b8c25f200566 (compilation-set-window-height): Use window-full-width-p instead of
Martin Rudalics <rudalics@gmx.at>
parents: 78388
diff changeset
1965 If AVOID-CURRENT is nil, and the current buffer is a compilation buffer,
b8c25f200566 (compilation-set-window-height): Use window-full-width-p instead of
Martin Rudalics <rudalics@gmx.at>
parents: 78388
diff changeset
1966 return it. If AVOID-CURRENT is non-nil, return the current buffer only
b8c25f200566 (compilation-set-window-height): Use window-full-width-p instead of
Martin Rudalics <rudalics@gmx.at>
parents: 78388
diff changeset
1967 as a last resort."
b8c25f200566 (compilation-set-window-height): Use window-full-width-p instead of
Martin Rudalics <rudalics@gmx.at>
parents: 78388
diff changeset
1968 (if (and (compilation-buffer-internal-p) (not avoid-current))
78388
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1969 (current-buffer)
b589cafd502b (compilation-find-buffer): Return current buffer immediately if suitable.
Richard M. Stallman <rms@gnu.org>
parents: 78234
diff changeset
1970 (next-error-find-buffer avoid-current 'compilation-buffer-internal-p)))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1971
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1972 ;;;###autoload
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1973 (defun compilation-next-error-function (n &optional reset)
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1974 "Advance to the next error message and visit the file where the error was.
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1975 This is the value of `next-error-function' in Compilation buffers."
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1976 (interactive "p")
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1977 (when reset
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1978 (setq compilation-current-error nil))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1979 (let* ((columns compilation-error-screen-columns) ; buffer's local value
81133
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1980 (last 1) timestamp
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1981 (loc (compilation-next-error (or n 1) nil
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1982 (or compilation-current-error
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1983 compilation-messages-start
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1984 (point-min))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1985 (end-loc (nth 2 loc))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1986 (marker (point-marker)))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1987 (setq compilation-current-error (point-marker)
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1988 overlay-arrow-position
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1989 (if (bolp)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1990 compilation-current-error
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1991 (copy-marker (line-beginning-position)))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1992 loc (car loc))
81133
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1993 ;; If loc contains no marker, no error in that file has been visited.
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1994 ;; If the marker is invalid the buffer has been killed.
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1995 ;; If the file is newer than the timestamp, it has been modified
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1996 ;; (`omake -P' polls filesystem for changes and recompiles when needed
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1997 ;; in the same process and buffer).
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
1998 ;; So, recalculate all markers for that file.
105573
e7f57b24c0a2 (compilation-next-error-function): Fix the
Sam Steingold <sds@gnu.org>
parents: 104247
diff changeset
1999 (unless (and (nth 3 loc) (marker-buffer (nth 3 loc)) (nthcdr 4 loc)
e7f57b24c0a2 (compilation-next-error-function): Fix the
Sam Steingold <sds@gnu.org>
parents: 104247
diff changeset
2000 ;; There may be no timestamp info if the loc is a `fake-loc',
e7f57b24c0a2 (compilation-next-error-function): Fix the
Sam Steingold <sds@gnu.org>
parents: 104247
diff changeset
2001 ;; but we just checked that the file has been visited before!
e7f57b24c0a2 (compilation-next-error-function): Fix the
Sam Steingold <sds@gnu.org>
parents: 104247
diff changeset
2002 (equal (nth 4 loc)
108376
96ef3c75fd61 * progmodes/compile.el (compilation-buffer-modtime): Rename from
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 108083
diff changeset
2003 (setq timestamp compilation-buffer-modtime)))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2004 (with-current-buffer (compilation-find-file marker (caar (nth 2 loc))
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2005 (cadr (car (nth 2 loc))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2006 (save-restriction
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2007 (widen)
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2008 (goto-char (point-min))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2009 ;; Treat file's found lines in forward order, 1 by 1.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2010 (dolist (line (reverse (cddr (nth 2 loc))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2011 (when (car line) ; else this is a filename w/o a line#
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2012 (beginning-of-line (- (car line) last -1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2013 (setq last (car line)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2014 ;; Treat line's found columns and store/update a marker for each.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2015 (dolist (col (cdr line))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2016 (if (car col)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2017 (if (eq (car col) -1) ; special case for range end
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2018 (end-of-line)
58244
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
2019 (compilation-move-to-column (car col) columns))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2020 (beginning-of-line)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2021 (skip-chars-forward " \t"))
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2022 (if (nth 3 col)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2023 (set-marker (nth 3 col) (point))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2024 (setcdr (nthcdr 2 col) `(,(point-marker)))))))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2025 (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
81133
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
2026 (setcdr (nthcdr 3 loc) (list timestamp))
1b2ee4e66d28 Add TIMESTAMP to LOC to handle "incremental compilation", e.g.,
Sam Steingold <sds@gnu.org>
parents: 81047
diff changeset
2027 (setcdr (nthcdr 4 loc) t))) ; Set this one as visited.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2028
55324
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2029 (defvar compilation-gcpro nil
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2030 "Internal variable used to keep some values from being GC'd.")
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2031 (make-variable-buffer-local 'compilation-gcpro)
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2032
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2033 (defun compilation-fake-loc (marker file &optional line col)
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2034 "Preassociate MARKER with FILE.
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2035 FILE should be ABSOLUTE-FILENAME or (RELATIVE-FILENAME . DIRNAME).
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2036 This is useful when you compile temporary files, but want
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2037 automatic translation of the messages to the real buffer from
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2038 which the temporary file came. This only works if done before a
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2039 message about FILE appears!
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2040
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2041 Optional args LINE and COL default to 1 and beginning of
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2042 indentation respectively. The marker is expected to reflect
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2043 this. In the simplest case the marker points to the first line
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2044 of the region that was saved to the temp file.
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2045
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2046 If you concatenate several regions into the temp file (e.g. a
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2047 header with variable assignments and a code region), you must
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2048 call this several times, once each for the last line of one
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2049 region and the first line of the next region."
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2050 (or (consp file) (setq file (list file)))
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2051 (setq file (compilation-get-file-structure file))
55324
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2052 ;; Between the current call to compilation-fake-loc and the first occurrence
85366
e8f9d460bc3e (compilation-next-error-function): Fix timestamp
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85114
diff changeset
2053 ;; of an error message referring to `file', the data is only kept in the
55324
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2054 ;; weak hash-table compilation-locs, so we need to prevent this entry
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2055 ;; in compilation-locs from being GC'd away. --Stef
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2056 (push file compilation-gcpro)
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2057 (let ((loc (compilation-assq (or line 1) (cdr file))))
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2058 (setq loc (compilation-assq col loc))
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2059 (if (cdr loc)
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2060 (setcdr (cddr loc) (list marker))
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2061 (setcdr loc (list line file marker)))
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2062 loc))
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
2063
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2064 (defcustom compilation-context-lines nil
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2065 "Display this many lines of leading context before the current message.
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2066 If nil and the left fringe is displayed, don't scroll the
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2067 compilation output window; an arrow in the left fringe points to
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2068 the current message. If nil and there is no left fringe, the message
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2069 displays at the top of the window; there is no arrow."
55227
193a4c332536 (compilation-context-lines): Add nil option to disable compilation output window scrolling.
Juri Linkov <juri@jurta.org>
parents: 55210
diff changeset
2070 :type '(choice integer (const :tag "No window scrolling" nil))
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
2071 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
2072 :version "22.1")
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
2073
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2074 (defsubst compilation-set-window (w mk)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
2075 "Align the compilation output window W with marker MK near top."
55227
193a4c332536 (compilation-context-lines): Add nil option to disable compilation output window scrolling.
Juri Linkov <juri@jurta.org>
parents: 55210
diff changeset
2076 (if (integerp compilation-context-lines)
193a4c332536 (compilation-context-lines): Add nil option to disable compilation output window scrolling.
Juri Linkov <juri@jurta.org>
parents: 55210
diff changeset
2077 (set-window-start w (save-excursion
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2078 (goto-char mk)
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2079 (beginning-of-line
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2080 (- 1 compilation-context-lines))
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2081 (point)))
62518
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
2082 ;; If there is no left fringe.
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
2083 (if (equal (car (window-fringes)) 0)
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2084 (set-window-start w (save-excursion
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2085 (goto-char mk)
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2086 (beginning-of-line 1)
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2087 (point)))))
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
2088 (set-window-point w mk))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
2089
61760
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
2090 (defvar next-error-highlight-timer)
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
2091
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2092 (defun compilation-goto-locus (msg mk end-mk)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
2093 "Jump to an error corresponding to MSG at MK.
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
2094 All arguments are markers. If END-MK is non-nil, mark is set there
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
2095 and overlay is highlighted between MK and END-MK."
6240
5ce2192f76e1 (compile-reinitialize-errors): Rename first arg from ARGP to REPARSE.
Roland McGrath <roland@gnu.org>
parents: 6197
diff changeset
2096 ;; Show compilation buffer in other window, scrolled to this error.
66119
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2097 (let* ((from-compilation-buffer (eq (window-buffer (selected-window))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2098 (marker-buffer msg)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2099 ;; Use an existing window if it is in a visible frame.
65338
4bc5f5d3e625 (compilation-goto-locus): Take into account
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65316
diff changeset
2100 (pre-existing (get-buffer-window (marker-buffer msg) 0))
66119
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2101 (w (if (and from-compilation-buffer pre-existing)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2102 ;; Calling display-buffer here may end up (partly) hiding
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2103 ;; the error location if the two buffers are in two
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2104 ;; different frames. So don't do it if it's not necessary.
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2105 pre-existing
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2106 (let ((display-buffer-reuse-frames t)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2107 (pop-up-windows t))
109304
2749a14ed325 Add compilation regexps for cucumber and ruby.
Chong Yidong <cyd@stupidchicken.com>
parents: 108376
diff changeset
2108 ;; Pop up a window.
66119
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2109 (display-buffer (marker-buffer msg)))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2110 (highlight-regexp (with-current-buffer (marker-buffer msg)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2111 ;; also do this while we change buffer
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2112 (compilation-set-window w msg)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
2113 compilation-highlight-regexp)))
65338
4bc5f5d3e625 (compilation-goto-locus): Take into account
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65316
diff changeset
2114 ;; Ideally, the window-size should be passed to `display-buffer' (via
4bc5f5d3e625 (compilation-goto-locus): Take into account
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65316
diff changeset
2115 ;; something like special-display-buffer) so it's only used when
4bc5f5d3e625 (compilation-goto-locus): Take into account
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65316
diff changeset
2116 ;; creating a new window.
4bc5f5d3e625 (compilation-goto-locus): Take into account
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65316
diff changeset
2117 (unless pre-existing (compilation-set-window-height w))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
2118
66119
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2119 (if from-compilation-buffer
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2120 ;; If the compilation buffer window was selected,
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2121 ;; keep the compilation buffer in this window;
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2122 ;; display the source in another window.
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2123 (let ((pop-up-windows t))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2124 (pop-to-buffer (marker-buffer mk) 'other-window))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2125 (if (window-dedicated-p (selected-window))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2126 (pop-to-buffer (marker-buffer mk))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2127 (switch-to-buffer (marker-buffer mk))))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2128 (unless (eq (goto-char mk) (point))
104247
9caaade61f03 * progmodes/compile.el (compilation-goto-locus): Use next-error-move-function.
Richard M. Stallman <rms@gnu.org>
parents: 104226
diff changeset
2129 ;; If narrowing gets in the way of going to the right place, widen.
66119
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2130 (widen)
104247
9caaade61f03 * progmodes/compile.el (compilation-goto-locus): Use next-error-move-function.
Richard M. Stallman <rms@gnu.org>
parents: 104226
diff changeset
2131 (if next-error-move-function
9caaade61f03 * progmodes/compile.el (compilation-goto-locus): Use next-error-move-function.
Richard M. Stallman <rms@gnu.org>
parents: 104226
diff changeset
2132 (funcall next-error-move-function msg mk)
9caaade61f03 * progmodes/compile.el (compilation-goto-locus): Use next-error-move-function.
Richard M. Stallman <rms@gnu.org>
parents: 104226
diff changeset
2133 (goto-char mk)))
66119
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2134 (if end-mk
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2135 (push-mark end-mk t)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2136 (if mark-active (setq mark-active)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2137 ;; If hideshow got in the way of
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2138 ;; seeing the right place, open permanently.
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2139 (dolist (ov (overlays-at (point)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2140 (when (eq 'hs (overlay-get ov 'invisible))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2141 (delete-overlay ov)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2142 (goto-char mk)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
2143
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
2144 (when highlight-regexp
61071
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
2145 (if (timerp next-error-highlight-timer)
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
2146 (cancel-timer next-error-highlight-timer))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
2147 (unless compilation-highlight-overlay
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2148 (setq compilation-highlight-overlay
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2149 (make-overlay (point-min) (point-min)))
56864
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
2150 (overlay-put compilation-highlight-overlay 'face 'next-error))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2151 (with-current-buffer (marker-buffer mk)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
2152 (save-excursion
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
2153 (if end-mk (goto-char end-mk) (end-of-line))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2154 (let ((end (point)))
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
2155 (if mk (goto-char mk) (beginning-of-line))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
2156 (if (and (stringp highlight-regexp)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2157 (re-search-forward highlight-regexp end t))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
2158 (progn
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
2159 (goto-char (match-beginning 0))
56864
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
2160 (move-overlay compilation-highlight-overlay
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
2161 (match-beginning 0) (match-end 0)
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
2162 (current-buffer)))
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
2163 (move-overlay compilation-highlight-overlay
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
2164 (point) end (current-buffer)))
73104
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2165 (if (or (eq next-error-highlight t)
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2166 (numberp next-error-highlight))
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2167 ;; We want highlighting: delete overlay on next input.
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2168 (add-hook 'pre-command-hook
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2169 'compilation-goto-locus-delete-o)
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2170 ;; We don't want highlighting: delete overlay now.
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2171 (delete-overlay compilation-highlight-overlay))
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2172 ;; We want highlighting for a limited time:
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2173 ;; set up a timer to delete it.
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2174 (when (numberp next-error-highlight)
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2175 (setq next-error-highlight-timer
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2176 (run-at-time next-error-highlight nil
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2177 'compilation-goto-locus-delete-o)))))))
56864
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
2178 (when (and (eq next-error-highlight 'fringe-arrow))
73104
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2179 ;; We want a fringe arrow (instead of highlighting).
61362
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
2180 (setq next-error-overlay-arrow-position
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
2181 (copy-marker (line-beginning-position))))))
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
2182
73104
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2183 (defun compilation-goto-locus-delete-o ()
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2184 (delete-overlay compilation-highlight-overlay)
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2185 ;; Get rid of timer and hook that would try to do this again.
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2186 (if (timerp next-error-highlight-timer)
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2187 (cancel-timer next-error-highlight-timer))
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2188 (remove-hook 'pre-command-hook
a90c9318cca9 (compilation-goto-locus-delete-o): New fn.
Richard M. Stallman <rms@gnu.org>
parents: 72894
diff changeset
2189 'compilation-goto-locus-delete-o))
6240
5ce2192f76e1 (compile-reinitialize-errors): Rename first arg from ARGP to REPARSE.
Roland McGrath <roland@gnu.org>
parents: 6197
diff changeset
2190
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2191 (defun compilation-find-file (marker filename directory &rest formats)
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
2192 "Find a buffer for file FILENAME.
80092
f37fff6fc076 (compilation-find-file): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 80090
diff changeset
2193 If FILENAME is not found at all, ask the user where to find it.
f37fff6fc076 (compilation-find-file): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 80090
diff changeset
2194 Pop up the buffer containing MARKER and scroll to MARKER if we ask
f37fff6fc076 (compilation-find-file): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 80090
diff changeset
2195 the user where to find the file.
30878
13a1a0ec31e5 (grep): Provide a default set of files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30688
diff changeset
2196 Search the directories in `compilation-search-path'.
13a1a0ec31e5 (grep): Provide a default set of files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30688
diff changeset
2197 A nil in `compilation-search-path' means to try the
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2198 \"current\" directory, which is passed in DIRECTORY.
77886
c90e5f7ef586 (compilation-find-file, compilation-handle-exit): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 77786
diff changeset
2199 If DIRECTORY is relative, it is combined with `default-directory'.
c90e5f7ef586 (compilation-find-file, compilation-handle-exit): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 77786
diff changeset
2200 If DIRECTORY is nil, that means use `default-directory'.
80092
f37fff6fc076 (compilation-find-file): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 80090
diff changeset
2201 FORMATS, if given, is a list of formats to reformat FILENAME when
f37fff6fc076 (compilation-find-file): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 80090
diff changeset
2202 looking for it: for each element FMT in FORMATS, this function
f37fff6fc076 (compilation-find-file): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents: 80090
diff changeset
2203 attempts to find a file whose name is produced by (format FMT FILENAME)."
10928
a008a9d8966a (compilation-buffer-p): Fix braino in last change: switch to the buffer first.
Roland McGrath <roland@gnu.org>
parents: 10842
diff changeset
2204 (or formats (setq formats '("%s")))
71789
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2205 (let ((dirs compilation-search-path)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2206 (spec-dir (if directory
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2207 (expand-file-name directory)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2208 default-directory))
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2209 buffer thisdir fmts name)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2210 (if (file-name-absolute-p filename)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2211 ;; The file name is absolute. Use its explicit directory as
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2212 ;; the first in the search path, and strip it from FILENAME.
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2213 (setq filename (abbreviate-file-name (expand-file-name filename))
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2214 dirs (cons (file-name-directory filename) dirs)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2215 filename (file-name-nondirectory filename)))
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2216 ;; Now search the path.
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2217 (while (and dirs (null buffer))
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2218 (setq thisdir (or (car dirs) spec-dir)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2219 fmts formats)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2220 ;; For each directory, try each format string.
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2221 (while (and fmts (null buffer))
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2222 (setq name (expand-file-name (format (car fmts) filename) thisdir)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2223 buffer (and (file-exists-p name)
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2224 (find-file-noselect name))
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2225 fmts (cdr fmts)))
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2226 (setq dirs (cdr dirs)))
72001
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2227 (while (null buffer) ;Repeat until the user selects an existing file.
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2228 ;; The file doesn't exist. Ask the user where to find it.
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2229 (save-excursion ;This save-excursion is probably not right.
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2230 (let ((pop-up-windows t))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2231 (compilation-set-window (display-buffer (marker-buffer marker))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2232 marker)
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2233 (let* ((name (read-file-name
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2234 (format "Find this %s in (default %s): "
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2235 compilation-error filename)
80878
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2236 spec-dir filename t nil
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2237 ;; The predicate below is fine when called from
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2238 ;; minibuffer-complete-and-exit, but it's too
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2239 ;; restrictive otherwise, since it also prevents the
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2240 ;; user from completing "fo" to "foo/" when she
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2241 ;; wants to enter "foo/bar".
81135
89afbe74739e (compilation-find-file, compilation-handle-exit): Fix typos in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 81133
diff changeset
2242 ;;
80878
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2243 ;; Try to make sure the user can only select
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2244 ;; a valid answer. This predicate may be ignored,
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2245 ;; tho, so we still have to double-check afterwards.
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2246 ;; TODO: We should probably fix read-file-name so
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2247 ;; that it never ignores this predicate, even when
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2248 ;; using popup dialog boxes.
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2249 ;; (lambda (name)
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2250 ;; (if (file-directory-p name)
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2251 ;; (setq name (expand-file-name filename name)))
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2252 ;; (file-exists-p name))
98ca0b616c89 (compilation-find-file): Add a big comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 77183
diff changeset
2253 ))
72001
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2254 (origname name))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2255 (cond
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2256 ((not (file-exists-p name))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2257 (message "Cannot find file `%s'" name)
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2258 (ding) (sit-for 2))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2259 ((and (file-directory-p name)
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2260 (not (file-exists-p
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2261 (setq name (expand-file-name filename name)))))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2262 (message "No `%s' in directory %s" filename origname)
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2263 (ding) (sit-for 2))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2264 (t
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2265 (setq buffer (find-file-noselect name))))))))
71789
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2266 ;; Make intangible overlays tangible.
72001
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2267 ;; This is weird: it's not even clear which is the current buffer,
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2268 ;; so the code below can't be expected to DTRT here. -- Stef
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2269 (dolist (ov (overlays-in (point-min) (point-max)))
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2270 (when (overlay-get ov 'intangible)
adaad9cef326 (compilation-find-file): Handle the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71929
diff changeset
2271 (overlay-put ov 'intangible nil)))
71789
aa53161fdb21 (compilation-error-regexp-alist-alist): Fix ambiguity introduced by last change.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 71742
diff changeset
2272 buffer))
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
2273
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2274 (defun compilation-get-file-structure (file &optional fmt)
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2275 "Retrieve FILE's file-structure or create a new one.
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2276 FILE should be (FILENAME) or (RELATIVE-FILENAME . DIRNAME).
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2277 In the former case, FILENAME may be relative or absolute.
46324
d992f5698971 (compilation-normalize-filename):
Richard M. Stallman <rms@gnu.org>
parents: 45829
diff changeset
2278
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2279 The file-structure looks like this:
78749
4256a2145ba2 (compilation-get-file-structure): Complete last
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78578
diff changeset
2280 (list (list FILENAME [DIR-FROM-PREV-MSG]) FMT LINE-STRUCT...)"
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2281 (or (gethash file compilation-locs)
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2282 ;; File was not previously encountered, at least not in the form passed.
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2283 ;; Let's normalize it and look again.
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2284 (let ((filename (car file))
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2285 ;; Get the specified directory from FILE.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2286 (spec-directory (if (cdr file)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2287 (file-truename (cdr file)))))
46324
d992f5698971 (compilation-normalize-filename):
Richard M. Stallman <rms@gnu.org>
parents: 45829
diff changeset
2288
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2289 ;; Check for a comint-file-name-prefix and prepend it if appropriate.
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2290 ;; (This is very useful for compilation-minor-mode in an rlogin-mode
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2291 ;; buffer.)
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2292 (when (and (boundp 'comint-file-name-prefix)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2293 (not (equal comint-file-name-prefix "")))
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2294 (if (file-name-absolute-p filename)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2295 (setq filename
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2296 (concat comint-file-name-prefix filename))
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2297 (if spec-directory
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2298 (setq spec-directory
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2299 (file-truename
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2300 (concat comint-file-name-prefix spec-directory))))))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
2301
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2302 ;; If compilation-parse-errors-filename-function is
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2303 ;; defined, use it to process the filename.
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2304 (when compilation-parse-errors-filename-function
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2305 (setq filename
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2306 (funcall compilation-parse-errors-filename-function
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2307 filename)))
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2308
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2309 ;; Some compilers (e.g. Sun's java compiler, reportedly) produce bogus
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2310 ;; file names like "./bar//foo.c" for file "bar/foo.c";
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2311 ;; expand-file-name will collapse these into "/foo.c" and fail to find
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2312 ;; the appropriate file. So we look for doubled slashes in the file
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2313 ;; name and fix them.
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2314 (setq filename (command-line-normalize-file-name filename))
12219
7c0b93d3df6b (compilation-find-file): If FILENAME is absolute, apply
Roland McGrath <roland@gnu.org>
parents: 12029
diff changeset
2315
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2316 ;; Store it for the possibly unnormalized name
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2317 (puthash file
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2318 ;; Retrieve or create file-structure for normalized name
78578
be466566559a (compilation-get-file-structure): Make use of the directory part when
Glenn Morris <rgm@gnu.org>
parents: 78465
diff changeset
2319 ;; The gethash used to not use spec-directory, but
be466566559a (compilation-get-file-structure): Make use of the directory part when
Glenn Morris <rgm@gnu.org>
parents: 78465
diff changeset
2320 ;; this leads to errors when files in different
be466566559a (compilation-get-file-structure): Make use of the directory part when
Glenn Morris <rgm@gnu.org>
parents: 78465
diff changeset
2321 ;; directories have the same name:
be466566559a (compilation-get-file-structure): Make use of the directory part when
Glenn Morris <rgm@gnu.org>
parents: 78465
diff changeset
2322 ;; http://lists.gnu.org/archive/html/emacs-devel/2007-08/msg00463.html
be466566559a (compilation-get-file-structure): Make use of the directory part when
Glenn Morris <rgm@gnu.org>
parents: 78465
diff changeset
2323 (or (gethash (cons filename spec-directory) compilation-locs)
78749
4256a2145ba2 (compilation-get-file-structure): Complete last
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 78578
diff changeset
2324 (puthash (cons filename spec-directory)
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2325 (list (list filename spec-directory) fmt)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
2326 compilation-locs))
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
2327 compilation-locs))))
3940
aa9f37730d77 (compile-abbreviate-directory): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3875
diff changeset
2328
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
2329 (add-to-list 'debug-ignored-errors "^No more [-a-z ]+s yet$")
29078
2e20146198ce Add to debug-ignored-errors.
Dave Love <fx@gnu.org>
parents: 28936
diff changeset
2330
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2331 ;;; Compatibility with the old compile.el.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2332
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2333 (defun compile-buffer-substring (n) (if n (match-string n)))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2334
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2335 (defun compilation-compat-error-properties (err)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
2336 "Map old-style error ERR to new-style message."
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2337 ;; Old-style structure is (MARKER (FILE DIR) LINE COL) or
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2338 ;; (MARKER . MARKER).
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2339 (let ((dst (cdr err)))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2340 (if (markerp dst)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2341 ;; Must start with a face, for font-lock.
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2342 `(face nil
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2343 message ,(list (list nil nil nil dst) 2)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2344 help-echo "mouse-2: visit the source location"
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2345 keymap compilation-button-map
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2346 mouse-face highlight)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2347 ;; Too difficult to do it by hand: dispatch to the normal code.
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2348 (let* ((file (pop dst))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2349 (line (pop dst))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2350 (col (pop dst))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2351 (filename (pop file))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2352 (dirname (pop file))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2353 (fmt (pop file)))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2354 (compilation-internal-error-properties
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
2355 (cons filename dirname) line nil col nil 2 fmt)))))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2356
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2357 (defun compilation-compat-parse-errors (limit)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2358 (when compilation-parse-errors-function
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2359 ;; FIXME: We should remove the rest of the compilation keywords
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2360 ;; but we can't do that from here because font-lock is using
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2361 ;; the value right now. --stef
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2362 (save-excursion
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2363 (setq compilation-error-list nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2364 ;; Reset compilation-parsing-end each time because font-lock
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2365 ;; might force us the re-parse many times (typically because
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2366 ;; some code adds some text-property to the output that we
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2367 ;; already parsed). You might say "why reparse", well:
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2368 ;; because font-lock has just removed the `message' property so
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2369 ;; have to do it all over again.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2370 (if compilation-parsing-end
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2371 (set-marker compilation-parsing-end (point))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2372 (setq compilation-parsing-end (point-marker)))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2373 (condition-case nil
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2374 ;; Ignore any error: we're calling this function earlier than
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2375 ;; in the old compile.el so things might not all be setup yet.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2376 (funcall compilation-parse-errors-function limit nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2377 (error nil))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2378 (dolist (err (if (listp compilation-error-list) compilation-error-list))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2379 (let* ((src (car err))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2380 (dst (cdr err))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2381 (loc (cond ((markerp dst) (list nil nil nil dst))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2382 ((consp dst)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2383 (list (nth 2 dst) (nth 1 dst)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2384 (cons (cdar dst) (caar dst)))))))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2385 (when loc
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2386 (goto-char src)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2387 ;; (put-text-property src (line-end-position) 'font-lock-face 'font-lock-warning-face)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2388 (put-text-property src (line-end-position)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2389 'message (list loc 2)))))))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2390 (goto-char limit)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2391 nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2392
105772
fd7169a87c28 Fix typos in comments.
Juanma Barranquero <lekktu@gmail.com>
parents: 105581
diff changeset
2393 ;; Beware: this is not only compatibility code. New code stil uses it. --Stef
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2394 (defun compilation-forget-errors ()
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2395 ;; In case we hit the same file/line specs, we want to recompute a new
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2396 ;; marker for them, so flush our cache.
110266
5086e18330fb * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 110186
diff changeset
2397 (clrhash compilation-locs)
55324
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
2398 (setq compilation-gcpro nil)
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2399 ;; FIXME: the old code reset the directory-stack, so maybe we should
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2400 ;; put a `directory change' marker of some sort, but where? -stef
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
2401 ;;
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2402 ;; FIXME: The old code moved compilation-current-error (which was
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2403 ;; virtually represented by a mix of compilation-parsing-end and
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2404 ;; compilation-error-list) to point-min, but that was only meaningful for
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2405 ;; the internal uses of compilation-forget-errors: all calls from external
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2406 ;; packages seem to be followed by a move of compilation-parsing-end to
82212
acc4dc607d14 (compilation-forget-errors): Reset compilation-auto-jump-to-next.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2407 ;; something equivalent to point-max. So we heuristically move
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2408 ;; compilation-current-error to point-max (since the external package
82212
acc4dc607d14 (compilation-forget-errors): Reset compilation-auto-jump-to-next.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2409 ;; won't know that it should do it). --Stef
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2410 (setq compilation-current-error nil)
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2411 (let* ((proc (get-buffer-process (current-buffer)))
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2412 (mark (if proc (process-mark proc)))
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2413 (pos (or mark (point-max))))
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2414 (setq compilation-messages-start
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2415 ;; In the future, ignore the text already present in the buffer.
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2416 ;; Since many process filter functions insert before markers,
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2417 ;; we need to put ours just before the insertion point rather
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2418 ;; than at the insertion point. If that's not possible, then
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
2419 ;; don't use a marker. --Stef
82212
acc4dc607d14 (compilation-forget-errors): Reset compilation-auto-jump-to-next.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2420 (if (> pos (point-min)) (copy-marker (1- pos)) pos)))
acc4dc607d14 (compilation-forget-errors): Reset compilation-auto-jump-to-next.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2421 ;; Again, since this command is used in buffers that contain several
acc4dc607d14 (compilation-forget-errors): Reset compilation-auto-jump-to-next.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2422 ;; compilations, to set the beginning of "this compilation", it's a good
acc4dc607d14 (compilation-forget-errors): Reset compilation-auto-jump-to-next.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2423 ;; place to reset compilation-auto-jump-to-next.
acc4dc607d14 (compilation-forget-errors): Reset compilation-auto-jump-to-next.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82140
diff changeset
2424 (set (make-local-variable 'compilation-auto-jump-to-next)
91811
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
2425 (or compilation-auto-jump-to-first-error
3db89e7c0f1d (compilation-auto-jump): Call
Juri Linkov <juri@jurta.org>
parents: 91759
diff changeset
2426 (eq compilation-scroll-output 'first-error))))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
2427
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 569
diff changeset
2428 (provide 'compile)
712
16823e891d56 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 621
diff changeset
2429
55325
e95e9c689608 Arch-tags shouldn't be outline headers.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55324
diff changeset
2430 ;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
712
16823e891d56 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 621
diff changeset
2431 ;;; compile.el ends here