annotate lisp/emacs-lisp/warnings.el @ 72863:526dc1f36b09

(produce_image_glyph): Automatically crop wide images at right window edge so we can draw the cursor on the same row to avoid confusing redisplay by placing the cursor outside the visible window area.
author Kim F. Storm <storm@cua.dk>
date Thu, 14 Sep 2006 09:37:44 +0000
parents 5a0747ecd057
children 7a3f13e2dd57 2ecafc6d5db7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
1 ;;; warnings.el --- log and display warnings
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
2
68648
067115a6e738 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64751
diff changeset
3 ;; Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
4
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
5 ;; Maintainer: FSF
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
6 ;; Keywords: internal
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
7
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
8 ;; This file is part of GNU Emacs.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
9
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
10 ;; GNU Emacs is free software; you can redistribute it and/or modify
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
11 ;; it under the terms of the GNU General Public License as published by
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
13 ;; any later version.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
14
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
15 ;; GNU Emacs is distributed in the hope that it will be useful,
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
18 ;; GNU General Public License for more details.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
19
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
21 ;; 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: 63537
diff changeset
22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63537
diff changeset
23 ;; Boston, MA 02110-1301, USA.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
24
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
25 ;;; Commentary:
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
26
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
27 ;; This file implements the entry points `warn', `lwarn'
54486
34a469490568 Doc fix.
Juri Linkov <juri@jurta.org>
parents: 52401
diff changeset
28 ;; and `display-warning'.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
29
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
30 ;;; Code:
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
31
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
32 (defgroup warnings nil
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
33 "Log and display warnings."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 54486
diff changeset
34 :version "22.1"
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
35 :group 'lisp)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
36
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
37 (defvar warning-levels
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
38 '((:emergency "Emergency%s: " ding)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
39 (:error "Error%s: ")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
40 (:warning "Warning%s: ")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
41 (:debug "Debug%s: "))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
42 "List of severity level definitions for `display-warning'.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
43 Each element looks like (LEVEL STRING FUNCTION) and
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
44 defines LEVEL as a severity level. STRING specifies the
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
45 description of this level. STRING should use `%s' to
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
46 specify where to put the warning type information,
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
47 or it can omit the `%s' so as not to include that information.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
48
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
49 The optional FUNCTION, if non-nil, is a function to call
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
50 with no arguments, to get the user's attention.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
51
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
52 The standard levels are :emergency, :error, :warning and :debug.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
53 See `display-warning' for documentation of their meanings.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
54 Level :debug is ignored by default (see `warning-minimum-level').")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
55 (put 'warning-levels 'risky-local-variable t)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
56
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
57 ;; These are for compatibility with XEmacs.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
58 ;; I don't think there is any chance of designing meaningful criteria
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
59 ;; to distinguish so many levels.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
60 (defvar warning-level-aliases
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
61 '((emergency . :emergency)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
62 (error . :error)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
63 (warning . :warning)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
64 (notice . :warning)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
65 (info . :warning)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
66 (critical . :emergency)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
67 (alarm . :emergency))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
68 "Alist of aliases for severity levels for `display-warning'.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
69 Each element looks like (ALIAS . LEVEL) and defines
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
70 ALIAS as equivalent to LEVEL. LEVEL must be defined in `warning-levels';
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
71 it may not itself be an alias.")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
72
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
73 (defcustom warning-minimum-level :warning
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
74 "Minimum severity level for displaying the warning buffer.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
75 If a warning's severity level is lower than this,
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
76 the warning is logged in the warnings buffer, but the buffer
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
77 is not immediately displayed. See also `warning-minimum-log-level'."
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
78 :group 'warnings
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
79 :type '(choice (const :emergency) (const :error)
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
80 (const :warning) (const :debug))
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 54486
diff changeset
81 :version "22.1")
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
82 (defvaralias 'display-warning-minimum-level 'warning-minimum-level)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
83
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
84 (defcustom warning-minimum-log-level :warning
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
85 "Minimum severity level for logging a warning.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
86 If a warning severity level is lower than this,
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
87 the warning is completely ignored.
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
88 Value must be lower or equal than `warning-minimum-level',
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
89 because warnings not logged aren't displayed either."
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
90 :group 'warnings
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
91 :type '(choice (const :emergency) (const :error)
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
92 (const :warning) (const :debug))
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 54486
diff changeset
93 :version "22.1")
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
94 (defvaralias 'log-warning-minimum-level 'warning-minimum-log-level)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
95
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
96 (defcustom warning-suppress-log-types nil
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
97 "List of warning types that should not be logged.
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
98 If any element of this list matches the TYPE argument to `display-warning',
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
99 the warning is completely ignored.
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
100 The element must match the first elements of TYPE.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
101 Thus, (foo bar) as an element matches (foo bar)
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
102 or (foo bar ANYTHING...) as TYPE.
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
103 If TYPE is a symbol FOO, that is equivalent to the list (FOO),
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
104 so only the element (FOO) will match it."
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
105 :group 'warnings
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
106 :type '(repeat (repeat symbol))
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 54486
diff changeset
107 :version "22.1")
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
108
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
109 (defcustom warning-suppress-types nil
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
110 "List of warning types not to display immediately.
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
111 If any element of this list matches the TYPE argument to `display-warning',
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
112 the warning is logged nonetheless, but the warnings buffer is
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
113 not immediately displayed.
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
114 The element must match an initial segment of the list TYPE.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
115 Thus, (foo bar) as an element matches (foo bar)
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
116 or (foo bar ANYTHING...) as TYPE.
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
117 If TYPE is a symbol FOO, that is equivalent to the list (FOO),
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
118 so only the element (FOO) will match it.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
119 See also `warning-suppress-log-types'."
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
120 :group 'warnings
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
121 :type '(repeat (repeat symbol))
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 54486
diff changeset
122 :version "22.1")
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
123
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
124 ;;; The autoload cookie is so that programs can bind this variable
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
125 ;;; safely, testing the existing value, before they call one of the
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
126 ;;; warnings functions.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
127 ;;;###autoload
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
128 (defvar warning-prefix-function nil
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
129 "Function to generate warning prefixes.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
130 This function, if non-nil, is called with two arguments,
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
131 the severity level and its entry in `warning-levels',
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
132 and should return the entry that should actually be used.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
133 The warnings buffer is current when this function is called
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
134 and the function can insert text in it. This text becomes
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
135 the beginning of the warning.")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
136
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
137 ;;; The autoload cookie is so that programs can bind this variable
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
138 ;;; safely, testing the existing value, before they call one of the
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
139 ;;; warnings functions.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
140 ;;;###autoload
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
141 (defvar warning-series nil
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
142 "Non-nil means treat multiple `display-warning' calls as a series.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
143 A marker indicates a position in the warnings buffer
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
144 which is the start of the current series; it means that
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
145 additional warnings in the same buffer should not move point.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
146 t means the next warning begins a series (and stores a marker here).
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
147 A symbol with a function definition is like t, except
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
148 also call that function before the next warning.")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
149 (put 'warning-series 'risky-local-variable t)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
150
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
151 ;;; The autoload cookie is so that programs can bind this variable
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
152 ;;; safely, testing the existing value, before they call one of the
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
153 ;;; warnings functions.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
154 ;;;###autoload
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
155 (defvar warning-fill-prefix nil
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
156 "Non-nil means fill each warning text using this string as `fill-prefix'.")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
157
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
158 ;;; The autoload cookie is so that programs can bind this variable
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
159 ;;; safely, testing the existing value, before they call one of the
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
160 ;;; warnings functions.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
161 ;;;###autoload
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
162 (defvar warning-type-format " (%s)"
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
163 "Format for displaying the warning type in the warning message.
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
164 The result of formatting the type this way gets included in the
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
165 message under the control of the string in `warning-levels'.")
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
166
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
167 (defun warning-numeric-level (level)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
168 "Return a numeric measure of the warning severity level LEVEL."
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
169 (let* ((elt (assq level warning-levels))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
170 (link (memq elt warning-levels)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
171 (length link)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
172
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
173 (defun warning-suppress-p (type suppress-list)
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
174 "Non-nil if a warning with type TYPE should be suppressed.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
175 SUPPRESS-LIST is the list of kinds of warnings to suppress."
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
176 (let (some-match)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
177 (dolist (elt suppress-list)
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
178 (if (symbolp type)
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
179 ;; If TYPE is a symbol, the ELT must be (TYPE).
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
180 (if (and (consp elt)
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
181 (eq (car elt) type)
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
182 (null (cdr elt)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
183 (setq some-match t))
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
184 ;; If TYPE is a list, ELT must match it or some initial segment of it.
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
185 (let ((tem1 type)
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
186 (tem2 elt)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
187 (match t))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
188 ;; Check elements of ELT until we run out of them.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
189 (while tem2
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
190 (if (not (equal (car tem1) (car tem2)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
191 (setq match nil))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
192 (setq tem1 (cdr tem1)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
193 tem2 (cdr tem2)))
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
194 ;; If ELT is an initial segment of TYPE, MATCH is t now.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
195 ;; So set SOME-MATCH.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
196 (if match
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
197 (setq some-match t)))))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
198 ;; If some element of SUPPRESS-LIST matched,
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
199 ;; we return t.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
200 some-match))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
201
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
202 ;;;###autoload
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
203 (defun display-warning (type message &optional level buffer-name)
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
204 "Display a warning message, MESSAGE.
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
205 TYPE is the warning type: either a custom group name (a symbol),
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
206 or a list of symbols whose first element is a custom group name.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
207 \(The rest of the symbols represent subcategories, for warning purposes
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
208 only, and you can use whatever symbols you like.)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
209
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
210 LEVEL should be either :debug, :warning, :error, or :emergency
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
211 \(but see `warning-minimum-level' and `warning-minimum-log-level').
70324
5a0747ecd057 (display-warning, lwarn): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 68648
diff changeset
212 Default is :warning.
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
213
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
214 :emergency -- a problem that will seriously impair Emacs operation soon
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
215 if you do not attend to it promptly.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
216 :error -- data or circumstances that are inherently wrong.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
217 :warning -- data or circumstances that are not inherently wrong,
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
218 but raise suspicion of a possible problem.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
219 :debug -- info for debugging only.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
220
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
221 BUFFER-NAME, if specified, is the name of the buffer for logging the
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
222 warning. By default, it is `*Warnings*'.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
223
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
224 See the `warnings' custom group for user customization features.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
225
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
226 See also `warning-series', `warning-prefix-function' and
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
227 `warning-fill-prefix' for additional programming features."
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
228 (unless level
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
229 (setq level :warning))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
230 (if (assq level warning-level-aliases)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
231 (setq level (cdr (assq level warning-level-aliases))))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
232 (or (< (warning-numeric-level level)
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
233 (warning-numeric-level warning-minimum-log-level))
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
234 (warning-suppress-p type warning-suppress-log-types)
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
235 (let* ((typename (if (consp type) (car type) type))
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
236 (buffer (get-buffer-create (or buffer-name "*Warnings*")))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
237 (level-info (assq level warning-levels))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
238 start end)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
239 (with-current-buffer buffer
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
240 (goto-char (point-max))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
241 (when (and warning-series (symbolp warning-series))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
242 (setq warning-series
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
243 (prog1 (point-marker)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
244 (unless (eq warning-series t)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
245 (funcall warning-series)))))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
246 (unless (bolp)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
247 (newline))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
248 (setq start (point))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
249 (if warning-prefix-function
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
250 (setq level-info (funcall warning-prefix-function
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
251 level level-info)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
252 (insert (format (nth 1 level-info)
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
253 (format warning-type-format typename))
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
254 message)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
255 (newline)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
256 (when (and warning-fill-prefix (not (string-match "\n" message)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
257 (let ((fill-prefix warning-fill-prefix)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
258 (fill-column 78))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
259 (fill-region start (point))))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
260 (setq end (point))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
261 (when (and (markerp warning-series)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
262 (eq (marker-buffer warning-series) buffer))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
263 (goto-char warning-series)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
264 (if (nth 2 level-info)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
265 (funcall (nth 2 level-info)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
266 (if noninteractive
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
267 ;; Noninteractively, take the text we inserted
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
268 ;; in the warnings buffer and print it.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
269 ;; Do this unconditionally, since there is no way
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
270 ;; to view logged messages unless we output them.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
271 (with-current-buffer buffer
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
272 (save-excursion
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
273 ;; Don't include the final newline in the arg
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
274 ;; to `message', because it adds a newline.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
275 (goto-char end)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
276 (if (bolp)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
277 (forward-char -1))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
278 (message "%s" (buffer-substring start (point)))))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
279 ;; Interactively, decide whether the warning merits
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
280 ;; immediate display.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
281 (or (< (warning-numeric-level level)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
282 (warning-numeric-level warning-minimum-level))
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
283 (warning-suppress-p type warning-suppress-types)
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
284 (let ((window (display-buffer buffer)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
285 (when (and (markerp warning-series)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
286 (eq (marker-buffer warning-series) buffer))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
287 (set-window-start window warning-series))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
288 (sit-for 0)))))))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
289
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
290 ;;;###autoload
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
291 (defun lwarn (type level message &rest args)
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
292 "Display a warning message made from (format MESSAGE ARGS...).
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
293 Aside from generating the message with `format',
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
294 this is equivalent to `display-warning'.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
295
70324
5a0747ecd057 (display-warning, lwarn): Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 68648
diff changeset
296 TYPE is the warning type: either a custom group name (a symbol),
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
297 or a list of symbols whose first element is a custom group name.
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
298 \(The rest of the symbols represent subcategories and
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
299 can be whatever you like.)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
300
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
301 LEVEL should be either :debug, :warning, :error, or :emergency
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
302 \(but see `warning-minimum-level' and `warning-minimum-log-level').
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
303
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
304 :emergency -- a problem that will seriously impair Emacs operation soon
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
305 if you do not attend to it promptly.
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
306 :error -- invalid data or circumstances.
63537
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
307 :warning -- suspicious data or circumstances.
5bcd8e3411e3 (display-warning, lwarn, warning-minimum-log-level): Doc fixes.
Juanma Barranquero <lekktu@gmail.com>
parents: 59996
diff changeset
308 :debug -- info for debugging only."
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
309 (display-warning type (apply 'format message args) level))
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
310
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
311 ;;;###autoload
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
312 (defun warn (message &rest args)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
313 "Display a warning message made from (format MESSAGE ARGS...).
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
314 Aside from generating the message with `format',
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
315 this is equivalent to `display-warning', using
52134
d26709514a27 Doc fixes, args renamed.
Richard M. Stallman <rms@gnu.org>
parents: 51349
diff changeset
316 `emacs' as the type and `:warning' as the level."
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
317 (display-warning 'emacs (apply 'format message args)))
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
318
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
319 (provide 'warnings)
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
320
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 52134
diff changeset
321 ;;; arch-tag: faaad1c8-7b2a-4161-af38-5ab4afde0496
51349
dd8d7c8c6ae8 Moved from lisp/.
Juanma Barranquero <lekktu@gmail.com>
parents:
diff changeset
322 ;;; warnings.el ends here