Mercurial > emacs
annotate lisp/progmodes/cc-bytecomp.el @ 69478:e8bb5df2ba7a
Add index entries around each paragraph rather than depend on entries
from beginning of node. Doing so ensures that index entries are less
likely to be forgotten if text is cut and pasted, and are necessary
anyway if the references are on a separate page. It seems that
makeinfo is now (v. 4.8) only producing one index entry per node, so
there is no longer any excuse not to. Use subheading instead of
heading. The incorrect use of heading produced very large fonts in
Info--as large as the main heading.
(From Bill Wohler): MH-E never did appear in Emacs 21--MH-E versions 6
and 7 appeared *around* the time of these Emacs releases.
author | Bill Wohler <wohler@newt.com> |
---|---|
date | Wed, 15 Mar 2006 00:26:12 +0000 |
parents | 3d8b060d10fb |
children | e3694f1cb928 8a1ee48a8386 |
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 | 2 |
69140
3d8b060d10fb
cc-align.el, cc-awk.el, cc-bytecomp.el, cc-cmds.el, cc-compat.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software |
3d8b060d10fb
cc-align.el, cc-awk.el, cc-bytecomp.el, cc-cmds.el, cc-compat.el,
Alan Mackenzie <acm@muc.de>
parents:
68773
diff
changeset
|
4 ;; Foundation, Inc. |
36920 | 5 |
6 ;; Author: Martin Stjernholm | |
7 ;; Maintainer: bug-cc-mode@gnu.org | |
8 ;; Created: 15-Jul-2000 | |
9 ;; Version: See cc-mode.el | |
10 ;; Keywords: c languages oop | |
11 | |
38401 | 12 ;; This file is part of GNU Emacs. |
13 | |
14 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
36920 | 15 ;; it under the terms of the GNU General Public License as published by |
38401 | 16 ;; the Free Software Foundation; either version 2, or (at your option) |
17 ;; any later version. | |
36920 | 18 |
38401 | 19 ;; GNU Emacs is distributed in the hope that it will be useful, |
36920 | 20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 ;; GNU General Public License for more details. | |
23 | |
24 ;; You should have received a copy of the GNU General Public License | |
67252
04d2abb755d9
Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
64699
diff
changeset
|
25 ;; along with this program; see the file COPYING. If not, write to |
64085 | 26 ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
27 ;; Boston, MA 02110-1301, USA. | |
36920 | 28 |
29 ;;; Commentary: | |
30 | |
31 ;; This file is used to ensure that the CC Mode files are correctly | |
32 ;; compiled regardless the environment (e.g. if an older CC Mode with | |
33 ;; outdated macros are loaded during compilation). It also provides | |
34 ;; 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
|
35 ;; |
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 ;; 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
|
37 ;; 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
|
38 ;; 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
|
39 ;; 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
|
40 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
41 ;; (eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
42 ;; (let ((load-path |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
43 ;; (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
|
44 ;; (stringp byte-compile-dest-file)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
45 ;; (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
|
46 ;; load-path))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
47 ;; (load "cc-bytecomp" nil t)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
48 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
49 ;; 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
|
50 ;; 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
|
51 ;; byte compilation of the latter. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
52 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
53 ;; 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
|
54 ;; 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
|
55 ;; 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
|
56 ;; `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
|
57 ;; last form in the file: |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
58 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
59 ;; (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
|
60 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
61 ;; 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
|
62 ;; this package. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
63 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
64 ;; 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
|
65 ;; `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
|
66 ;; 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
|
67 ;; 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
|
68 ;; elsewhere in the load path. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
69 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
70 ;; 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
|
71 ;; `cc-bytecomp-defun', `cc-bytecomp-defvar', |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
72 ;; `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
|
73 ;; |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
74 ;; 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
|
75 ;; compiled. It is however necessary when running uncompiled. |
36920 | 76 |
77 | |
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
38401
diff
changeset
|
78 ;;; Code: |
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
38401
diff
changeset
|
79 |
36920 | 80 (defvar cc-bytecomp-unbound-variables nil) |
81 (defvar cc-bytecomp-original-functions nil) | |
82 (defvar cc-bytecomp-original-properties nil) | |
83 (defvar cc-bytecomp-loaded-files nil) | |
84 (defvar cc-bytecomp-environment-set nil) | |
85 | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
86 (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
|
87 ;;`(message ,@args) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
88 ) |
36920 | 89 |
90 (defun cc-bytecomp-setup-environment () | |
91 ;; Eval'ed during compilation to setup variables, functions etc | |
92 ;; 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
|
93 (if (not load-in-progress) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
94 ;; 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
|
95 ;; 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
|
96 ;; being loaded during compilation. |
36920 | 97 (let (p) |
98 (if cc-bytecomp-environment-set | |
99 (error "Byte compilation environment already set - \ | |
100 perhaps a `cc-bytecomp-restore-environment' is forgotten somewhere")) | |
101 (setq p cc-bytecomp-unbound-variables) | |
102 (while p | |
103 (if (not (boundp (car p))) | |
104 (progn | |
105 (eval `(defvar ,(car p))) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
106 (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
|
107 (symbol-name (car p))))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
108 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
109 "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
|
110 (car p)))) |
36920 | 111 (setq p (cdr p))) |
112 (setq p cc-bytecomp-original-functions) | |
113 (while p | |
114 (let ((fun (car (car p))) | |
115 (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
|
116 (if (not (fboundp fun)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
117 (if temp-macro |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
118 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
119 (eval `(defmacro ,fun ,@temp-macro)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
120 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
121 "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
|
122 (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
|
123 (symbol-name fun)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
124 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
125 "cc-bytecomp-setup-environment: Covered function %s" fun)))) |
36920 | 126 (setq p (cdr p))) |
127 (setq p cc-bytecomp-original-properties) | |
128 (while p | |
129 (let ((sym (car (car (car p)))) | |
130 (prop (cdr (car (car p)))) | |
131 (tempdef (car (cdr (car p))))) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
132 (put sym prop tempdef) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
133 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
134 "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
|
135 prop sym tempdef)) |
36920 | 136 (setq p (cdr p))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
137 (setq cc-bytecomp-environment-set t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
138 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
139 "cc-bytecomp-setup-environment: Done")))) |
36920 | 140 |
141 (defun cc-bytecomp-restore-environment () | |
142 ;; Eval'ed during compilation to restore variables, functions etc | |
143 ;; 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
|
144 (if (not load-in-progress) |
36920 | 145 (let (p) |
146 (setq p cc-bytecomp-unbound-variables) | |
147 (while p | |
148 (let ((var (car p))) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
149 (if (boundp var) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
150 (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
|
151 (symbol-name var))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
152 (symbol-value var)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
153 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
154 (makunbound var) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
155 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
156 "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
|
157 var)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
158 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
159 "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
|
160 var)))) |
36920 | 161 (setq p (cdr p))) |
162 (setq p cc-bytecomp-original-functions) | |
163 (while p | |
164 (let ((fun (car (car p))) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
165 (temp-macro (car (cdr (car p)))) |
36920 | 166 (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
|
167 (if (fboundp fun) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
168 (if (eq (or temp-macro |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
169 (intern (concat "cc-bytecomp-ignore-fun:" |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
170 (symbol-name fun)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
171 (symbol-function fun)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
172 (if (eq def 'unbound) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
173 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
174 (fmakunbound fun) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
175 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
176 "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
|
177 fun)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
178 (fset fun def) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
179 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
180 "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
|
181 fun)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
182 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
183 "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
|
184 fun)))) |
36920 | 185 (setq p (cdr p))) |
186 (setq p cc-bytecomp-original-properties) | |
187 (while p | |
188 (let ((sym (car (car (car p)))) | |
189 (prop (cdr (car (car p)))) | |
190 (tempdef (car (cdr (car p)))) | |
191 (origdef (cdr (cdr (car p))))) | |
192 (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
|
193 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
194 (put sym prop origdef) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
195 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
196 "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
|
197 prop sym origdef)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
198 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
199 "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
|
200 prop sym))) |
36920 | 201 (setq p (cdr p))) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
202 (setq cc-bytecomp-environment-set nil) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
203 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
204 "cc-bytecomp-restore-environment: Done")))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
205 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
206 (eval |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
207 ;; 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
|
208 ;; 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
|
209 ;; 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
|
210 ;; 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
|
211 ;; 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
|
212 ;; confused. I haven't succeeded in isolating the bug, though. /mast |
36920 | 213 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
214 '(defun cc-bytecomp-load (cc-part) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
215 ;; 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
|
216 ;; 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
|
217 ;; destination dir). |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
218 (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
|
219 (stringp byte-compile-dest-file)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
220 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
221 (cc-bytecomp-restore-environment) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
222 (let ((load-path |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
223 (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
|
224 load-path)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
225 (cc-file (concat cc-part ".el"))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
226 (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
|
227 () |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
228 (setq cc-bytecomp-loaded-files |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
229 (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
|
230 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
231 "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
|
232 (load cc-file nil t t) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
233 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
234 "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
|
235 (cc-bytecomp-setup-environment) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
236 t)))) |
36920 | 237 |
238 (defmacro cc-require (cc-part) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
239 "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
|
240 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
|
241 `eval-when-compile'. |
36920 | 242 |
243 Having cyclic cc-require's will result in infinite recursion. That's | |
244 somewhat intentional." | |
245 `(progn | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
246 (eval-when-compile (cc-bytecomp-load (symbol-name ,cc-part))) |
36920 | 247 (require ,cc-part))) |
248 | |
249 (defmacro cc-provide (feature) | |
250 "A replacement for the `provide' form that restores the environment | |
251 after the compilation. Don't use within `eval-when-compile'." | |
252 `(progn | |
253 (eval-when-compile (cc-bytecomp-restore-environment)) | |
254 (provide ,feature))) | |
255 | |
256 (defmacro cc-load (cc-part) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
257 "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
|
258 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
|
259 `eval-and-compile'. |
36920 | 260 |
261 Having cyclic cc-load's will result in infinite recursion. That's | |
262 somewhat intentional." | |
263 `(or (and (featurep 'cc-bytecomp) | |
264 (cc-bytecomp-load ,cc-part)) | |
265 (load ,cc-part nil t nil))) | |
266 | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
267 (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
|
268 "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
|
269 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
|
270 use within `eval-when-compile'." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
271 `(eval-when-compile |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
272 (if (and (featurep 'cc-bytecomp) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
273 (cc-bytecomp-is-compiling)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
274 (if (or (not load-in-progress) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
275 (not (featurep ,cc-part))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
276 (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
|
277 (require ,cc-part)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
278 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
279 (defmacro cc-external-require (feature) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
280 "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
|
281 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
|
282 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
|
283 `(progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
284 (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
|
285 (require ,feature) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
286 (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
|
287 |
36920 | 288 (defun cc-bytecomp-is-compiling () |
289 "Return non-nil if eval'ed during compilation. Don't use outside | |
290 `eval-when-compile'." | |
291 (and (boundp 'byte-compile-dest-file) | |
292 (stringp byte-compile-dest-file))) | |
293 | |
294 (defmacro cc-bytecomp-defvar (var) | |
295 "Binds the symbol as a variable during compilation of the file, | |
296 to silence the byte compiler. Don't use within `eval-when-compile'." | |
297 `(eval-when-compile | |
298 (if (boundp ',var) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
299 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
300 "cc-bytecomp-defvar: %s bound already as variable" ',var) |
36920 | 301 (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
|
302 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
303 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
304 "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
|
305 (setq cc-bytecomp-unbound-variables |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
306 (cons ',var cc-bytecomp-unbound-variables)))) |
36920 | 307 (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
|
308 (not load-in-progress)) |
36920 | 309 (progn |
310 (defvar ,var) | |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
311 (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
|
312 (symbol-name ',var)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
313 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
314 "cc-bytecomp-defvar: Covered variable %s" ',var)))))) |
36920 | 315 |
316 (defmacro cc-bytecomp-defun (fun) | |
317 "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
|
318 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
|
319 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
320 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
|
321 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
|
322 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
|
323 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
|
324 at compile time, e.g. for macros and inline functions." |
36920 | 325 `(eval-when-compile |
48361
2ac046f0f384
(cc-bytecomp-defun): Fixed bug that caused existing function
Martin Stjernholm <mast@lysator.liu.se>
parents:
44728
diff
changeset
|
326 (if (fboundp ',fun) |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
327 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
328 "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
|
329 (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
|
330 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
331 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
332 "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
|
333 (setq cc-bytecomp-original-functions |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
334 (cons (list ',fun nil 'unbound) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
335 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
|
336 (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
|
337 (not load-in-progress)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
338 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
339 (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
|
340 (symbol-name ',fun)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
341 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
342 "cc-bytecomp-defun: Covered function %s" ',fun)))))) |
36920 | 343 |
344 (put 'cc-bytecomp-defmacro 'lisp-indent-function 'defun) | |
345 (defmacro cc-bytecomp-defmacro (fun &rest temp-macro) | |
346 "Bind the symbol as a macro during compilation (and evaluation) of the | |
347 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
|
348 `(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
|
349 (if (not orig-fun) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
350 (setq orig-fun |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
351 (list ',fun |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
352 nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
353 (if (fboundp ',fun) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
354 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
355 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
356 "cc-bytecomp-defmacro: Saving %s" ',fun) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
357 (symbol-function ',fun)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
358 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
359 "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
|
360 'unbound)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
361 cc-bytecomp-original-functions |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
362 (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
|
363 (defmacro ,fun ,@temp-macro) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
364 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
365 "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
|
366 (setcar (cdr orig-fun) (symbol-function ',fun)))) |
36920 | 367 |
368 (defmacro cc-bytecomp-put (symbol propname value) | |
369 "Set a property on a symbol during compilation (and evaluation) of | |
370 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
|
371 `(eval-when-compile |
36920 | 372 (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
|
373 (progn |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
374 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
375 "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
|
376 ,propname ,symbol (get ,symbol ,propname)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
377 (setq cc-bytecomp-original-properties |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
378 (cons (cons (cons ,symbol ,propname) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
379 (cons ,value (get ,symbol ,propname))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
380 cc-bytecomp-original-properties)))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
381 (put ,symbol ,propname ,value) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
382 (cc-bytecomp-debug-msg |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
383 "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
|
384 ,propname ,symbol ,value))) |
36920 | 385 |
386 (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
|
387 "Suppress warnings that the given symbol is an obsolete variable. |
36920 | 388 Don't use within `eval-when-compile'." |
389 `(eval-when-compile | |
390 (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
|
391 (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
|
392 ;; 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
|
393 ;; 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
|
394 t))) |
36920 | 395 |
396 (defun cc-bytecomp-ignore-obsolete (form) | |
397 ;; Wraps a call to `byte-compile-obsolete' that suppresses the warning. | |
398 (let ((byte-compile-warnings | |
399 (delq 'obsolete (append byte-compile-warnings nil)))) | |
400 (byte-compile-obsolete form))) | |
401 | |
402 (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
|
403 "Suppress warnings that the given symbol is an obsolete function. |
36920 | 404 Don't use within `eval-when-compile'." |
405 `(eval-when-compile | |
406 (if (eq (get ',symbol 'byte-compile) 'byte-compile-obsolete) | |
407 (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
|
408 'cc-bytecomp-ignore-obsolete) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
409 ;; This avoids a superfluous compiler warning |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
410 ;; about calling `get' for effect. |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
411 t))) |
36920 | 412 |
51714
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
413 (defmacro cc-bytecomp-boundp (symbol) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
414 "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
|
415 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
|
416 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
|
417 `cc-bytecomp-defvar'." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
418 (if (and (cc-bytecomp-is-compiling) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
419 (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
|
420 nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
421 `(boundp ,symbol))) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
422 |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
423 (defmacro cc-bytecomp-fboundp (symbol) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
424 "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
|
425 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
|
426 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
|
427 `cc-bytecomp-defun'." |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
428 (let (fun-elem) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
429 (if (and (cc-bytecomp-is-compiling) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
430 (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
|
431 cc-bytecomp-original-functions)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
432 (eq (elt fun-elem 2) 'unbound)) |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
433 nil |
bc91cbf50c24
Updated CC Mode to version 5.30.
Martin Stjernholm <mast@lysator.liu.se>
parents:
48653
diff
changeset
|
434 `(fboundp ,symbol)))) |
36920 | 435 |
436 | |
437 (provide 'cc-bytecomp) | |
38422
7a94f1c588c4
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
38401
diff
changeset
|
438 |
52401 | 439 ;;; 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
|
440 ;;; cc-bytecomp.el ends here |