annotate lisp/progmodes/compile.el @ 66119:bc2d2dc9f534

(compilation-goto-locus): Display the compilation buffer first and the source buffer second, in case they're in overlapping frames. Don't raise the compilation frame if it was the selected window upon entry. Pass the `other-window' arg to pop-to-buffer.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 16 Oct 2005 14:12:50 +0000
parents cbc600deccb5
children 11893f0cbfb1 0ca0d9181b5e
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,
64699
629afbe74e61 Update copyright for release of 22.1 for progmodes directory.
Nick Roberts <nickrob@snap.net.nz>
parents: 64618
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
5
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
6 ;; Authors: Roland McGrath <roland@gnu.org>,
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
7 ;; Daniel Pfeiffer <occitan@esperanto.org>
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
8 ;; Maintainer: FSF
2247
2c7997f249eb Add or correct keywords
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1846
diff changeset
9 ;; Keywords: tools, processes
795
c693d56ef36d *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 778
diff changeset
10
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12
804
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
16 ;; any later version.
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17
804
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
18 ;; 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
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
21 ;; GNU General Public License for more details.
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
22
33aaf4b71a1d *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 795
diff changeset
23 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14049
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63815
diff changeset
25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63815
diff changeset
26 ;; Boston, MA 02110-1301, USA.
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
2337
2ee64176069c Fix library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
28 ;;; Commentary:
2ee64176069c Fix library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
29
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
30 ;; 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
31 ;; manual.
2337
2ee64176069c Fix library headers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2307
diff changeset
32
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
33 ;; This mode uses some complex data-structures:
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
34
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
35 ;; 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
36
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
37 ;; 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
38 ;; 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
39 ;; 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
40 ;; Once any location in some file has been jumped to, the list is extended to
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
41 ;; (COLUMN LINE FILE-STRUCTURE MARKER . VISITED) for all LOCs pertaining to
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
42 ;; that file.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
43 ;; 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
44 ;; 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
45 ;; before that point. VISITED is t if we have jumped there, else nil.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
46
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
47 ;; FILE-STRUCTURE is a list of
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
48 ;; ((FILENAME . DIRECTORY) FORMATS (LINE LOC ...) ...)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
49
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
50 ;; 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
51 ;; 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
52 ;; 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
53 ;; a file of that name can't be found.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
54 ;; 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
55 ;; 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
56 ;; 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
57 ;; 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
58 ;; every LOC.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
59
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
60 ;; MESSAGE is a list of (LOC TYPE END-LOC)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
61
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
62 ;; 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
63 ;; such, 2 otherwise (for a real error). END-LOC is a LOC pointing to the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
64 ;; other end, if the parsed message contained a range. If the end of the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
65 ;; 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
66 ;; 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
67 ;; buffer.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
68
54747
bdc00a83ecd1 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54742
diff changeset
69 ;;; Code:
54361
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 (eval-when-compile (require 'cl))
54610
3ae52d0dfe0b doc fixes and restore optionality of next-error's arg
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54424
diff changeset
72
65228
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
73 (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
74 (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
75 (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
76 (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
77
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
78
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
79 (defgroup compilation nil
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
80 "Run compiler as inferior of Emacs, parse error messages."
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
81 :group 'tools
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
82 :group 'processes)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
83
569
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
84
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
85 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
86 (defcustom compilation-mode-hook nil
64194
76fced56e97e (compilation-mode-hook, compilation-mode): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 64085
diff changeset
87 "*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
88 :type 'hook
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
89 :group 'compilation)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
90
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
91 ;;;###autoload
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
92 (defcustom compilation-window-height nil
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
93 "*Number of lines in a compilation window. If nil, use Emacs default."
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
94 :type '(choice (const :tag "Default" nil)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
95 integer)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
96 :group 'compilation)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
97
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
98 (defvar compilation-first-column 1
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
99 "*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
100
40294
c3b8e6d5266f (compilation-parse-errors-filename-function):
Gerd Moellmann <gerd@gnu.org>
parents: 40222
diff changeset
101 (defvar compilation-parse-errors-filename-function nil
c3b8e6d5266f (compilation-parse-errors-filename-function):
Gerd Moellmann <gerd@gnu.org>
parents: 40222
diff changeset
102 "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
103 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
104 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
105
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 418
diff changeset
106 ;;;###autoload
16985
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
107 (defvar compilation-process-setup-function nil
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
108 "*Function to call to customize the compilation process.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
109 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
110 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
111 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
112 is called with variables `compilation-buffer' and `compilation-window'
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
113 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
114
b0d8e7c0f906 * (compilation-process-setup-function): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 16950
diff changeset
115 ;;;###autoload
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
116 (defvar compilation-buffer-name-function nil
1133
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
117 "Function to compute the name of a compilation buffer.
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
118 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
119 compilation buffer. It should return a string.
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
120 nil means compute the name with `(concat \"*\" (downcase major-mode) \"*\")'.")
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 418
diff changeset
122 ;;;###autoload
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
123 (defvar compilation-finish-function nil
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
124 "Function to call when a compilation process finishes.
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
125 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
126 describing how the process finished.")
62518
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
127
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
128 (make-obsolete-variable 'compilation-finish-function
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
129 "Use `compilation-finish-functions', but it works a little differently."
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
130 "22.1")
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
131
16042
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
132 ;;;###autoload
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
133 (defvar compilation-finish-functions nil
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
134 "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
135 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
136 and a string describing how the process finished.")
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
137
740
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
138 (defvar compilation-in-progress nil
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
139 "List of compilation processes now running.")
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
140 (or (assq 'compilation-in-progress minor-mode-alist)
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
141 (setq minor-mode-alist (cons '(compilation-in-progress " Compiling")
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
142 minor-mode-alist)))
b39d858a0b19 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 732
diff changeset
143
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
144 (defvar compilation-error "error"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
145 "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
146
17866
7d458582345c (compilation-parse-errors): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 17653
diff changeset
147 (defvar compilation-arguments nil
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
148 "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
149
1133
f36b965cfeb0 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 1072
diff changeset
150 (defvar compilation-num-errors-found)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
151
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
152 (defconst compilation-error-regexp-alist-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
153 '((absoft
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
154 "^\\(?:[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
155 of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
156
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
157 (ada
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
158 "\\(warning: .*\\)? at \\([^ \n]+\\):\\([0-9]+\\)$" 2 3 nil (1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
159
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
160 (aix
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
161 " 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
162
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
163 (ant
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
164 "^[ \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
165 \\( 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
166
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
167 (bash
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
168 "^\\([^: \n\t]+\\): line \\([0-9]+\\):" 1 2)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
169
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
170 (borland
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
171 "^\\(?:Error\\|Warnin\\(g\\)\\) \\(?:[FEW][0-9]+ \\)?\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
172 \\([a-zA-Z]?:?[^:( \t\n]+\\)\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
173 \\([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
174
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
175 (caml
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
176 "^ *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
177 \\(?: 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
178 2 (3 . 4) (5 . 6) (7))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
179
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
180 (comma
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
181 "^\"\\([^,\" \n\t]+\\)\", line \\([0-9]+\\)\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
182 \\(?:[(. 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
183
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
184 (edg-1
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
185 "^\\([^ \n]+\\)(\\([0-9]+\\)): \\(?:error\\|warnin\\(g\\)\\|remar\\(k\\)\\)"
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
186 1 2 nil (3 . 4))
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
187 (edg-2
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
188 "at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$"
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
189 2 1 nil 0)
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
190
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
191 (epc
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
192 "^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
193
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
194 (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
195 "\\(^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
196 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
197
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
198 (iar
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
199 "^\"\\(.*\\)\",\\([0-9]+\\)\\s-+\\(?:Error\\|Warnin\\(g\\)\\)\\[[0-9]+\\]:"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
200 1 2 nil (3))
15084
01518892abad (compilation-error-regexp-alist): Add regexp
Richard M. Stallman <rms@gnu.org>
parents: 14807
diff changeset
201
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
202 (ibm
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
203 "^\\([^( \n\t]+\\)(\\([0-9]+\\):\\([0-9]+\\)) :\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
204 \\(?: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
205
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
206 ;; fixme: should be `mips'
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
207 (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
208 "^[-[: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
209 \\([^,\" \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
210
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
211 (java
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
212 "^\\(?:[ \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
213
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
214 (jikes-file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
215 "^\\(?:Found\\|Issued\\) .* compiling \"\\(.+\\)\":$" 1 nil nil 0)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
216 (jikes-line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
217 "^ *\\([0-9]+\\)\\.[ \t]+.*\n +\\(<-*>\n\\*\\*\\* \\(?:Error\\|Warnin\\(g\\)\\)\\)"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
218 nil 1 nil 2 0
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
219 (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
220
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
221 (gcc-include
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
222 "^\\(?:In file included\\| \\) from \
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
223 \\(.+\\):\\([0-9]+\\)\\(?:\\(:\\)\\|\\(,\\)\\)?" 1 2 nil (3 . 4))
3606
713c76a95b74 * compile.el (compilation-error-list): When we haven't yet
Jim Blandy <jimb@redhat.com>
parents: 3514
diff changeset
224
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
225 (gnu
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
226 "^\\(?:[[:alpha:]][-[:alnum:].]+: ?\\)?\
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
227 \\([/.]*[a-zA-Z]:?[^ \t\n:]*\\|{standard input}\\): ?\
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
228 \\([0-9]+\\)\\([.:]?\\)\\([0-9]+\\)?\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
229 \\(?:-\\(?:\\([0-9]+\\)\\3\\)?\\.?\\([0-9]+\\)?\\)?:\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
230 \\(?: *\\(\\(?:Future\\|Runtime\\)?[Ww]arning\\|W:\\)\\|\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
231 *\\([Ii]nfo\\(?:\\>\\|rmationa?l?\\)\\|I:\\)\\)?"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
232 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
233
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
234 (lcc
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
235 "^\\(?:E\\|\\(W\\)\\), \\([^(\n]+\\)(\\([0-9]+\\),[ \t]*\\([0-9]+\\)"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
236 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
237
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
238 (makepp
54368
95647cc2d932 (compilation-error-regexp-alist-alist): Whitespace fixup.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54361
diff changeset
239 "^makepp: \\(?:\\(?:warning\\(:\\).*?\\|\\(Scanning\\|[LR]e?l?oading makefile\\) \\|.*?\\)\
62964
6b3810cab95a (compilation-error-regexp-alist-alist): Allow (...) within `...' for makepp messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 62859
diff changeset
240 `\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]\\)"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
241 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
242 ("`\\(\\(\\S +?\\)\\(?::\\([0-9]+\\)\\)?\\)['(]" nil nil
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
243 (2 compilation-info-face)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
244 (3 compilation-line-face nil t)
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
245 (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
246 append)))
12767
287cc74602fa (compilation-error-regexp-alist): Add regexp for Sun ada.
Roland McGrath <roland@gnu.org>
parents: 12256
diff changeset
247
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
248 ;; Should be lint-1, lint-2 (SysV lint)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
249 (mips-1
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
250 " (\\([0-9]+\\)) in \\([^ \n]+\\)" 2 1)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
251 (mips-2
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
252 " 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
253
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
254 (msft
63299
91394f1a7b4b Fix last change
Jason Rumney <jasonr@gnu.org>
parents: 63294
diff changeset
255 "^\\([0-9]+>\\)?\\(\\(?:[a-zA-Z]:\\)?[^:(\t\n]+\\)(\\([0-9]+\\)) \
63294
ac2350be1da2 2005-06-10 Michael Hotchin <michael@hotchin.net> (tiny change)
Jason Rumney <jasonr@gnu.org>
parents: 63196
diff changeset
256 : \\(?:error\\|warnin\\(g\\)\\) C[0-9]+:" 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
257
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
258 (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
259 "^\\(?: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
260 \\(?:\\(?:,\\| 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
261 \\(?:,\\| in\\| of\\)? file \\(.*?\\):?$"
18477
270080940256 (compilation-error-regexp-alist): New item, for Oracle compiler.
Richard M. Stallman <rms@gnu.org>
parents: 18273
diff changeset
262 3 1 2)
18984
d2c26a873eb4 (compilation-error-regexp-alist): Add elt for EPC F90.
Richard M. Stallman <rms@gnu.org>
parents: 18619
diff changeset
263
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
264 (perl
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
265 " at \\([^ \n]+\\) line \\([0-9]+\\)\\(?:[,.]\\|$\\)" 1 2)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
266
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
267 (rxp
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
268 "^\\(?:Error\\|Warnin\\(g\\)\\):.*\n.* line \\([0-9]+\\) char\
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
269 \\([0-9]+\\) of file://\\(.+\\)"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
270 4 2 3 (1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
271
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
272 (sparc-pascal-file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
273 "^\\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
274 [12][09][0-9][0-9] +\\(.*\\):$"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
275 1 nil nil 0)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
276 (sparc-pascal-line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
277 "^\\(\\(?:E\\|\\(w\\)\\) +[0-9]+\\) line \\([0-9]+\\) - "
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
278 nil 3 nil (2) nil (1 (compilation-face '(2))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
279 (sparc-pascal-example
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
280 "^ +\\([0-9]+\\) +.*\n\\(\\(?:e\\|\\(w\\)\\) [0-9]+\\)-+"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
281 nil 1 nil (3) nil (2 (compilation-face '(3))))
20187
0ee26e03e911 (compilation-error-regexp-alist):
Karl Heuer <kwzh@gnu.org>
parents: 20059
diff changeset
282
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
283 (sun
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
284 ": \\(?:ERROR\\|WARNIN\\(G\\)\\|REMAR\\(K\\)\\) \\(?:[[:alnum:] ]+, \\)?\
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
285 File = \\(.+\\), Line = \\([0-9]+\\)\\(?:, Column = \\([0-9]+\\)\\)?"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
286 3 4 5 (1 . 2))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
287
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
288 (sun-ada
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
289 "^\\([^, \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
290
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
291 (4bsd
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
292 "\\(?:^\\|:: \\|\\S ( \\)\\(/[^ \n\t()]+\\)(\\([0-9]+\\))\
61425
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
293 \\(?:: \\(warning:\\)?\\|$\\| ),\\)" 1 2 nil (3))
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
294
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
295 (gcov-file
65228
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
296 "^ +-: \\(0\\):Source:\\(.+\\)$" 2 1 nil 0)
61425
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
297 (gcov-bb-file
65228
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
298 "^ +-: \\(0\\):Object:\\(?:.+\\)$" nil 1 nil 0)
61425
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
299 (gcov-never-called-line
65228
d88a79e06702 (font-lock-extra-managed-props, font-lock-keywords, font-lock-maximum-size,
Juanma Barranquero <lekktu@gmail.com>
parents: 65175
diff changeset
300 "^ +\\(#####\\): +\\([0-9]+\\):.+$" nil 2 nil 2 nil
61425
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
301 (1 compilation-error-face))
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
302 (gcov-called-line
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
303 "^ +[-0-9]+: +\\([1-9]\\|[0-9]\\{2,\\}\\):.*$" nil 1 nil 0)
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
304 )
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
305 "Alist of values for `compilation-error-regexp-alist'.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
306
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
307 (defcustom compilation-error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
308 (mapcar 'car compilation-error-regexp-alist-alist)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
309 "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
310 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
311 matchers must make some common sense assumptions, which catch
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
312 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
313
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
314 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
315 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
316 the predefined symbols and their effects in the file
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
317 `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
318
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
319 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
320 HIGHLIGHT...]). If REGEXP matches, the FILE'th subexpression
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
321 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
322 number. The COLUMN'th subexpression gives the column number on
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
323 that line.
52219
cf7c59950b0a 2003-08-14 Thu Jari Aalto <jari.aalto@poboxes.com>
Alex Schroeder <alex@gnu.org>
parents: 52061
diff changeset
324
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
325 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
326 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
327 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
328 buffer, line number defaults to 1 and column defaults to
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
329 beginning of line's indentation.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
330
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
331 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
332 \(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
333 name, until a file of that name is found. Or FILE can also be a
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
334 function to return the filename.
52219
cf7c59950b0a 2003-08-14 Thu Jari Aalto <jari.aalto@poboxes.com>
Alex Schroeder <alex@gnu.org>
parents: 52061
diff changeset
335
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
336 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
337 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
338 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
339 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
340
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
341 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
342 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
343 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
344 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
345 See `compilation-error-face', `compilation-warning-face',
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
346 `compilation-info-face' and `compilation-skip-threshold'.
26229
11ac69b74132 (compilation-error-regexp-alist): Recognize
Gerd Moellmann <gerd@gnu.org>
parents: 26222
diff changeset
347
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
348 What matched the HYPERLINK'th subexpression has `mouse-face' and
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
349 `compilation-message-face' applied. If this is nil, the text
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
350 matched by the whole REGEXP becomes the hyperlink.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
351
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
352 Additional HIGHLIGHTs as described under `font-lock-keywords' can
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
353 be added."
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
354 :type `(set :menu-tag "Pick"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
355 ,@(mapcar (lambda (elt)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
356 (list 'const (car elt)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
357 compilation-error-regexp-alist-alist))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
358 :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
359 ,(expand-file-name "compilation.txt" data-directory))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
360 :group 'compilation)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361
53978
227623e374e8 (compilation-directory): New defvar.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53493
diff changeset
362 (defvar compilation-directory nil
227623e374e8 (compilation-directory): New defvar.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53493
diff changeset
363 "Directory to restore to when doing `recompile'.")
227623e374e8 (compilation-directory): New defvar.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53493
diff changeset
364
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
365 (defvar compilation-directory-matcher
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
366 '("\\(?:Entering\\|Leavin\\(g\\)\\) directory `\\(.+\\)'$" (2 . 1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
367 "A list for tracking when directories are entered or left.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
368 Nil means not to track directories, e.g. if all file names are absolute. The
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
369 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
370 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
371 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
372 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
373 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
374 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
375 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
376 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
377
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
378 (defvar compilation-page-delimiter
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
379 "^\\(?:\f\\|.*\\(?:Entering\\|Leaving\\) directory `.+'\n\\)+"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
380 "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
381
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
382 (defvar compilation-mode-font-lock-keywords
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
383 '(;; configure output lines.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
384 ("^[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
385 (1 font-lock-variable-name-face)
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
386 (2 (compilation-face '(4 . 3))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
387 ;; Command output lines. Recognize `make[n]:' lines too.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
388 ("^\\([[:alnum:]_/.+-]+\\)\\(\\[\\([0-9]+\\)\\]\\)?[ \t]*:"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
389 (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
390 (" --?o\\(?:utfile\\|utput\\)?[= ]?\\(\\S +\\)" . 1)
64943
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
391 ("^Compilation \\(finished\\)"
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
392 (1 compilation-info-face))
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
393 ("^Compilation \\(exited abnormally\\|interrupt\\|killed\\|terminated\\)\\(?:.*with code \\([0-9]+\\)\\)?"
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
394 (1 compilation-error-face)
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
395 (2 compilation-error-face nil t)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
396 "Additional things to highlight in Compilation mode.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
397 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
398
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
399 (defvar compilation-highlight-regexp t
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
400 "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
401 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
402
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
403 (defvar compilation-highlight-overlay nil
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
404 "Overlay used to temporarily highlight compilation matches.")
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
405
23263
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
406 (defcustom compilation-error-screen-columns t
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
407 "*If non-nil, column numbers in error messages are screen columns.
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
408 Otherwise they are interpreted as character positions, with
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
409 each character occupying one column.
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
410 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
411 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
412 especially the TAB character."
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
413 :type 'boolean
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
414 :group 'compilation
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
415 :version "20.4")
03626baa368a (compilation-error-screen-columns): New
Andreas Schwab <schwab@suse.de>
parents: 23228
diff changeset
416
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
417 (defcustom compilation-read-command t
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
418 "*Non-nil means \\[compile] reads the compilation command to use.
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
419 Otherwise, \\[compile] just uses the value of `compile-command'."
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
420 :type 'boolean
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
421 :group 'compilation)
5406
d9a58377567c (compilation-read-command, compilation-ask-about-save): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 5260
diff changeset
422
19766
0790c7dab24d (compilation-ask-about-save): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 19616
diff changeset
423 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
424 (defcustom compilation-ask-about-save t
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
425 "*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
426 Otherwise, it saves all modified buffers without asking."
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
427 :type 'boolean
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
428 :group 'compilation)
5406
d9a58377567c (compilation-read-command, compilation-ask-about-save): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 5260
diff changeset
429
569
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
430 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
431 (defcustom compilation-search-path '(nil)
569
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
432 "*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
433 Elements should be directory names, not file names of directories.
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
434 nil as an element means to try the default directory."
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
435 :type '(repeat (choice (const :tag "Default" nil)
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
436 (string :tag "Directory")))
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
437 :group 'compilation)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
438
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
439 ;;;###autoload
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
440 (defcustom compile-command "make -k "
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
441 "*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
442
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 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
444 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
445
19007
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
446 (add-hook 'c-mode-hook
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
447 (lambda ()
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
448 (unless (or (file-exists-p \"makefile\")
1606d5205bbc (compile-command): More doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 18987
diff changeset
449 (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
450 (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
451 (concat \"make -k \"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
452 (file-name-sans-extension buffer-file-name))))))"
17639
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
453 :type 'string
5339baa0a334 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17623
diff changeset
454 :group 'compilation)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
456 ;;;###autoload
65055
0b9598224a95 (compilation-disable-input): Default to nil.
Richard M. Stallman <rms@gnu.org>
parents: 65052
diff changeset
457 (defcustom compilation-disable-input nil
65052
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
458 "*If non-nil, send end-of-file as compilation process input.
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
459 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
460 `start-process'); synchronous compilation processes never accept input."
65052
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
461 :type 'boolean
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
462 :group 'compilation
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
463 :version "22.1")
4ac20fef0d09 (compilation-disable-input): New defcustom.
Eli Zaretskii <eliz@gnu.org>
parents: 64993
diff changeset
464
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
465 ;; 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
466 ;; value is a FILE-STRUCTURE as described above, with the car eq to the hash
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
467 ;; key. This holds the tree seen from root, for storing new nodes.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
468 (defvar compilation-locs ())
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
469
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
470 (defvar compilation-debug nil
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
471 "*Set this to t before creating a *compilation* buffer.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
472 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
473 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
474
12920
905444ab8d92 (compilation-exit-message-function): New variable.
Roland McGrath <roland@gnu.org>
parents: 12767
diff changeset
475 (defvar compilation-exit-message-function nil "\
905444ab8d92 (compilation-exit-message-function): New variable.
Roland McGrath <roland@gnu.org>
parents: 12767
diff changeset
476 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
477 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
478 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
479 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
480
52061
d11e55dcc374 2003-07-28 Tak Ota <Takaaki.Ota@am.sony.com> (tiny change)
John Paul Wallington <jpw@pobox.com>
parents: 51797
diff changeset
481 (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
482 "*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
483 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
484 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
485 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
486
864
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
487 ;; History of compile commands.
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
488 (defvar compile-history nil)
fe5f6b7c9727 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 846
diff changeset
489
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
490 (defface compilation-error
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
491 '((t :inherit font-lock-warning-face))
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
492 "Face used to highlight compiler errors."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
493 :group 'compilation
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
494 :version "22.1")
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
495
63196
72620d384ae2 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-367
Miles Bader <miles@gnu.org>
parents: 63057
diff changeset
496 (defface compilation-warning
55603
706a50524d5f (compilation-warning-face, compilation-info-face): Use min-colors.
Eli Zaretskii <eliz@gnu.org>
parents: 55553
diff changeset
497 '((((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
498 (((class color)) (:foreground "cyan" :weight bold))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
499 (t (:weight bold)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
500 "Face used to highlight compiler warnings."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
501 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
502 :version "22.1")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
503
63196
72620d384ae2 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-367
Miles Bader <miles@gnu.org>
parents: 63057
diff changeset
504 (defface compilation-info
56877
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
505 '((((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
506 (: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
507 (((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
508 (:foreground "Green1" :weight bold))
56877
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
509 (((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
510 (:foreground "Green" :weight bold))
706a50524d5f (compilation-warning-face, compilation-info-face): Use min-colors.
Eli Zaretskii <eliz@gnu.org>
parents: 55553
diff changeset
511 (((class color)) (:foreground "green" :weight bold))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
512 (t (:weight bold)))
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
513 "Face used to highlight compiler information."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
514 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
515 :version "22.1")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
516
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
517 (defface compilation-line-number
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
518 '((t :inherit font-lock-variable-name-face))
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
519 "Face for displaying line numbers in compiler messages."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
520 :group 'compilation
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
521 :version "22.1")
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
522
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
523 (defface compilation-column-number
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
524 '((t :inherit font-lock-type-face))
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
525 "Face for displaying column numbers in compiler messages."
65734
77732e123c4e (compilation-error, compilation-warning)
Juri Linkov <juri@jurta.org>
parents: 65695
diff changeset
526 :group 'compilation
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
527 :version "22.1")
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
528
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
529 (defvar compilation-message-face 'underline
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
530 "Face name to use for whole messages.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
531 Faces `compilation-error-face', `compilation-warning-face',
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
532 `compilation-info-face', `compilation-line-face' and
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
533 `compilation-column-face' get prepended to this, when applicable.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
534
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
535 (defvar compilation-error-face 'compilation-error
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
536 "Face name to use for file name in error messages.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
537
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
538 (defvar compilation-warning-face 'compilation-warning
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
539 "Face name to use for file name in warning messages.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
540
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
541 (defvar compilation-info-face 'compilation-info
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
542 "Face name to use for file name in informational messages.")
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
543
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
544 (defvar compilation-line-face 'compilation-line-number
64863
2838cf662e70 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64739
diff changeset
545 "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
546
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
547 (defvar compilation-column-face 'compilation-column-number
64739
acd7896a76ba (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64727
diff changeset
548 "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
549
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
550 ;; same faces as dired uses
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
551 (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
552 "Face name to use for entering directory messages.")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
553
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
554 (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
555 "Face name to use for leaving directory messages.")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
556
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
557
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
558
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
559 ;; 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
560 (defvaralias 'compilation-last-buffer 'next-error-last-buffer)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
561 (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
562 (defvar compilation-parse-errors-function nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
563 (defvar compilation-error-list nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
564 (defvar compilation-old-error-list nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
565
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
566 (defun compilation-face (type)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
567 (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
568 (and (cdr type) (match-end (cdr type)) compilation-info-face)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
569 compilation-error-face))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
570
60353
ee6146798de1 Add comment for compilation-directory-properties.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 59996
diff changeset
571 ;; 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
572 ;; 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
573 ;; 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
574 ;; lines are relative to the top of the stack.
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
575 (defun compilation-directory-properties (idx leave)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
576 (if leave (setq leave (match-end leave)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
577 ;; 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
578 (let ((dir (previous-single-property-change (point) 'directory)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
579 (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
580 (get-text-property dir 'directory))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
581 `(face ,(if leave
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
582 compilation-leave-directory-face
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
583 compilation-enter-directory-face)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
584 directory ,(if leave
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
585 (or (cdr dir)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
586 '(nil)) ; nil only isn't a property-change
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
587 (cons (match-string-no-properties idx) dir))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
588 mouse-face highlight
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
589 keymap compilation-button-map
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
590 help-echo "mouse-2: visit current directory")))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
591
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
592 ;; Data type `reverse-ordered-alist' retriever. This function retrieves the
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
593 ;; 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
594 ;; present. ALIST structure is
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
595 ;; '(ANCHOR (KEY1 ...) (KEY2 ...)... (KEYn ALIST ...))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
596 ;; ANCHOR is ignored, but necessary so that elements can be inserted. KEY1
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
597 ;; may be nil. The other KEYs are ordered backwards so that growing line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
598 ;; 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
599 ;; list on average.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
600 (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
601 (defmacro compilation-assq (key alist)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
602 `(let* ((l1 ,alist)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
603 (l2 (cdr l1)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
604 (car (if (if (null ,key)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
605 (if l2 (null (caar l2)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
606 (while (if l2 (if (caar l2) (< ,key (caar l2)) t))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
607 (setq l1 l2
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
608 l2 (cdr l1)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
609 (if l2 (eq ,key (caar l2))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
610 l2
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
611 (setcdr l1 (cons (list ,key) l2)))))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
612
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
613
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
614 ;; 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
615 ;; all information needed to later jump to corresponding source code.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
616 ;; 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
617
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
618 (defun compilation-error-properties (file line end-line col end-col type fmt)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
619 (unless (< (next-single-property-change (match-beginning 0) 'directory nil (point))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
620 (point))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
621 (if file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
622 (if (functionp file)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
623 (setq file (funcall file))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
624 (let (dir)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
625 (setq file (match-string-no-properties file))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
626 (unless (file-name-absolute-p file)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
627 (setq dir (previous-single-property-change (point) 'directory)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
628 dir (if dir (or (get-text-property (1- dir) 'directory)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
629 (get-text-property dir 'directory)))))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
630 (setq file (cons file (car dir)))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
631 ;; 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
632 (let ((prev-pos
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
633 ;; Find the previous message.
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
634 (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
635 (if prev-pos
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
636 ;; 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
637 (let* ((prev
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
638 (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
639 (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
640 (prev-struct
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
641 (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
642 ;; 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
643 (if prev-struct
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
644 (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
645 (cadr prev-struct))))))
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
646 (unless file
e78a07e4c513 (compilation-error-properties): When getting the file from the
Richard M. Stallman <rms@gnu.org>
parents: 65680
diff changeset
647 (setq file '("*unknown*")))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
648 ;; 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
649 ;; it matched some part of the message.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
650 (and line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
651 (setq line (match-string-no-properties line))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
652 (setq line (string-to-number line)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
653 (and end-line
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
654 (setq end-line (match-string-no-properties end-line))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
655 (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
656 (if col
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
657 (if (functionp col)
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
658 (setq col (funcall col))
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
659 (and
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
660 (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
661 (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
662 (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
663 (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
664 (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
665 (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
666 (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
667 (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
668 (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
669 (and (cdr type) (match-end (cdr type)) 0)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
670 2)))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
671 (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
672
58244
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
673 (defun compilation-move-to-column (col screen)
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
674 "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
675 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
676 just char-counts."
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
677 (if screen
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
678 (move-to-column col)
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
679 (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
680
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
681 (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
682 "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
683 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
684 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
685 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
686 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
687 (See `compilation-error-regexp-alist'.)"
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
688 (unless file (setq file '("*unknown*")))
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
689 (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
690 ;; 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
691 ;; 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
692 (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
693 (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
694 (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
695 end-marker loc end-loc)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
696 (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
697 (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
698 (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
699 (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
700 (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
701 (if (> (car x) loc) ; still bigger
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
702 (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
703 (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
704 (- 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
705 (setq marker-line x))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
706 (throw 'marker t))))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
707 (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
708 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
709 (with-current-buffer (marker-buffer marker)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
710 (save-restriction
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
711 (widen)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
712 (goto-char (marker-position marker))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
713 (when (or end-col end-line)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
714 (beginning-of-line (- (or end-line line) marker-line -1))
58227
d7757127f475 (compilation-internal-error-properties):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58031
diff changeset
715 (if (or (null end-col) (< end-col 0))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
716 (end-of-line)
58244
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
717 (compilation-move-to-column
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
718 end-col compilation-error-screen-columns))
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
719 (setq end-marker (list (point-marker))))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
720 (beginning-of-line (if end-line
58227
d7757127f475 (compilation-internal-error-properties):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58031
diff changeset
721 (- line end-line -1)
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
722 (- loc marker-line -1)))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
723 (if col
58244
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
724 (compilation-move-to-column
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
725 col compilation-error-screen-columns)
55007
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
726 (forward-to-indentation 0))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
727 (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
728
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
729 (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
730 (if end-line
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
731 (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
732 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
733 (if end-col ; use same line element
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
734 (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
735 (setq loc (compilation-assq col loc))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
736 ;; 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
737 (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
738 (if end-loc
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
739 (or (cdr end-loc)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
740 (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
741
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
742 ;; Must start with face
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
743 `(face ,compilation-message-face
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
744 message (,loc ,type ,end-loc)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
745 ,@(if compilation-debug
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
746 `(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
747 ,@(match-data))))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
748 help-echo ,(if col
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
749 "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
750 (if line
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
751 "mouse-2: visit this file and line"
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
752 "mouse-2: visit this file"))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
753 keymap compilation-button-map
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
754 mouse-face highlight)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
755
17056
0f7992bc968f Rewrite Font Lock support.
Simon Marshall <simon@gnu.org>
parents: 17054
diff changeset
756 (defun compilation-mode-font-lock-keywords ()
0f7992bc968f Rewrite Font Lock support.
Simon Marshall <simon@gnu.org>
parents: 17054
diff changeset
757 "Return expressions to highlight in Compilation mode."
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
758 (if compilation-parse-errors-function
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
759 ;; An old package! Try the compatibility code.
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
760 '((compilation-compat-parse-errors))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
761 (append
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
762 ;; make directory tracking
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
763 (if compilation-directory-matcher
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
764 `((,(car compilation-directory-matcher)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
765 ,@(mapcar (lambda (elt)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
766 `(,(car elt)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
767 (compilation-directory-properties
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
768 ,(car elt) ,(cdr elt))
61760
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
769 t t))
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
770 (cdr compilation-directory-matcher)))))
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
771
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
772 ;; Compiler warning/error lines.
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
773 (mapcar
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
774 (lambda (item)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
775 (if (symbolp item)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
776 (setq item (cdr (assq item
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
777 compilation-error-regexp-alist-alist))))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
778 (let ((file (nth 1 item))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
779 (line (nth 2 item))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
780 (col (nth 3 item))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
781 (type (nth 4 item))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
782 end-line end-col fmt)
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
783 (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
784 (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
785 (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
786
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
787 (if (functionp line)
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
788 ;; 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
789 ;; 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
790 ;; error location. Let's do our best.
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
791 `(,(car item)
61760
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
792 (0 (save-match-data
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
793 (compilation-compat-error-properties
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
794 (funcall ',line (cons (match-string ,file)
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
795 (cons default-directory
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
796 ',(nthcdr 4 item)))
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
797 ,(if col `(match-string ,col))))))
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
798 (,file compilation-error-face t))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
799
55080
b8afe141e350 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55068
diff changeset
800 (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
801 (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
802
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
803 `(,(nth 0 item)
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
804
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
805 ,@(when (integerp file)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
806 `((,file ,(if (consp type)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
807 `(compilation-face ',type)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
808 (aref [compilation-info-face
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
809 compilation-warning-face
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
810 compilation-error-face]
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
811 (or type 2))))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
812
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
813 ,@(when line
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
814 `((,line compilation-line-face nil t)))
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
815 ,@(when end-line
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
816 `((,end-line compilation-line-face nil t)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
817
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
818 ,@(when (integerp col)
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
819 `((,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
820 ,@(when (integerp end-col)
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
821 `((,end-col compilation-column-face nil t)))
54747
bdc00a83ecd1 Require CL.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54742
diff changeset
822
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
823 ,@(nthcdr 6 item)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
824 (,(or (nth 5 item) 0)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
825 (compilation-error-properties ',file ,line ,end-line
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
826 ,col ,end-col ',(or type 2)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
827 ',fmt)
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
828 append))))) ; for compilation-message-face
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
829 compilation-error-regexp-alist)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
830
54761
8fd08fa510b6 (compilation-mode-font-lock-keywords):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54747
diff changeset
831 compilation-mode-font-lock-keywords)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
832
12920
905444ab8d92 (compilation-exit-message-function): New variable.
Roland McGrath <roland@gnu.org>
parents: 12767
diff changeset
833
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
834 ;;;###autoload
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
835 (defun compile (command &optional comint)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
836 "Compile the program including the current buffer. Default: run `make'.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
837 Runs COMMAND, a shell command, in a separate process asynchronously
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
838 with output going to the buffer `*compilation*'.
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
839
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
840 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
841 `compilation-shell-minor-mode'.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
842
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
843 You can then use the command \\[next-error] to find the next error message
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
844 and move to the source code that caused it.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
845
9888
9d7972f4657c (compile): With prefix arg, prompt even if (not compilation-read-command).
Roland McGrath <roland@gnu.org>
parents: 9868
diff changeset
846 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
847 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
848 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
849 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
850
51797
7ea30d8ab42d (compile-auto-highlight): Default now t.
Richard M. Stallman <rms@gnu.org>
parents: 51452
diff changeset
851 To run more than one compilation at once, start one and rename
7ea30d8ab42d (compile-auto-highlight): Default now t.
Richard M. Stallman <rms@gnu.org>
parents: 51452
diff changeset
852 the \`*compilation*' buffer to some other name with
7ea30d8ab42d (compile-auto-highlight): Default now t.
Richard M. Stallman <rms@gnu.org>
parents: 51452
diff changeset
853 \\[rename-buffer]. Then start the next one. On most systems,
7ea30d8ab42d (compile-auto-highlight): Default now t.
Richard M. Stallman <rms@gnu.org>
parents: 51452
diff changeset
854 termination of the main compilation process kills its
7ea30d8ab42d (compile-auto-highlight): Default now t.
Richard M. Stallman <rms@gnu.org>
parents: 51452
diff changeset
855 subprocesses.
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
856
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
857 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
858 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
859 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
860 (interactive
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
861 (list
58031
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
862 (let ((command (eval compile-command)))
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
863 (if (or compilation-read-command current-prefix-arg)
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
864 (read-from-minibuffer "Compile command: "
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
865 command nil nil
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
866 (if (equal (car compile-history) command)
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
867 '(compile-history . 1)
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
868 'compile-history))
65d3c6f26162 (compile): Don't overwrite last command in minibuffer history
Juri Linkov <juri@jurta.org>
parents: 57731
diff changeset
869 command))
55513
6bdc57e42324 (compile): Add universal prefix arg.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55325
diff changeset
870 (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
871 (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
872 (setq compile-command command))
5406
d9a58377567c (compilation-read-command, compilation-ask-about-save): New variables.
Richard M. Stallman <rms@gnu.org>
parents: 5260
diff changeset
873 (save-some-buffers (not compilation-ask-about-save) nil)
53978
227623e374e8 (compilation-directory): New defvar.
Eli Zaretskii <eliz@is.elta.co.il>
parents: 53493
diff changeset
874 (setq compilation-directory default-directory)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
875 (compilation-start command comint))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
876
38493
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
877 ;; run compile with the default command line
8425
8b8835f1630a Set up a "Compile" menubar item.
Richard M. Stallman <rms@gnu.org>
parents: 8406
diff changeset
878 (defun recompile ()
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
879 "Re-compile the program including the current buffer.
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
880 If this is run in a Compilation mode buffer, re-use the arguments from the
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
881 original use. Otherwise, recompile using `compile-command'."
8425
8b8835f1630a Set up a "Compile" menubar item.
Richard M. Stallman <rms@gnu.org>
parents: 8406
diff changeset
882 (interactive)
8b8835f1630a Set up a "Compile" menubar item.
Richard M. Stallman <rms@gnu.org>
parents: 8406
diff changeset
883 (save-some-buffers (not compilation-ask-about-save) nil)
56877
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
884 (let ((default-directory
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
885 (or (and (not (eq major-mode (nth 1 compilation-arguments)))
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
886 compilation-directory)
e2576d47dd53 (compilation-buffer-name): Compare major
Juri Linkov <juri@jurta.org>
parents: 56864
diff changeset
887 default-directory)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
888 (apply 'compilation-start (or compilation-arguments
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
889 `(,(eval compile-command))))))
12256
e50e5d419c51 (grep-null-device): Defined.
Richard M. Stallman <rms@gnu.org>
parents: 12219
diff changeset
890
20877
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
891 (defcustom compilation-scroll-output nil
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
892 "*Non-nil to scroll the *compilation* buffer window as output appears.
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
893
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
894 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
895 end of their output window so that the end of the output is always
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
896 visible rather than the beginning."
20877
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
897 :type 'boolean
22291
7c8d8ad75d43 (compilation-scroll-output): Correct the :version
Karl Heuer <kwzh@gnu.org>
parents: 22208
diff changeset
898 :version "20.3"
20877
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
899 :group 'compilation)
4b22b9a5bd8e (compilation-scroll-output): New variable.
Dave Love <fx@gnu.org>
parents: 20187
diff changeset
900
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
901
65783
a2cbf1cc9c6d (compilation-buffer-name): New arg MODE-COMMAND.
Richard M. Stallman <rms@gnu.org>
parents: 65734
diff changeset
902 (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
903 "Return the name of a compilation buffer to use.
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
904 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
905 to determine the buffer name.
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
906 Likewise if `compilation-buffer-name-function' is non-nil.
65783
a2cbf1cc9c6d (compilation-buffer-name): New arg MODE-COMMAND.
Richard M. Stallman <rms@gnu.org>
parents: 65734
diff changeset
907 If current buffer is the mode MODE-COMMAND,
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
908 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
909 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
910 (cond (name-function
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
911 (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
912 (compilation-buffer-name-function
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
913 (funcall compilation-buffer-name-function mode-name))
65783
a2cbf1cc9c6d (compilation-buffer-name): New arg MODE-COMMAND.
Richard M. Stallman <rms@gnu.org>
parents: 65734
diff changeset
914 ((and (eq mode-command major-mode)
a2cbf1cc9c6d (compilation-buffer-name): New arg MODE-COMMAND.
Richard M. Stallman <rms@gnu.org>
parents: 65734
diff changeset
915 (eq major-mode (nth 1 compilation-arguments)))
39602
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
916 (buffer-name))
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
917 (t
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
918 (concat "*" (downcase mode-name) "*"))))
8c4c4c89b007 (compilation-buffer-name): New function.
Gerd Moellmann <gerd@gnu.org>
parents: 39599
diff changeset
919
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
920 ;; 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
921 ;; compile is complete.
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
922 (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
923 &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
924 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
925 enter-regexp-alist leave-regexp-alist
47300
5128d5a8980c (compile-internal): Add optional argument no-async.
Colin Walters <walters@gnu.org>
parents: 46344
diff changeset
926 file-regexp-alist nomessage-regexp-alist
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
927 no-async highlight-regexp local-map)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
928 (if parser
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
929 (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
930 (let ((compilation-error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
931 (append file-regexp-alist (or error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
932 compilation-error-regexp-alist)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
933 (compilation-error (replace-regexp-in-string "^No more \\(.+\\)s\\.?"
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
934 "\\1" error-message)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
935 (compilation-start command nil name-function highlight-regexp)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
936 (make-obsolete 'compile-internal 'compilation-start)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
937
65175
0ef9e8908562 * progmodes/compile.el (compilation-start): Add autoload cookie.
Romain Francoise <romain@orebokech.com>
parents: 65162
diff changeset
938 ;;;###autoload
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
939 (defun compilation-start (command &optional mode name-function highlight-regexp)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
940 "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
941 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
942 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
943
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
944 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
945 may also be t meaning use `compilation-shell-minor-mode' under `comint-mode'.
65162
217750047c30 (compilation-start): Doc fix.
Romain Francoise <romain@orebokech.com>
parents: 65070
diff changeset
946 If NAME-FUNCTION is non-nil, call it with one argument (the mode name)
217750047c30 (compilation-start): Doc fix.
Romain Francoise <romain@orebokech.com>
parents: 65070
diff changeset
947 to determine the buffer name.
47300
5128d5a8980c (compile-internal): Add optional argument no-async.
Colin Walters <walters@gnu.org>
parents: 46344
diff changeset
948
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
949 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
950 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
951 global value of `compilation-highlight-regexp'.
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
952
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
953 Returns the compilation buffer created."
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
954 (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
955 (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
956 (if (eq mode t)
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
957 (prog1 "compilation" (require 'comint))
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
958 (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
959 (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
960 outwin outbuf)
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
961 (with-current-buffer
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
962 (setq outbuf
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
963 (get-buffer-create
65783
a2cbf1cc9c6d (compilation-buffer-name): New arg MODE-COMMAND.
Richard M. Stallman <rms@gnu.org>
parents: 65734
diff changeset
964 (compilation-buffer-name name-of-mode mode name-function)))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
965 (let ((comp-proc (get-buffer-process (current-buffer))))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
966 (if comp-proc
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
967 (if (or (not (eq (process-status comp-proc) 'run))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
968 (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
969 (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
970 name-of-mode)))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
971 (condition-case ()
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
972 (progn
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
973 (interrupt-process comp-proc)
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
974 (sit-for 1)
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
975 (delete-process comp-proc))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
976 (error nil))
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
977 (error "Cannot have two processes in `%s' at once"
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
978 (buffer-name)))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
979 (buffer-disable-undo (current-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
980 ;; 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
981 (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
982 ;; 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
983 ;; 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
984 (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
985 (default-directory thisdir))
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
986 ;; Then evaluate a cd command if any, but don't perform it yet, else start-command
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
987 ;; would do it again through the shell: (cd "..") AND sh -c "cd ..; make"
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
988 (cd (if (string-match "^\\s *cd\\(?:\\s +\\(\\S +?\\)\\)?\\s *[;&\n]" command)
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
989 (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
990 (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
991 "~")
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
992 default-directory))
63057
3949ec3f5f5a (compilation-start): Move `erase-buffer' up
Juri Linkov <juri@jurta.org>
parents: 62964
diff changeset
993 (erase-buffer)
62859
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
994 ;; 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
995 (if (not (eq mode t))
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
996 (funcall mode)
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
997 (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
998 (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
999 (compilation-shell-minor-mode))
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1000 (if highlight-regexp
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1001 (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
1002 highlight-regexp))
c18eb4cd2ef7 (compilation-start): Set the mode before inserting the initial text.
Richard M. Stallman <rms@gnu.org>
parents: 62527
diff changeset
1003 ;; 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
1004 (insert "-*- mode: " name-of-mode
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1005 "; default-directory: " (prin1-to-string default-directory)
64926
37347aa3aaae (compilation-start): Add the line "Compilation started" with compilation
Eli Zaretskii <eliz@gnu.org>
parents: 64863
diff changeset
1006 " -*-\n"
64943
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
1007 (format "%s started at %s\n\n"
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
1008 mode-name
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
1009 (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
1010 command "\n")
63057
3949ec3f5f5a (compilation-start): Move `erase-buffer' up
Juri Linkov <juri@jurta.org>
parents: 62964
diff changeset
1011 (setq thisdir default-directory))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1012 (set-buffer-modified-p nil))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1013 ;; If we're already in the compilation buffer, go to the end
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1014 ;; of the buffer, so point will track the compilation output.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1015 (if (eq outbuf (current-buffer))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1016 (goto-char (point-max)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1017 ;; Pop up the compilation buffer.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1018 (setq outwin (display-buffer outbuf nil t))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1019 (with-current-buffer outbuf
57530
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1020 (let ((process-environment
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1021 (append
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1022 compilation-environment
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1023 (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
1024 system-uses-terminfo)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1025 (list "TERM=dumb" "TERMCAP="
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1026 (format "COLUMNS=%d" (window-width)))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1027 (list "TERM=emacs"
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1028 (format "TERMCAP=emacs:co#%d:tc=unknown:"
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1029 (window-width))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1030 ;; Set the EMACS variable, but
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1031 ;; don't override users' setting of $EMACS.
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1032 (unless (getenv "EMACS") '("EMACS=t"))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1033 (copy-sequence process-environment))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1034 (set (make-local-variable 'compilation-arguments)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1035 (list command mode name-function highlight-regexp))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1036 (set (make-local-variable 'revert-buffer-function)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1037 'compilation-revert-buffer)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1038 (set-window-start outwin (point-min))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1039 (or (eq outwin (selected-window))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1040 (set-window-point outwin (if compilation-scroll-output
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1041 (point)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1042 (point-min))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1043 ;; 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
1044 ;; 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
1045 (if compilation-process-setup-function
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1046 (funcall compilation-process-setup-function))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1047 (compilation-set-window-height outwin)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1048 ;; Start the compilation.
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1049 (if (fboundp 'start-process)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1050 (let ((proc (if (eq mode t)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1051 (get-buffer-process
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1052 (with-no-warnings
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1053 (comint-exec outbuf (downcase mode-name)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1054 shell-file-name nil `("-c" ,command))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1055 (start-process-shell-command (downcase mode-name)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1056 outbuf command))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1057 ;; Make the buffer's mode line show process state.
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1058 (setq mode-line-process '(":%s"))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1059 (set-process-sentinel proc 'compilation-sentinel)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1060 (set-process-filter proc 'compilation-filter)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1061 (set-marker (process-mark proc) (point) outbuf)
65316
d2d6a76016a7 (compilation-start): Ignore errors if the process died before we send eof.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65228
diff changeset
1062 (when compilation-disable-input
d2d6a76016a7 (compilation-start): Ignore errors if the process died before we send eof.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65228
diff changeset
1063 (condition-case nil
d2d6a76016a7 (compilation-start): Ignore errors if the process died before we send eof.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65228
diff changeset
1064 (process-send-eof proc)
d2d6a76016a7 (compilation-start): Ignore errors if the process died before we send eof.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65228
diff changeset
1065 ;; The process may have exited already.
d2d6a76016a7 (compilation-start): Ignore errors if the process died before we send eof.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65228
diff changeset
1066 (error nil)))
57530
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1067 (setq compilation-in-progress
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1068 (cons proc compilation-in-progress)))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1069 ;; No asynchronous processes available.
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1070 (message "Executing `%s'..." command)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1071 ;; Fake modeline display as if `start-process' were run.
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1072 (setq mode-line-process ":run")
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1073 (force-mode-line-update)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1074 (sit-for 0) ; Force redisplay
59773
1ffd5f5591a2 (compilation-start): Bind buffer-read-only to nil before
Eli Zaretskii <eliz@gnu.org>
parents: 59116
diff changeset
1075 (let* ((buffer-read-only nil) ; call-process needs to modify outbuf
1ffd5f5591a2 (compilation-start): Bind buffer-read-only to nil before
Eli Zaretskii <eliz@gnu.org>
parents: 59116
diff changeset
1076 (status (call-process shell-file-name nil outbuf nil "-c"
1ffd5f5591a2 (compilation-start): Bind buffer-read-only to nil before
Eli Zaretskii <eliz@gnu.org>
parents: 59116
diff changeset
1077 command)))
57530
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1078 (cond ((numberp status)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1079 (compilation-handle-exit 'exit status
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1080 (if (zerop status)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1081 "finished\n"
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1082 (format "\
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1083 exited abnormally with code %d\n"
57530
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1084 status))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1085 ((stringp status)
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1086 (compilation-handle-exit 'signal status
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1087 (concat status "\n")))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1088 (t
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1089 (compilation-handle-exit 'bizarre status status))))
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1090 ;; Without async subprocesses, the buffer is not yet
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1091 ;; fontified, so fontify it now.
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1092 (let ((font-lock-verbose nil)) ; shut up font-lock messages
2aec2ccb618b (compilation-start): Move let-binding of
Juri Linkov <juri@jurta.org>
parents: 57517
diff changeset
1093 (font-lock-fontify-buffer))
59773
1ffd5f5591a2 (compilation-start): Bind buffer-read-only to nil before
Eli Zaretskii <eliz@gnu.org>
parents: 59116
diff changeset
1094 (set-buffer-modified-p nil)
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
1095 (message "Executing `%s'...done" command)))
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1096 ;; Now finally cd to where the shell started make/grep/...
cce8a9fe7de8 (compilation-start): Rely on `cd' to get dir right and also allow argumentless cd.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 57600
diff changeset
1097 (setq default-directory thisdir))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1098 (if (buffer-local-value 'compilation-scroll-output outbuf)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1099 (save-selected-window
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1100 (select-window outwin)
54424
6ea174960a93 (compilation-start): Always set compilation-last-buffer and return it.
Kim F. Storm <storm@cua.dk>
parents: 54368
diff changeset
1101 (goto-char (point-max))))
6ea174960a93 (compilation-start): Always set compilation-last-buffer and return it.
Kim F. Storm <storm@cua.dk>
parents: 54368
diff changeset
1102 ;; 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
1103 (setq next-error-last-buffer outbuf)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1104
8483
19dbc8373bec (compilation-set-window-height): New function,
Richard M. Stallman <rms@gnu.org>
parents: 8425
diff changeset
1105 (defun compilation-set-window-height (window)
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1106 "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
1107 (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
1108 (and height
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1109 (= (window-width window) (frame-width (window-frame window)))
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1110 ;; 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
1111 ;; don't change its height.
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1112 (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
1113 ;; 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
1114 (save-excursion
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1115 (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
1116 (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
1117 (enlarge-window (- height (window-height))))))))
8483
19dbc8373bec (compilation-set-window-height): New function,
Richard M. Stallman <rms@gnu.org>
parents: 8425
diff changeset
1118
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1119 (defvar compilation-menu-map
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1120 (let ((map (make-sparse-keymap "Errors")))
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1121 (define-key map [stop-subjob]
48835
750e9e67d3e9 (compilation-menu-map): Use `kill-compilation' to stop compilation.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48721
diff changeset
1122 '("Stop Compilation" . kill-compilation))
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1123 (define-key map [compilation-mode-separator2]
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1124 '("----" . nil))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1125 (define-key map [compilation-first-error]
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1126 '("First Error" . first-error))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1127 (define-key map [compilation-previous-error]
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1128 '("Previous Error" . previous-error))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1129 (define-key map [compilation-next-error]
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1130 '("Next Error" . next-error))
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1131 map))
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1132
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1133 (defvar compilation-minor-mode-map
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1134 (let ((map (make-sparse-keymap)))
54856
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1135 (define-key map [mouse-2] 'compile-goto-error)
59025
ad6398d47add (compilation-minor-mode-map)
Kim F. Storm <storm@cua.dk>
parents: 58503
diff changeset
1136 (define-key map [follow-link] 'mouse-face)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1137 (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
1138 (define-key map "\C-m" 'compile-goto-error)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1139 (define-key map "\C-c\C-k" 'kill-compilation)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1140 (define-key map "\M-n" 'compilation-next-error)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1141 (define-key map "\M-p" 'compilation-previous-error)
946
ef045ff2cb94 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 936
diff changeset
1142 (define-key map "\M-{" 'compilation-previous-file)
ef045ff2cb94 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 936
diff changeset
1143 (define-key map "\M-}" 'compilation-next-file)
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1144 ;; Set up the menu-bar
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1145 (define-key map [menu-bar compilation]
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1146 (cons "Errors" compilation-menu-map))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1147 map)
2760
1c7595e3089b (Setting minor-mode-map-alist):
Richard M. Stallman <rms@gnu.org>
parents: 2603
diff changeset
1148 "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
1149
17623
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1150 (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
1151 (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
1152 (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
1153 (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
1154 (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
1155 (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
1156 (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
1157 ;; Set up the menu-bar
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1158 (define-key map [menu-bar compilation]
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1159 (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
1160 map)
a09fd9348b0d Support compilers that give a message each time the file being
Richard M. Stallman <rms@gnu.org>
parents: 17582
diff changeset
1161 "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
1162
54875
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1163 (defvar compilation-button-map
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1164 (let ((map (make-sparse-keymap)))
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1165 (define-key map [mouse-2] 'compile-goto-error)
59025
ad6398d47add (compilation-minor-mode-map)
Kim F. Storm <storm@cua.dk>
parents: 58503
diff changeset
1166 (define-key map [follow-link] 'mouse-face)
54875
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1167 (define-key map "\C-m" 'compile-goto-error)
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1168 map)
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1169 "Keymap for compilation-message buttons.")
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1170 (fset 'compilation-button-map compilation-button-map)
21c1ccea9533 (compilation-button-map): New keymap.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54868
diff changeset
1171
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1172 (defvar compilation-mode-map
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1173 (let ((map (make-sparse-keymap)))
58503
dc83ecc1ac97 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 58491
diff changeset
1174 ;; Don't inherit from compilation-minor-mode-map,
dc83ecc1ac97 *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 58491
diff changeset
1175 ;; 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
1176 ;; 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
1177 (define-key map [mouse-2] 'compile-goto-error)
59025
ad6398d47add (compilation-minor-mode-map)
Kim F. Storm <storm@cua.dk>
parents: 58503
diff changeset
1178 (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
1179 (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
1180 (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
1181 (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
1182 (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
1183 (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
1184 (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
1185 (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
1186 (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
1187 (define-key map [backtab] 'compilation-previous-error)
58491
2a47737d91b0 (compilation-mode-map): Don't inherit from compilation-minor-mode-map;
Richard M. Stallman <rms@gnu.org>
parents: 58445
diff changeset
1188
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1189 (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
1190 (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
1191 (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
1192
8425
8b8835f1630a Set up a "Compile" menubar item.
Richard M. Stallman <rms@gnu.org>
parents: 8406
diff changeset
1193 ;; 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
1194 (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
1195 (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
1196 (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
1197 (set-keymap-parent submap compilation-menu-map))
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1198 (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
1199 '("----" . nil))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1200 (define-key map [menu-bar compilation compilation-grep]
64943
0734dceb92d1 (compilation-mode-font-lock-keywords):
Juri Linkov <juri@jurta.org>
parents: 64926
diff changeset
1201 '("Search Files (grep)..." . grep))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1202 (define-key map [menu-bar compilation compilation-recompile]
8425
8b8835f1630a Set up a "Compile" menubar item.
Richard M. Stallman <rms@gnu.org>
parents: 8406
diff changeset
1203 '("Recompile" . recompile))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1204 (define-key map [menu-bar compilation compilation-compile]
17057
e54588a6cea9 Add ... to relevant menu entries.
Simon Marshall <simon@gnu.org>
parents: 17056
diff changeset
1205 '("Compile..." . compile))
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1206 map)
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1207 "Keymap for compilation log buffers.
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1208 `compilation-minor-mode-map' is a parent of this.")
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1209
17653
b7810d4fb620 (compilation-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17639
diff changeset
1210 (put 'compilation-mode 'mode-class 'special)
b7810d4fb620 (compilation-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 17639
diff changeset
1211
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1212 (defvar compilation-skip-to-next-location t
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1213 "*If non-nil, skip multiple error messages for the same source location.")
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1214
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1215 (defcustom compilation-skip-threshold 1
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1216 "*Compilation motion commands skip less important messages.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1217 The value can be either 2 -- skip anything less than error, 1 --
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1218 skip anything less than warning or 0 -- don't skip any messages.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1219 Note that all messages not positively identified as warning or
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1220 info, are considered errors."
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1221 :type '(choice (const :tag "Warnings and info" 2)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1222 (const :tag "Info" 1)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1223 (const :tag "None" 0))
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1224 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
1225 :version "22.1")
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1226
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1227 (defcustom compilation-skip-visited nil
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1228 "*Compilation motion commands skip visited messages if this is t.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1229 Visited messages are ones for which the file, line and column have been jumped
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1230 to from the current content in the current compilation buffer, even if it was
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1231 from a different message."
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1232 :type 'boolean
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1233 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
1234 :version "22.1")
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1235
13755
5f7ea59f14b6 (compilation-mode): Add autoload cookie.
Roland McGrath <roland@gnu.org>
parents: 13540
diff changeset
1236 ;;;###autoload
57517
7a899182458c (compilation-start): Assume compilation-mode will make the buffer read-only.
Richard M. Stallman <rms@gnu.org>
parents: 57067
diff changeset
1237 (defun compilation-mode (&optional name-of-mode)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1238 "Major mode for compilation log buffers.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1239 \\<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
1240 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
1241 To kill the compilation, type \\[kill-compilation].
505a9721e442 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 474
diff changeset
1242
64194
76fced56e97e (compilation-mode-hook, compilation-mode): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 64085
diff changeset
1243 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
1244
fb266772e0e7 (compilation-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 56154
diff changeset
1245 \\{compilation-mode-map}"
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1246 (interactive)
9376
f0ac347309e2 (compilation-mode-font-lock-keywords): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 8976
diff changeset
1247 (kill-all-local-variables)
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1248 (use-local-map compilation-mode-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
1249 (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
1250 mode-name (or name-of-mode "Compilation"))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1251 (set (make-local-variable 'page-delimiter)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1252 compilation-page-delimiter)
2603
f80a342fd945 Add compilation-minor-mode to minor-mode-alist and minor-mode-map-alist.
Roland McGrath <roland@gnu.org>
parents: 2478
diff changeset
1253 (compilation-setup)
58256
02a1d74082fd (compilation-setup): Don't set buffer-read-only.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58244
diff changeset
1254 (setq buffer-read-only t)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1255 (run-mode-hooks 'compilation-mode-hook))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1256
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1257 (defmacro define-compilation-mode (mode name doc &rest body)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1258 "This is like `define-derived-mode' without the PARENT argument.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1259 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
1260 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
1261 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
1262 `grep-scroll-output' if that variable exists."
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1263 (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
1264 `(define-derived-mode ,mode compilation-mode ,name
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1265 ,doc
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1266 ,@(mapcar (lambda (v)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1267 (setq v (cons v
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1268 (intern-soft (replace-regexp-in-string
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1269 "^compilation" mode-name
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1270 (symbol-name v)))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1271 (and (cdr v)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1272 (or (boundp (cdr v))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1273 (if (boundp 'byte-compile-bound-variables)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1274 (memq (cdr v) byte-compile-bound-variables)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1275 `(set (make-local-variable ',(car v)) ,(cdr v))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1276 '(compilation-buffer-name-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1277 compilation-directory-matcher
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1278 compilation-error
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1279 compilation-error-regexp-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1280 compilation-error-regexp-alist-alist
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1281 compilation-error-screen-columns
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1282 compilation-finish-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1283 compilation-finish-functions
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1284 compilation-first-column
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1285 compilation-mode-font-lock-keywords
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1286 compilation-page-delimiter
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1287 compilation-parse-errors-filename-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1288 compilation-process-setup-function
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1289 compilation-scroll-output
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1290 compilation-search-path
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1291 compilation-skip-threshold
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1292 compilation-window-height))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1293 ,@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
1294
17866
7d458582345c (compilation-parse-errors): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 17653
diff changeset
1295 (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
1296 (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
1297 (let (revert-buffer-function)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1298 (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
1299 (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
1300 (apply 'compilation-start compilation-arguments))))
17866
7d458582345c (compilation-parse-errors): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 17653
diff changeset
1301
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1302 (defvar compilation-current-error nil
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1303 "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
1304 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
1305
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1306 (defvar compilation-messages-start nil
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1307 "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
1308 If nil, use the beginning of buffer.")
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1309
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1310 ;; 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
1311 (defconst compilation-turn-on-font-lock 'turn-on-font-lock)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1312
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1313 (defun compilation-setup (&optional minor)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1314 "Prepare the buffer for the compilation parsing commands to work.
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1315 Optional argument MINOR indicates this is called from
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1316 `compilation-minor-mode'."
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1317 (make-local-variable 'compilation-current-error)
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1318 (make-local-variable 'compilation-messages-start)
30688
f0a91dd9685b (compilation-setup): Make variable
Gerd Moellmann <gerd@gnu.org>
parents: 29121
diff changeset
1319 (make-local-variable 'compilation-error-screen-columns)
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1320 (make-local-variable 'overlay-arrow-position)
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1321 (set (make-local-variable 'overlay-arrow-string) "")
61362
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1322 (setq next-error-overlay-arrow-position nil)
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1323 (add-hook 'kill-buffer-hook
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1324 (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
1325 ;; 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
1326 ;; 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
1327 ;; coincidentally named similarly to compilation-next-error.
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1328 (setq next-error-function 'compilation-next-error-function)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1329 (set (make-local-variable 'font-lock-extra-managed-props)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1330 '(directory message help-echo mouse-face debug))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1331 (set (make-local-variable 'compilation-locs)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1332 (make-hash-table :test 'equal :weakness 'value))
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1333 ;; 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
1334 ;; 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
1335 (set (make-local-variable 'font-lock-support-mode) nil)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1336 (set (make-local-variable 'font-lock-maximum-size) nil)
54742
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1337 (let ((fld font-lock-defaults))
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1338 (if (and minor fld)
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1339 (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
1340 (setq font-lock-defaults '(compilation-mode-font-lock-keywords t)))
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1341 (if minor
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1342 (if font-lock-mode
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1343 (if fld
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1344 (font-lock-fontify-buffer)
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1345 (font-lock-change-mode)
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1346 (turn-on-font-lock))
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1347 (turn-on-font-lock))
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1348 ;; maybe defer font-lock till after derived mode is set up
0a2de4900b34 (compilation-warning-face, compilation-info-face, compilation-skip-threshold)
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54700
diff changeset
1349 (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
1350
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1351 ;;;###autoload
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1352 (define-minor-mode compilation-shell-minor-mode
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1353 "Toggle compilation shell minor mode.
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1354 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
1355 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
1356 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
1357 collide with Shell mode. See `compilation-mode'.
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1358 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
1359 nil " Shell-Compile"
48400
e57b9088b4a1 (compilation-shell-minor-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48279
diff changeset
1360 :group 'compilation
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1361 (if compilation-shell-minor-mode
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1362 (compilation-setup t)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1363 (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1364 (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
1365
4445
a1e412873732 (compilation-minor-mode): Make variable buffer-local.
Roland McGrath <roland@gnu.org>
parents: 4350
diff changeset
1366 ;;;###autoload
48204
1ee4b312fef0 (grep-default-command): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48197
diff changeset
1367 (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
1368 "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
1369 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
1370 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
1371 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
1372 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
1373 nil " Compilation"
48400
e57b9088b4a1 (compilation-shell-minor-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48279
diff changeset
1374 :group 'compilation
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1375 (if compilation-minor-mode
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1376 (compilation-setup t)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1377 (font-lock-remove-keywords nil (compilation-mode-font-lock-keywords))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1378 (font-lock-fontify-buffer)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1379
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1380 (defun compilation-handle-exit (process-status exit-status msg)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1381 "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
1382 (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
1383 (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
1384 (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
1385 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
1386 (cons msg exit-status)))
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1387 (omax (point-max))
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1388 (opoint (point)))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1389 ;; 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
1390 (goto-char omax)
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1391 (insert ?\n mode-name " " (car status))
44209
9501986a69c8 (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 44139
diff changeset
1392 (if (and (numberp compilation-window-height)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1393 (zerop compilation-window-height))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1394 (message "%s" (cdr status)))
24558
ea8a9509b52f (compilation-handle-exit): Do right thing
Richard M. Stallman <rms@gnu.org>
parents: 24326
diff changeset
1395 (if (bolp)
ea8a9509b52f (compilation-handle-exit): Do right thing
Richard M. Stallman <rms@gnu.org>
parents: 24326
diff changeset
1396 (forward-char -1))
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1397 (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
1398 (goto-char (point-max))
42939
0786ea38f9fd (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 42408
diff changeset
1399 ;; Prevent that message from being recognized as a compilation error.
0786ea38f9fd (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 42408
diff changeset
1400 (add-text-properties omax (point)
0786ea38f9fd (compilation-handle-exit):
Richard M. Stallman <rms@gnu.org>
parents: 42408
diff changeset
1401 (append '(compilation-handle-exit t) nil))
14260
4577848d3ef2 (compilation-handle-exit): Undo previous change.
Karl Heuer <kwzh@gnu.org>
parents: 14250
diff changeset
1402 (setq mode-line-process (format ":%s [%s]" process-status (cdr status)))
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1403 ;; 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
1404 (force-mode-line-update)
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1405 (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
1406 (goto-char opoint))
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1407 (with-no-warnings
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1408 (if compilation-finish-function
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1409 (funcall compilation-finish-function (current-buffer) msg)))
16042
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
1410 (let ((functions compilation-finish-functions))
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
1411 (while functions
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
1412 (funcall (car functions) (current-buffer) msg)
18414e324084 (compilation-finish-functions): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15084
diff changeset
1413 (setq functions (cdr functions))))))
14045
1300c7703f67 (compilation-handle-exit): New function, broken out of compilation-sentinel.
Roland McGrath <roland@gnu.org>
parents: 13972
diff changeset
1414
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1415 ;; Called when compilation process changes state.
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1416 (defun compilation-sentinel (proc msg)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1417 "Sentinel for compilation buffers."
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1418 (if (memq (process-status proc) '(exit signal))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1419 (let ((buffer (process-buffer proc)))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1420 (if (null (buffer-name buffer))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1421 ;; buffer killed
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1422 (set-process-buffer proc nil)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1423 (with-current-buffer buffer
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1424 ;; Write something in the compilation buffer
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1425 ;; and hack its mode line.
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1426 (compilation-handle-exit (process-status proc)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1427 (process-exit-status proc)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1428 msg)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1429 ;; 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
1430 ;; 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
1431 ;; will stay around until M-x list-processes.
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1432 (delete-process proc)))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1433 (setq compilation-in-progress (delq proc compilation-in-progress)))))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1434
2472
f911936cec3f (compilation-filter): New function.
Roland McGrath <roland@gnu.org>
parents: 2471
diff changeset
1435 (defun compilation-filter (proc string)
f911936cec3f (compilation-filter): New function.
Roland McGrath <roland@gnu.org>
parents: 2471
diff changeset
1436 "Process filter for compilation buffers.
2760
1c7595e3089b (Setting minor-mode-map-alist):
Richard M. Stallman <rms@gnu.org>
parents: 2603
diff changeset
1437 Just inserts the text, but uses `insert-before-markers'."
9511
3b5dbd9c44f5 (compilation-filter): Do nothing if buffer is dead.
Richard M. Stallman <rms@gnu.org>
parents: 9473
diff changeset
1438 (if (buffer-name (process-buffer proc))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1439 (with-current-buffer (process-buffer proc)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1440 (let ((inhibit-read-only t))
9511
3b5dbd9c44f5 (compilation-filter): Do nothing if buffer is dead.
Richard M. Stallman <rms@gnu.org>
parents: 9473
diff changeset
1441 (save-excursion
3b5dbd9c44f5 (compilation-filter): Do nothing if buffer is dead.
Richard M. Stallman <rms@gnu.org>
parents: 9473
diff changeset
1442 (goto-char (process-mark proc))
3b5dbd9c44f5 (compilation-filter): Do nothing if buffer is dead.
Richard M. Stallman <rms@gnu.org>
parents: 9473
diff changeset
1443 (insert-before-markers string)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1444 (run-hooks 'compilation-filter-hook))))))
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1445
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1446 ;;; 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
1447 (defsubst compilation-buffer-internal-p ()
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1448 "Test if inside a compilation buffer."
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1449 (local-variable-p 'compilation-locs))
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1450
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1451 ;;; 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
1452 (defsubst compilation-buffer-p (buffer)
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1453 "Test if BUFFER is a compilation buffer."
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1454 (with-current-buffer buffer
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1455 (compilation-buffer-internal-p)))
5472
ed690a728e13 (compilation-buffer-p): Move defsubst before all callers.
Roland McGrath <roland@gnu.org>
parents: 5456
diff changeset
1456
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1457 (defmacro compilation-loop (< property-change 1+ error)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1458 `(while (,< n 0)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1459 (or (setq pt (,property-change pt 'message))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1460 (error ,error compilation-error))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1461 ;; prop 'message usually has 2 changes, on and off, so re-search if off
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1462 (or (setq msg (get-text-property pt 'message))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1463 (if (setq pt (,property-change pt 'message))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1464 (setq msg (get-text-property pt 'message)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1465 (error ,error compilation-error))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1466 (or (< (cadr msg) compilation-skip-threshold)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1467 (if different-file
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1468 (eq (prog1 last (setq last (nth 2 (car msg))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1469 last))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1470 (if compilation-skip-visited
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1471 (nthcdr 4 (car msg)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1472 (if compilation-skip-to-next-location
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1473 (eq (car msg) loc))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1474 ;; count this message only if none of the above are true
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1475 (setq n (,1+ n)))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1476
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1477 (defun compilation-next-error (n &optional different-file pt)
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1478 "Move point to the next error in the compilation buffer.
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1479 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
1480 backwards, if negative).
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1481 Does NOT find the source line like \\[next-error]."
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1482 (interactive "p")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1483 (or (compilation-buffer-p (current-buffer))
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1484 (error "Not in a compilation buffer"))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1485 (or pt (setq pt (point)))
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1486 (let* ((msg (get-text-property pt 'message))
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1487 (loc (car msg))
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1488 last)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1489 (if (zerop n)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1490 (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
1491 (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
1492 'message)))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1493 (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
1494 (line-beginning-position)))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1495 (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
1496 (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
1497 (line-end-position)))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1498 (or (setq msg (get-text-property pt 'message))
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1499 (setq pt (point)))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1500 (setq last (nth 2 (car msg)))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1501 (if (>= n 0)
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1502 (compilation-loop > next-single-property-change 1-
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1503 (if (get-buffer-process (current-buffer))
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1504 "No more %ss yet"
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1505 "Moved past last %s"))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1506 ;; 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
1507 ;; 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
1508 (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
1509 (compilation-loop < previous-single-property-change 1+
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1510 "Moved back before first %s")))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1511 (goto-char pt)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1512 (or msg
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1513 (error "No %s here" compilation-error))))
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1514
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1515 (defun compilation-previous-error (n)
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1516 "Move point to the previous error in the compilation buffer.
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1517 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
1518 forwards, if negative).
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1519 Does NOT find the source line like \\[previous-error]."
894
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1520 (interactive "p")
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1521 (compilation-next-error (- n)))
41507a5a8fd7 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 885
diff changeset
1522
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1523 (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
1524 "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
1525 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
1526 (interactive "p")
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1527 (compilation-next-error n t))
920
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1528
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1529 (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
1530 "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
1531 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
1532 (interactive "p")
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1533 (compilation-next-file (- n)))
7b984ce24013 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 907
diff changeset
1534
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1535 (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
1536 "Kill the process made by the \\[compile] or \\[grep] commands."
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1537 (interactive)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1538 (let ((buffer (compilation-find-buffer)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1539 (if (get-buffer-process buffer)
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1540 (interrupt-process (get-buffer-process buffer))
65070
5a147188ccac (compilation-disable-input): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 65055
diff changeset
1541 (error "The %s process is not running" (downcase mode-name)))))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1542
54856
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1543 (defalias 'compile-mouse-goto-error 'compile-goto-error)
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1544
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1545 (defun compile-goto-error (&optional event)
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1546 "Visit the source for the error message at point.
6a45f159f315 (compilation-minor-mode-map)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54854
diff changeset
1547 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
1548 (interactive (list last-input-event))
54868
a50d004dc072 (compile-goto-error): Use it.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54857
diff changeset
1549 (if event (posn-set-point (event-end event)))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1550 (or (compilation-buffer-p (current-buffer))
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1551 (error "Not in a compilation buffer"))
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1552 (if (get-text-property (point) 'directory)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1553 (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
1554 (push-mark)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1555 (setq compilation-current-error (point))
65788
cbc600deccb5 (compile-goto-error): Delete extra paren.
Romain Francoise <romain@orebokech.com>
parents: 65783
diff changeset
1556 (next-error-internal)))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1557
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1558 ;; Return a compilation buffer.
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1559 ;; If the current buffer is a compilation buffer, return it.
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1560 ;; Otherwise, look for a compilation buffer and signal an error
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1561 ;; if there are none.
59116
dc790c155f8a (compilation-find-buffer): Rename arg.
Richard M. Stallman <rms@gnu.org>
parents: 59025
diff changeset
1562 (defun compilation-find-buffer (&optional avoid-current)
dc790c155f8a (compilation-find-buffer): Rename arg.
Richard M. Stallman <rms@gnu.org>
parents: 59025
diff changeset
1563 (next-error-find-buffer avoid-current 'compilation-buffer-internal-p))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1564
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1565 ;;;###autoload
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1566 (defun compilation-next-error-function (n &optional reset)
63815
015343385a78 (compilation-next-error-function):
Richard M. Stallman <rms@gnu.org>
parents: 63299
diff changeset
1567 "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
1568 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
1569 (interactive "p")
55068
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1570 (when reset
0cdcedeb25c5 From: Teodor Zlatanov <tzz@lifelogs.com>
Kim F. Storm <storm@cua.dk>
parents: 55007
diff changeset
1571 (setq compilation-current-error nil))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1572 (let* ((columns compilation-error-screen-columns) ; buffer's local value
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1573 (last 1)
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1574 (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
1575 (or compilation-current-error
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1576 compilation-messages-start
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1577 (point-min))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1578 (end-loc (nth 2 loc))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1579 (marker (point-marker)))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1580 (setq compilation-current-error (point-marker)
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1581 overlay-arrow-position
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1582 (if (bolp)
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1583 compilation-current-error
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1584 (copy-marker (line-beginning-position)))
54676
69f903f9844f C-x ` fixes
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54611
diff changeset
1585 loc (car loc))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1586 ;; If loc contains no marker, no error in that file has been visited. If
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1587 ;; the marker is invalid the buffer has been killed. So, recalculate all
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1588 ;; markers for that file.
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
1589 (unless (and (nth 3 loc) (marker-buffer (nth 3 loc)))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1590 (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
1591 (cadr (car (nth 2 loc))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1592 (save-restriction
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1593 (widen)
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1594 (goto-char (point-min))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1595 ;; 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
1596 (dolist (line (reverse (cddr (nth 2 loc))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1597 (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
1598 (beginning-of-line (- (car line) last -1))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1599 (setq last (car line)))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1600 ;; 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
1601 (dolist (col (cdr line))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1602 (if (car col)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1603 (if (eq (car col) -1) ; special case for range end
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1604 (end-of-line)
58244
1c84cc19e954 (compilation-move-to-column): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58227
diff changeset
1605 (compilation-move-to-column (car col) columns))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1606 (beginning-of-line)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1607 (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
1608 (if (nth 3 col)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1609 (set-marker (nth 3 col) (point))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1610 (setcdr (nthcdr 2 col) `(,(point-marker)))))))))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1611 (compilation-goto-locus marker (nth 3 loc) (nth 3 end-loc))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1612 (setcdr (nthcdr 3 loc) t))) ; Set this one as visited.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1613
55324
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1614 (defvar compilation-gcpro nil
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1615 "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
1616 (make-variable-buffer-local 'compilation-gcpro)
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1617
54939
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
1618 (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
1619 "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
1620 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
1621 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
1622 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
1623 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
1624 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
1625
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
1626 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
1627 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
1628 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
1629 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
1630
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
1631 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
1632 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
1633 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
1634 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
1635 (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
1636 (setq file (compilation-get-file-structure file))
55324
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1637 ;; Between the current call to compilation-fake-loc and the first occurrence
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1638 ;; of an error message referring to `file', the data is only kept is the
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1639 ;; 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
1640 ;; in compilation-locs from being GC'd away. --Stef
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1641 (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
1642 (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
1643 (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
1644 (if (cdr loc)
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
1645 (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
1646 (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
1647 loc))
9c3e575d5a2b (compilation-error-properties): Fix for adding messages when there are already
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54875
diff changeset
1648
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1649 (defcustom compilation-context-lines nil
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1650 "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
1651 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
1652 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
1653 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
1654 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
1655 :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
1656 :group 'compilation
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59773
diff changeset
1657 :version "22.1")
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1658
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1659 (defsubst compilation-set-window (w mk)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1660 "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
1661 (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
1662 (set-window-start w (save-excursion
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1663 (goto-char mk)
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1664 (beginning-of-line
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1665 (- 1 compilation-context-lines))
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1666 (point)))
62518
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
1667 ;; If there is no left fringe.
88b93ce112d1 (compilation-finish-function): Mark obsolete.
Richard M. Stallman <rms@gnu.org>
parents: 62381
diff changeset
1668 (if (equal (car (window-fringes)) 0)
62381
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1669 (set-window-start w (save-excursion
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1670 (goto-char mk)
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1671 (beginning-of-line 1)
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1672 (point)))))
30c05755e6b5 (compilation-setup): Set local value of
Nick Roberts <nickrob@snap.net.nz>
parents: 62158
diff changeset
1673 (set-window-point w mk))
418
21a228b6a238 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 71
diff changeset
1674
61760
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1675 (defvar next-error-highlight-timer)
51f159119616 (next-error-highlight-timer): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 61425
diff changeset
1676
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1677 (defun compilation-goto-locus (msg mk end-mk)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1678 "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
1679 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
1680 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
1681 ;; 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
1682 (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
1683 (marker-buffer msg)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1684 ;; 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
1685 (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
1686 (w (if (and from-compilation-buffer pre-existing)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1687 ;; 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
1688 ;; 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
1689 ;; 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
1690 pre-existing
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1691 (let ((display-buffer-reuse-frames t)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1692 (pop-up-windows t))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1693 ;; Pop up a window.
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1694 (display-buffer (marker-buffer msg)))))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1695 (highlight-regexp (with-current-buffer (marker-buffer msg)
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1696 ;; also do this while we change buffer
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1697 (compilation-set-window w msg)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1698 compilation-highlight-regexp)))
65338
4bc5f5d3e625 (compilation-goto-locus): Take into account
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65316
diff changeset
1699 ;; 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
1700 ;; 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
1701 ;; creating a new window.
4bc5f5d3e625 (compilation-goto-locus): Take into account
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65316
diff changeset
1702 (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
1703
66119
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1704 (if from-compilation-buffer
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1705 ;; If the compilation buffer window was selected,
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1706 ;; keep the compilation buffer in this window;
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1707 ;; display the source in another window.
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1708 (let ((pop-up-windows t))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1709 (pop-to-buffer (marker-buffer mk) 'other-window))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1710 (if (window-dedicated-p (selected-window))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1711 (pop-to-buffer (marker-buffer mk))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1712 (switch-to-buffer (marker-buffer mk))))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1713 ;; If narrowing gets in the way of going to the right place, widen.
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1714 (unless (eq (goto-char mk) (point))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1715 (widen)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1716 (goto-char mk))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1717 (if end-mk
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1718 (push-mark end-mk t)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1719 (if mark-active (setq mark-active)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1720 ;; If hideshow got in the way of
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1721 ;; seeing the right place, open permanently.
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1722 (dolist (ov (overlays-at (point)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1723 (when (eq 'hs (overlay-get ov 'invisible))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1724 (delete-overlay ov)
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1725 (goto-char mk)))
bc2d2dc9f534 (compilation-goto-locus): Display the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 65788
diff changeset
1726
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
1727 (when highlight-regexp
61071
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
1728 (if (timerp next-error-highlight-timer)
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
1729 (cancel-timer next-error-highlight-timer))
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1730 (unless compilation-highlight-overlay
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1731 (setq compilation-highlight-overlay
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1732 (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
1733 (overlay-put compilation-highlight-overlay 'face 'next-error))
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1734 (with-current-buffer (marker-buffer mk)
53140
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1735 (save-excursion
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
1736 (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
1737 (let ((end (point)))
56880
6bb35c70240a (compilation-error-properties): Allow to funcall col and end-col.
Juri Linkov <juri@jurta.org>
parents: 56877
diff changeset
1738 (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
1739 (if (and (stringp highlight-regexp)
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1740 (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
1741 (progn
00845c3bc4e4 (grep-command, grep-use-null-device)
Kim F. Storm <storm@cua.dk>
parents: 52892
diff changeset
1742 (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
1743 (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
1744 (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
1745 (current-buffer)))
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
1746 (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
1747 (point) end (current-buffer)))
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
1748 (if (numberp next-error-highlight)
61071
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
1749 (setq next-error-highlight-timer
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
1750 (run-at-time next-error-highlight nil 'delete-overlay
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
1751 compilation-highlight-overlay)))
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
1752 (if (not (or (eq next-error-highlight t)
e779ff0ee192 (compilation-goto-locus):
Juri Linkov <juri@jurta.org>
parents: 60353
diff changeset
1753 (numberp next-error-highlight)))
56864
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
1754 (delete-overlay compilation-highlight-overlay))))))
c77183f170cf (compilation-goto-locus): Use `next-error' face instead of `region'.
Juri Linkov <juri@jurta.org>
parents: 56687
diff changeset
1755 (when (and (eq next-error-highlight 'fringe-arrow))
61362
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1756 (setq next-error-overlay-arrow-position
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1757 (copy-marker (line-beginning-position))))))
0c7ec8f85244 (compilation-setup):
Juri Linkov <juri@jurta.org>
parents: 61071
diff changeset
1758
6240
5ce2192f76e1 (compile-reinitialize-errors): Rename first arg from ARGP to REPARSE.
Roland McGrath <roland@gnu.org>
parents: 6197
diff changeset
1759
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1760 (defun compilation-find-file (marker filename directory &rest formats)
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1761 "Find a buffer for file FILENAME.
30878
13a1a0ec31e5 (grep): Provide a default set of files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30688
diff changeset
1762 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
1763 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
1764 \"current\" directory, which is passed in DIRECTORY.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1765 If DIRECTORY. is relative, it is combined with `default-directory'.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1766 If DIRECTORY. is nil, that means use `default-directory'.
26222
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1767 If FILENAME is not found at all, ask the user where to find it.
35c7eab893ab Checkdoc-inspired fixes.
Dave Love <fx@gnu.org>
parents: 25623
diff changeset
1768 Pop up the buffer containing MARKER and scroll to MARKER if we ask the user."
10928
a008a9d8966a (compilation-buffer-p): Fix braino in last change: switch to the buffer first.
Roland McGrath <roland@gnu.org>
parents: 10842
diff changeset
1769 (or formats (setq formats '("%s")))
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1770 (save-excursion
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1771 (let ((dirs compilation-search-path)
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1772 (spec-dir (if directory
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1773 (expand-file-name directory)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1774 default-directory))
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1775 buffer thisdir fmts name)
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1776 (if (file-name-absolute-p filename)
38493
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1777 ;; The file name is absolute. Use its explicit directory as
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1778 ;; the first in the search path, and strip it from FILENAME.
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1779 (setq filename (abbreviate-file-name (expand-file-name filename))
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1780 dirs (cons (file-name-directory filename) dirs)
864c2b4076f8 (compilation-parse-errors): `linenum' might return a this-error using
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38412
diff changeset
1781 filename (file-name-nondirectory filename)))
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1782 ;; Now search the path.
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1783 (while (and dirs (null buffer))
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1784 (setq thisdir (or (car dirs) spec-dir)
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1785 fmts formats)
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1786 ;; For each directory, try each format string.
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1787 (while (and fmts (null buffer))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1788 (setq name (expand-file-name (format (car fmts) filename) thisdir)
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1789 buffer (and (file-exists-p name)
30878
13a1a0ec31e5 (grep): Provide a default set of files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 30688
diff changeset
1790 (find-file-noselect name))
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1791 fmts (cdr fmts)))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1792 (setq dirs (cdr dirs)))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1793 (or buffer
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1794 ;; The file doesn't exist. Ask the user where to find it.
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1795 (let ((pop-up-windows t))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1796 (compilation-set-window (display-buffer (marker-buffer marker))
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1797 marker)
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1798 (let ((name (expand-file-name
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1799 (read-file-name
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65451
diff changeset
1800 (format "Find this %s in (default %s): "
65070
5a147188ccac (compilation-disable-input): Doc fix.
Juri Linkov <juri@jurta.org>
parents: 65055
diff changeset
1801 compilation-error filename)
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1802 spec-dir filename t))))
26990
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1803 (if (file-directory-p name)
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1804 (setq name (expand-file-name filename name)))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1805 (setq buffer (and (file-exists-p name)
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1806 (find-file name))))))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1807 ;; Make intangible overlays tangible.
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1808 (mapcar (function (lambda (ov)
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1809 (when (overlay-get ov 'intangible)
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1810 (overlay-put ov 'intangible nil))))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1811 (overlays-in (point-min) (point-max)))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1812 buffer)))
5d153e0fe112 (compilation-goto-locus): Delete hideshow overlays if they interfere.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 26488
diff changeset
1813
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1814 (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
1815 "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
1816 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
1817 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
1818
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1819 The file-structure looks like this:
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1820 (list (list FILENAME [DIR-FROM-PREV-MSG]) FMT LINE-STRUCT...)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1821 "
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1822 (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
1823 ;; 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
1824 ;; 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
1825 (let ((filename (car file))
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1826 ;; Get the specified directory from FILE.
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1827 (spec-directory (if (cdr file)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1828 (file-truename (cdr file)))))
46324
d992f5698971 (compilation-normalize-filename):
Richard M. Stallman <rms@gnu.org>
parents: 45829
diff changeset
1829
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1830 ;; 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
1831 ;; (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
1832 ;; buffer.)
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1833 (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
1834 (not (equal comint-file-name-prefix "")))
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1835 (if (file-name-absolute-p filename)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1836 (setq filename
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1837 (concat comint-file-name-prefix filename))
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1838 (if spec-directory
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1839 (setq spec-directory
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1840 (file-truename
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1841 (concat comint-file-name-prefix spec-directory))))))
71
a35b34e246fe Initial revision
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1842
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1843 ;; 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
1844 ;; 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
1845 (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
1846 (setq filename
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1847 (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
1848 filename)))
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1849
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1850 ;; 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
1851 ;; 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
1852 ;; 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
1853 ;; 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
1854 ;; 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
1855 (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
1856
55131
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1857 ;; 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
1858 (puthash file
2a263df48184 (compilation-error-regexp-alist-alist): Also recognize severe Irix et al. messages.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 55080
diff changeset
1859 ;; Retrieve or create file-structure for normalized name
65451
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1860 (or (gethash (list filename) compilation-locs)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1861 (puthash (list filename)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1862 (list (list filename spec-directory) fmt)
c1b85b32abab Don't decide a file's directory
Richard M. Stallman <rms@gnu.org>
parents: 65338
diff changeset
1863 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
1864 compilation-locs))))
3940
aa9f37730d77 (compile-abbreviate-directory): New function.
Richard M. Stallman <rms@gnu.org>
parents: 3875
diff changeset
1865
54361
63ef4a00326a (compile-auto-highlight)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53978
diff changeset
1866 (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
1867
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1868 ;;; Compatibility with the old compile.el.
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1869
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1870 (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
1871
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1872 (defun compilation-compat-error-properties (err)
54941
2f96b3c58e6d Doc fixes.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54939
diff changeset
1873 "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
1874 ;; 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
1875 ;; (MARKER . MARKER).
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1876 (let ((dst (cdr err)))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1877 (if (markerp dst)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1878 ;; 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
1879 `(face nil
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1880 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
1881 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
1882 keymap compilation-button-map
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1883 mouse-face highlight)
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1884 ;; 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
1885 (let* ((file (pop dst))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1886 (line (pop dst))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1887 (col (pop dst))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1888 (filename (pop file))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1889 (dirname (pop file))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1890 (fmt (pop file)))
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1891 (compilation-internal-error-properties
c4901d9dd86a (compilation-error-properties): Split in two.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54968
diff changeset
1892 (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
1893
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1894 (defun compilation-compat-parse-errors (limit)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1895 (when compilation-parse-errors-function
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1896 ;; 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
1897 ;; 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
1898 ;; the value right now. --stef
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1899 (save-excursion
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1900 (setq compilation-error-list nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1901 ;; 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
1902 ;; 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
1903 ;; 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
1904 ;; 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
1905 ;; 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
1906 ;; 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
1907 (if compilation-parsing-end
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1908 (set-marker compilation-parsing-end (point))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1909 (setq compilation-parsing-end (point-marker)))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1910 (condition-case nil
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1911 ;; 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
1912 ;; 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
1913 (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
1914 (error nil))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1915 (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
1916 (let* ((src (car err))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1917 (dst (cdr err))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1918 (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
1919 ((consp dst)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1920 (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
1921 (cons (cdar dst) (caar dst)))))))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1922 (when loc
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1923 (goto-char src)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1924 ;; (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
1925 (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
1926 'message (list loc 2)))))))
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1927 (goto-char limit)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1928 nil)
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1929
55299
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1930 ;; Beware: this is not only compatiblity 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
1931 (defun compilation-forget-errors ()
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1932 ;; 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
1933 ;; marker for them, so flush our cache.
54854
eb5c70ae728c (compilation-setup): Localize overlay-arrow-position.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 54833
diff changeset
1934 (setq compilation-locs (make-hash-table :test 'equal :weakness 'value))
55324
8e480ee75c47 (compilation-gcpro): New var
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55313
diff changeset
1935 (setq compilation-gcpro nil)
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1936 ;; 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
1937 ;; 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
1938 ;;
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1939 ;; 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
1940 ;; 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
1941 ;; 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
1942 ;; 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
1943 ;; packages seem to be followed by a move of compilation-parsing-end to
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1944 ;; something equivalent to point-max. So we speculatively move
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1945 ;; compilation-current-error to point-max (since the external package
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1946 ;; 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
1947 (setq compilation-current-error nil)
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1948 (let* ((proc (get-buffer-process (current-buffer)))
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1949 (mark (if proc (process-mark proc)))
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1950 (pos (or mark (point-max))))
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1951 (setq compilation-messages-start
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1952 ;; 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
1953 ;; Since many process filter functions insert before markers,
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1954 ;; 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
1955 ;; 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
1956 ;; don't use a marker. --Stef
19ff0d2ea8e8 (compilation-messages-start): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55237
diff changeset
1957 (if (> pos (point-min)) (copy-marker (1- pos)) pos))))
54700
677905e471e2 (font-lock): Don't require any more.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54676
diff changeset
1958
61425
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
1959 ;;;###autoload
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
1960 (add-to-list 'auto-mode-alist '("\\.gcov\\'" . compilation-mode))
6dfecf2a19ab * compilation.txt (symbol): Added gcov-file
Masatake YAMATO <jet@gyve.org>
parents: 61394
diff changeset
1961
621
eca8812e61cd *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 569
diff changeset
1962 (provide 'compile)
712
16823e891d56 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 621
diff changeset
1963
55325
e95e9c689608 Arch-tags shouldn't be outline headers.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55324
diff changeset
1964 ;; arch-tag: 12465727-7382-4f72-b234-79855a00dd8c
712
16823e891d56 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 621
diff changeset
1965 ;;; compile.el ends here