annotate lisp/progmodes/cc-bytecomp.el @ 63308:51d38cfbe542

Warn about using "cvs up -kb" if one intends to commit changes. Add a pointer to another site with detailed configure and build instructions. Suggest to look at config.log when configure fails. Add MinGW Make 3.80 to the list of successful combinations.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 11 Jun 2005 11:31:29 +0000
parents 695cf19ef79e
children 18a818a2ee7c 375f2633d815
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
1 ;;; cc-bytecomp.el --- compile time setup for proper compilation
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
2
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
3 ;; Copyright (C) 2000, 01, 02, 03 Free Software Foundation, Inc.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
4
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
5 ;; Author: Martin Stjernholm
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
6 ;; Maintainer: bug-cc-mode@gnu.org
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
7 ;; Created: 15-Jul-2000
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
8 ;; Version: See cc-mode.el
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
9 ;; Keywords: c languages oop
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
10
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 36920
diff changeset
11 ;; This file is part of GNU Emacs.
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 36920
diff changeset
12
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 36920
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 36920
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 36920
diff changeset
16 ;; any later version.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
17
38401
64d8d90d180d Fix license commentary.
Gerd Moellmann <gerd@gnu.org>
parents: 36920
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
21 ;; GNU General Public License for more details.
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
22
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
44728
7a3ac6c387fe CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents: 38422
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to
7a3ac6c387fe CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents: 38422
diff changeset
25 ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
26 ;; Boston, MA 02111-1307, USA.
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
27
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
28 ;;; Commentary:
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
29
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
30 ;; This file is used to ensure that the CC Mode files are correctly
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
31 ;; compiled regardless the environment (e.g. if an older CC Mode with
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
32 ;; outdated macros are loaded during compilation). It also provides
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
33 ;; features to defeat the compiler warnings for selected symbols.
44728
7a3ac6c387fe CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents: 38422
diff changeset
34 ;;
7a3ac6c387fe CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents: 38422
diff changeset
35 ;; There's really nothing CC Mode specific here; this functionality
7a3ac6c387fe CC Mode update to version 5.29. This is for testing; it's not a released
Martin Stjernholm <mast@lysator.liu.se>
parents: 38422
diff changeset
36 ;; ought to be provided by the byte compilers or some accompanying
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
37 ;; library. To use it from some package "foo.el", begin by putting
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
38 ;; the following blurb at the top of the file:
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
39 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
40 ;; (eval-when-compile
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
41 ;; (let ((load-path
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
42 ;; (if (and (boundp 'byte-compile-dest-file)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
43 ;; (stringp byte-compile-dest-file))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
44 ;; (cons (file-name-directory byte-compile-dest-file) load-path)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
45 ;; load-path)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
46 ;; (load "cc-bytecomp" nil t))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
47 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
48 ;; This (unfortunately rather clumsy) form will ensure that the
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
49 ;; cc-bytecomp.el in the same directory as foo.el is loaded during
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
50 ;; byte compilation of the latter.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
51 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
52 ;; At the end of foo.el there should normally be a "(provide 'foo)".
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
53 ;; Replace it with "(cc-provide 'foo)"; that is necessary to restore
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
54 ;; the environment after the byte compilation. If you don't have a
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
55 ;; `provide' at the end, you have to add the following as the very
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
56 ;; last form in the file:
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
57 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
58 ;; (eval-when-compile (cc-bytecomp-restore-environment))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
59 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
60 ;; Now everything is set to use the various functions and macros in
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
61 ;; this package.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
62 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
63 ;; If your package is split into several files, you should use
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
64 ;; `cc-require', `cc-require-when-compile' or `cc-load' to load them.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
65 ;; That ensures that the files in the same directory always are
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
66 ;; loaded, to avoid mixup with other versions of them that might exist
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
67 ;; elsewhere in the load path.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
68 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
69 ;; To suppress byte compiler warnings, use the macros
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
70 ;; `cc-bytecomp-defun', `cc-bytecomp-defvar',
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
71 ;; `cc-bytecomp-obsolete-fun', and `cc-bytecomp-obsolete-var'.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
72 ;;
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
73 ;; This file is not used at all after the package has been byte
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
74 ;; compiled. It is however necessary when running uncompiled.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
75
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
76
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
77 ;;; Code:
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
78
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
79 (defvar cc-bytecomp-unbound-variables nil)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
80 (defvar cc-bytecomp-original-functions nil)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
81 (defvar cc-bytecomp-original-properties nil)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
82 (defvar cc-bytecomp-loaded-files nil)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
83 (defvar cc-bytecomp-environment-set nil)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
84
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
85 (defmacro cc-bytecomp-debug-msg (&rest args)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
86 ;;`(message ,@args)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
87 )
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
88
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
89 (defun cc-bytecomp-setup-environment ()
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
90 ;; Eval'ed during compilation to setup variables, functions etc
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
91 ;; declared with `cc-bytecomp-defvar' et al.
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
92 (if (not load-in-progress)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
93 ;; Look at `load-in-progress' to tell whether we're called
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
94 ;; directly in the file being compiled or just from some file
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
95 ;; being loaded during compilation.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
96 (let (p)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
97 (if cc-bytecomp-environment-set
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
98 (error "Byte compilation environment already set - \
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
99 perhaps a `cc-bytecomp-restore-environment' is forgotten somewhere"))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
100 (setq p cc-bytecomp-unbound-variables)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
101 (while p
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
102 (if (not (boundp (car p)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
103 (progn
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
104 (eval `(defvar ,(car p)))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
105 (set (car p) (intern (concat "cc-bytecomp-ignore-var:"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
106 (symbol-name (car p)))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
107 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
108 "cc-bytecomp-setup-environment: Covered variable %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
109 (car p))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
110 (setq p (cdr p)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
111 (setq p cc-bytecomp-original-functions)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
112 (while p
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
113 (let ((fun (car (car p)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
114 (temp-macro (car (cdr (car p)))))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
115 (if (not (fboundp fun))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
116 (if temp-macro
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
117 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
118 (eval `(defmacro ,fun ,@temp-macro))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
119 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
120 "cc-bytecomp-setup-environment: Bound macro %s" fun))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
121 (fset fun (intern (concat "cc-bytecomp-ignore-fun:"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
122 (symbol-name fun))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
123 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
124 "cc-bytecomp-setup-environment: Covered function %s" fun))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
125 (setq p (cdr p)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
126 (setq p cc-bytecomp-original-properties)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
127 (while p
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
128 (let ((sym (car (car (car p))))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
129 (prop (cdr (car (car p))))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
130 (tempdef (car (cdr (car p)))))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
131 (put sym prop tempdef)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
132 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
133 "cc-bytecomp-setup-environment: Bound property %s for %s to %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
134 prop sym tempdef))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
135 (setq p (cdr p)))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
136 (setq cc-bytecomp-environment-set t)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
137 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
138 "cc-bytecomp-setup-environment: Done"))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
139
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
140 (defun cc-bytecomp-restore-environment ()
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
141 ;; Eval'ed during compilation to restore variables, functions etc
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
142 ;; declared with `cc-bytecomp-defvar' et al.
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
143 (if (not load-in-progress)
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
144 (let (p)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
145 (setq p cc-bytecomp-unbound-variables)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
146 (while p
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
147 (let ((var (car p)))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
148 (if (boundp var)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
149 (if (eq (intern (concat "cc-bytecomp-ignore-var:"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
150 (symbol-name var)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
151 (symbol-value var))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
152 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
153 (makunbound var)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
154 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
155 "cc-bytecomp-restore-environment: Unbound variable %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
156 var))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
157 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
158 "cc-bytecomp-restore-environment: Not restoring variable %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
159 var))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
160 (setq p (cdr p)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
161 (setq p cc-bytecomp-original-functions)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
162 (while p
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
163 (let ((fun (car (car p)))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
164 (temp-macro (car (cdr (car p))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
165 (def (car (cdr (cdr (car p))))))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
166 (if (fboundp fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
167 (if (eq (or temp-macro
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
168 (intern (concat "cc-bytecomp-ignore-fun:"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
169 (symbol-name fun))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
170 (symbol-function fun))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
171 (if (eq def 'unbound)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
172 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
173 (fmakunbound fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
174 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
175 "cc-bytecomp-restore-environment: Unbound function %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
176 fun))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
177 (fset fun def)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
178 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
179 "cc-bytecomp-restore-environment: Restored function %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
180 fun))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
181 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
182 "cc-bytecomp-restore-environment: Not restoring function %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
183 fun))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
184 (setq p (cdr p)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
185 (setq p cc-bytecomp-original-properties)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
186 (while p
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
187 (let ((sym (car (car (car p))))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
188 (prop (cdr (car (car p))))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
189 (tempdef (car (cdr (car p))))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
190 (origdef (cdr (cdr (car p)))))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
191 (if (eq (get sym prop) tempdef)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
192 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
193 (put sym prop origdef)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
194 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
195 "cc-bytecomp-restore-environment: Restored property %s for %s to %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
196 prop sym origdef))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
197 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
198 "cc-bytecomp-restore-environment: Not restoring property %s for %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
199 prop sym)))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
200 (setq p (cdr p)))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
201 (setq cc-bytecomp-environment-set nil)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
202 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
203 "cc-bytecomp-restore-environment: Done"))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
204
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
205 (eval
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
206 ;; This eval is to avoid byte compilation of the function below.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
207 ;; There's some bug in XEmacs 21.4.6 that can cause it to dump core
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
208 ;; here otherwise. My theory is that `cc-bytecomp-load' might be
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
209 ;; redefined recursively during the `load' inside it, and if it in
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
210 ;; that case is byte compiled then the byte interpreter gets
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
211 ;; confused. I haven't succeeded in isolating the bug, though. /mast
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
212
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
213 '(defun cc-bytecomp-load (cc-part)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
214 ;; Eval'ed during compilation to load a CC Mode file from the source
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
215 ;; directory (assuming it's the same as the compiled file
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
216 ;; destination dir).
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
217 (if (and (boundp 'byte-compile-dest-file)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
218 (stringp byte-compile-dest-file))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
219 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
220 (cc-bytecomp-restore-environment)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
221 (let ((load-path
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
222 (cons (file-name-directory byte-compile-dest-file)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
223 load-path))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
224 (cc-file (concat cc-part ".el")))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
225 (if (member cc-file cc-bytecomp-loaded-files)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
226 ()
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
227 (setq cc-bytecomp-loaded-files
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
228 (cons cc-file cc-bytecomp-loaded-files))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
229 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
230 "cc-bytecomp-load: Loading %S" cc-file)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
231 (load cc-file nil t t)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
232 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
233 "cc-bytecomp-load: Loaded %S" cc-file)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
234 (cc-bytecomp-setup-environment)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
235 t))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
236
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
237 (defmacro cc-require (cc-part)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
238 "Force loading of the corresponding .el file in the current directory
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
239 during compilation, but compile in a `require'. Don't use within
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
240 `eval-when-compile'.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
241
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
242 Having cyclic cc-require's will result in infinite recursion. That's
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
243 somewhat intentional."
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
244 `(progn
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
245 (eval-when-compile (cc-bytecomp-load (symbol-name ,cc-part)))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
246 (require ,cc-part)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
247
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
248 (defmacro cc-provide (feature)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
249 "A replacement for the `provide' form that restores the environment
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
250 after the compilation. Don't use within `eval-when-compile'."
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
251 `(progn
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
252 (eval-when-compile (cc-bytecomp-restore-environment))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
253 (provide ,feature)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
254
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
255 (defmacro cc-load (cc-part)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
256 "Force loading of the corresponding .el file in the current directory
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
257 during compilation. Don't use outside `eval-when-compile' or
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
258 `eval-and-compile'.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
259
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
260 Having cyclic cc-load's will result in infinite recursion. That's
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
261 somewhat intentional."
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
262 `(or (and (featurep 'cc-bytecomp)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
263 (cc-bytecomp-load ,cc-part))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
264 (load ,cc-part nil t nil)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
265
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
266 (defmacro cc-require-when-compile (cc-part)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
267 "Force loading of the corresponding .el file in the current directory
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
268 during compilation, but do a compile time `require' otherwise. Don't
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
269 use within `eval-when-compile'."
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
270 `(eval-when-compile
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
271 (if (and (featurep 'cc-bytecomp)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
272 (cc-bytecomp-is-compiling))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
273 (if (or (not load-in-progress)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
274 (not (featurep ,cc-part)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
275 (cc-bytecomp-load (symbol-name ,cc-part)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
276 (require ,cc-part))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
277
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
278 (defmacro cc-external-require (feature)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
279 "Do a `require' of an external package.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
280 This restores and sets up the compilation environment before and
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
281 afterwards. Don't use within `eval-when-compile'."
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
282 `(progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
283 (eval-when-compile (cc-bytecomp-restore-environment))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
284 (require ,feature)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
285 (eval-when-compile (cc-bytecomp-setup-environment))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
286
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
287 (defun cc-bytecomp-is-compiling ()
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
288 "Return non-nil if eval'ed during compilation. Don't use outside
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
289 `eval-when-compile'."
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
290 (and (boundp 'byte-compile-dest-file)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
291 (stringp byte-compile-dest-file)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
292
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
293 (defmacro cc-bytecomp-defvar (var)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
294 "Binds the symbol as a variable during compilation of the file,
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
295 to silence the byte compiler. Don't use within `eval-when-compile'."
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
296 `(eval-when-compile
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
297 (if (boundp ',var)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
298 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
299 "cc-bytecomp-defvar: %s bound already as variable" ',var)
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
300 (if (not (memq ',var cc-bytecomp-unbound-variables))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
301 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
302 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
303 "cc-bytecomp-defvar: Saving %s (as unbound)" ',var)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
304 (setq cc-bytecomp-unbound-variables
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
305 (cons ',var cc-bytecomp-unbound-variables))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
306 (if (and (cc-bytecomp-is-compiling)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
307 (not load-in-progress))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
308 (progn
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
309 (defvar ,var)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
310 (set ',var (intern (concat "cc-bytecomp-ignore-var:"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
311 (symbol-name ',var))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
312 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
313 "cc-bytecomp-defvar: Covered variable %s" ',var))))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
314
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
315 (defmacro cc-bytecomp-defun (fun)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
316 "Bind the symbol as a function during compilation of the file,
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
317 to silence the byte compiler. Don't use within `eval-when-compile'.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
318
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
319 If the symbol already is bound as a function, it will keep that
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
320 definition. That means that this macro will not shut up warnings
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
321 about incorrect number of arguments. It's dangerous to try to replace
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
322 existing functions since the byte compiler might need the definition
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
323 at compile time, e.g. for macros and inline functions."
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
324 `(eval-when-compile
48361
2ac046f0f384 (cc-bytecomp-defun): Fixed bug that caused existing function
Martin Stjernholm <mast@lysator.liu.se>
parents: 44728
diff changeset
325 (if (fboundp ',fun)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
326 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
327 "cc-bytecomp-defun: %s bound already as function" ',fun)
48361
2ac046f0f384 (cc-bytecomp-defun): Fixed bug that caused existing function
Martin Stjernholm <mast@lysator.liu.se>
parents: 44728
diff changeset
328 (if (not (assq ',fun cc-bytecomp-original-functions))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
329 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
330 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
331 "cc-bytecomp-defun: Saving %s (as unbound)" ',fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
332 (setq cc-bytecomp-original-functions
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
333 (cons (list ',fun nil 'unbound)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
334 cc-bytecomp-original-functions))))
48361
2ac046f0f384 (cc-bytecomp-defun): Fixed bug that caused existing function
Martin Stjernholm <mast@lysator.liu.se>
parents: 44728
diff changeset
335 (if (and (cc-bytecomp-is-compiling)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
336 (not load-in-progress))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
337 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
338 (fset ',fun (intern (concat "cc-bytecomp-ignore-fun:"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
339 (symbol-name ',fun))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
340 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
341 "cc-bytecomp-defun: Covered function %s" ',fun))))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
342
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
343 (put 'cc-bytecomp-defmacro 'lisp-indent-function 'defun)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
344 (defmacro cc-bytecomp-defmacro (fun &rest temp-macro)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
345 "Bind the symbol as a macro during compilation (and evaluation) of the
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
346 file. Don't use outside `eval-when-compile'."
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
347 `(let ((orig-fun (assq ',fun cc-bytecomp-original-functions)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
348 (if (not orig-fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
349 (setq orig-fun
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
350 (list ',fun
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
351 nil
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
352 (if (fboundp ',fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
353 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
354 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
355 "cc-bytecomp-defmacro: Saving %s" ',fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
356 (symbol-function ',fun))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
357 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
358 "cc-bytecomp-defmacro: Saving %s as unbound" ',fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
359 'unbound))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
360 cc-bytecomp-original-functions
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
361 (cons orig-fun cc-bytecomp-original-functions)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
362 (defmacro ,fun ,@temp-macro)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
363 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
364 "cc-bytecomp-defmacro: Bound macro %s" ',fun)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
365 (setcar (cdr orig-fun) (symbol-function ',fun))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
366
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
367 (defmacro cc-bytecomp-put (symbol propname value)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
368 "Set a property on a symbol during compilation (and evaluation) of
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
369 the file. Don't use outside `eval-when-compile'."
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
370 `(eval-when-compile
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
371 (if (not (assoc (cons ,symbol ,propname) cc-bytecomp-original-properties))
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
372 (progn
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
373 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
374 "cc-bytecomp-put: Saving property %s for %s with value %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
375 ,propname ,symbol (get ,symbol ,propname))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
376 (setq cc-bytecomp-original-properties
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
377 (cons (cons (cons ,symbol ,propname)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
378 (cons ,value (get ,symbol ,propname)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
379 cc-bytecomp-original-properties))))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
380 (put ,symbol ,propname ,value)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
381 (cc-bytecomp-debug-msg
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
382 "cc-bytecomp-put: Bound property %s for %s to %s"
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
383 ,propname ,symbol ,value)))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
384
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
385 (defmacro cc-bytecomp-obsolete-var (symbol)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
386 "Suppress warnings that the given symbol is an obsolete variable.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
387 Don't use within `eval-when-compile'."
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
388 `(eval-when-compile
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
389 (if (get ',symbol 'byte-obsolete-variable)
48653
eafa82fa3d92 (cc-bytecomp-obsolete-var): Add an else-clause to the if to avoid
Richard M. Stallman <rms@gnu.org>
parents: 48361
diff changeset
390 (cc-bytecomp-put ',symbol 'byte-obsolete-variable nil)
eafa82fa3d92 (cc-bytecomp-obsolete-var): Add an else-clause to the if to avoid
Richard M. Stallman <rms@gnu.org>
parents: 48361
diff changeset
391 ;; This avoids a superfluous compiler warning
eafa82fa3d92 (cc-bytecomp-obsolete-var): Add an else-clause to the if to avoid
Richard M. Stallman <rms@gnu.org>
parents: 48361
diff changeset
392 ;; about calling `get' for effect.
eafa82fa3d92 (cc-bytecomp-obsolete-var): Add an else-clause to the if to avoid
Richard M. Stallman <rms@gnu.org>
parents: 48361
diff changeset
393 t)))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
394
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
395 (defun cc-bytecomp-ignore-obsolete (form)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
396 ;; Wraps a call to `byte-compile-obsolete' that suppresses the warning.
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
397 (let ((byte-compile-warnings
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
398 (delq 'obsolete (append byte-compile-warnings nil))))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
399 (byte-compile-obsolete form)))
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
400
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
401 (defmacro cc-bytecomp-obsolete-fun (symbol)
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
402 "Suppress warnings that the given symbol is an obsolete function.
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
403 Don't use within `eval-when-compile'."
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
404 `(eval-when-compile
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
405 (if (eq (get ',symbol 'byte-compile) 'byte-compile-obsolete)
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
406 (cc-bytecomp-put ',symbol 'byte-compile
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
407 'cc-bytecomp-ignore-obsolete)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
408 ;; This avoids a superfluous compiler warning
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
409 ;; about calling `get' for effect.
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
410 t)))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
411
51714
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
412 (defmacro cc-bytecomp-boundp (symbol)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
413 "Return non-nil if the given symbol is bound as a variable outside
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
414 the compilation. This is the same as using `boundp' but additionally
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
415 exclude any variables that have been bound during compilation with
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
416 `cc-bytecomp-defvar'."
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
417 (if (and (cc-bytecomp-is-compiling)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
418 (memq (car (cdr symbol)) cc-bytecomp-unbound-variables))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
419 nil
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
420 `(boundp ,symbol)))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
421
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
422 (defmacro cc-bytecomp-fboundp (symbol)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
423 "Return non-nil if the given symbol is bound as a function outside
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
424 the compilation. This is the same as using `fboundp' but additionally
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
425 exclude any functions that have been bound during compilation with
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
426 `cc-bytecomp-defun'."
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
427 (let (fun-elem)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
428 (if (and (cc-bytecomp-is-compiling)
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
429 (setq fun-elem (assq (car (cdr symbol))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
430 cc-bytecomp-original-functions))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
431 (eq (elt fun-elem 2) 'unbound))
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
432 nil
bc91cbf50c24 Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents: 48653
diff changeset
433 `(fboundp ,symbol))))
36920
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
434
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
435
32a4317c6aa5 Update to version 5.28.
Gerd Moellmann <gerd@gnu.org>
parents:
diff changeset
436 (provide 'cc-bytecomp)
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
437
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51714
diff changeset
438 ;;; arch-tag: 2d71b3ad-57b0-4b13-abd3-ab836e08f975
38422
7a94f1c588c4 Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38401
diff changeset
439 ;;; cc-bytecomp.el ends here