*** empty log message ***
[bpt/guile.git] / lang / elisp / ChangeLog
1 2002-12-08 Rob Browning <rlb@defaultvalue.org>
2
3 * Makefile.am (subpkgdatadir): VERSION -> GUILE_EFFECTIVE_VERSION.
4
5 * primitives/Makefile.am (subpkgdatadir): VERSION ->
6 GUILE_EFFECTIVE_VERSION.
7
8 * internals/Makefile.am (subpkgdatadir): VERSION ->
9 GUILE_EFFECTIVE_VERSION.
10
11 2002-02-13 Neil Jerram <neil@ossau.uklinux.net>
12
13 * base.scm (load-emacs): Add optional parameters for specifying an
14 alternative load path, and for debugging this. (Thanks to
15 Thien-Thi Nguyen!)
16
17 * primitives/syntax.scm (setq): Use `set'.
18
19 * internals/set.scm (set): Fixed to support variables that are
20 imported from other modules.
21
22 2002-02-12 Neil Jerram <neil@ossau.uklinux.net>
23
24 * transform.scm (scheme): Use set-current-module to ensure
25 expected behaviour of resolve-module.
26
27 2002-02-08 Neil Jerram <neil@ossau.uklinux.net>
28
29 * STATUS: New file.
30
31 * README: Updated.
32
33 * interface.scm (translate-elisp): New exported procedure.
34 (elisp-function): Symbol var is `obj', not `symbol'.
35
36 * internals/lambda.scm, primitives/fns.scm: Fix confusion between
37 interactive-spec and interactive-specification.
38
39 * internals/lambda.scm (transform-lambda), primitives/syntax.scm
40 (defmacro): Bind unspecified optional and rest arguments to #nil,
41 not #f.
42
43 * internals/null.scm (->nil, lambda->nil): New, exported.
44 (null): Use ->nil.
45
46 * primitives/features.scm (featurep), primitives/fns.scm
47 (fboundp, subrp): Use ->nil.
48
49 * internals/lists.scm (cons, setcdr, memq, member, assq, assoc):
50 Simplified.
51 (car, cdr): Return #nil rather than #f.
52
53 * primitives/load.scm (current-load-list), primitives/pure.scm
54 (purify-flag): Set to #nil, not #f.
55
56 * primitives/match.scm (string-match): Return #nil rather than #f.
57
58 * primitives/numbers.scm (integerp, numberp),
59 primitives/strings.scm (string-lessp, stringp): Use lambda->nil.
60
61 * primitives/symprop.scm (boundp): Use ->nil.
62 (symbolp, local-variable-if-set-p): Return #nil rather than #f.
63
64 * primitives/syntax.scm (prog1, prog2): Mangle variable names
65 further to lessen possibility of conflicts.
66 (if, and, or, cond): Return #nil rather than #f.
67 (cond): Return #t rather than t (which is undefined).
68 (let, let*): Bind uninitialized variables to #nil, not #f.
69
70 * transform.scm: Resolve inconsistency in usage of `map', and add
71 an explanatory note. Also cleaned up use of subsidiary
72 transformation functions. Also use cons-source wherever possible.
73 (transform-datum, transform-quote): New.
74 (transform-quasiquote): Renamed from `transform-inside-qq'.
75 (transform-application): Apply `transform-quote' to application
76 args.
77 (cars->nil): Removed.
78
79 * internals/null.scm (null), primitives/lists.scm (cons, car, cdr,
80 setcdr, memq, member, assq, assoc, nth): Update to take into
81 account new libguile support for Elisp nil value.
82
83 2002-02-06 Neil Jerram <neil@ossau.uklinux.net>
84
85 * example.el (time): New macro, for performance measurement.
86 Accompanying comment compares results for Guile and Emacs.
87
88 * transform.scm (scheme): New macro.
89 (transformer): New implementation of `scheme' escape that doesn't
90 rely on (lang elisp base) importing Guile bindings.
91
92 * base.scm: No longer import anything from (guile).
93 (load-emacs): Add scheme form to ensure that keywords
94 read option is set correctly.
95
96 * primitives/syntax.scm (defmacro, let, let*): Unquote uses of
97 `@bind' in transformed code.
98 (if): Unquote uses of `nil-cond' in transformed code.
99
100 * internals/lambda.scm (transform-lambda): Unquote use of `@bind'
101 in transformed code.
102
103 * transform.scm (transformer-macro): Don't quote `list' in
104 transformed code.
105 (transform-application): Don't quote `@fop' in transformed code.
106 (transformer): No need to treat `@bind' and `@fop' as special
107 cases in input to the transformer.
108
109 2002-02-04 Neil Jerram <neil@ossau.uklinux.net>
110
111 * primitives/syntax.scm (parse-formals, transform-lambda,
112 interactive-spec, set-not-subr!, transform-lambda/interactive):
113 Move into internals/lambda.scm so that these can also be used
114 by...
115
116 * internals/fset.scm (elisp-apply): Use `eval' and
117 `transform-lambda/interactive' to turn a quoted lambda expression
118 into a Scheme procedure.
119
120 * transform.scm (m-quasiquote): Don't quote `quasiquote' in
121 transformed code.
122 (transformer): Transform '() to #nil.
123
124 2002-02-03 Neil Jerram <neil@ossau.uklinux.net>
125
126 * internals/Makefile.am (elisp_sources): Add lambda.scm.
127
128 * internals/lambda.scm (lang): New file.
129
130 2002-02-01 Neil Jerram <neil@ossau.uklinux.net>
131
132 * transform.scm (transformer), primitives/syntax.scm (let*):
133 Unquote uses of `begin' in transformed code.
134
135 2002-01-29 Neil Jerram <neil@ossau.uklinux.net>
136
137 * transform.scm (transform-1, transform-2, transform-3,
138 transform-list): Removed (unused).
139
140 * transform.scm, primitives/syntax.scm: Add commas everywhere
141 before use of (guile) primitives in generated code, so that (lang
142 elisp base) doesn't have to import bindings from (guile).
143
144 * base.scm: Move use-modules expressions inside the define-module,
145 and add #:pure so that we don't import bindings from (guile).
146
147 2002-01-25 Neil Jerram <neil@ossau.uklinux.net>
148
149 * transform.scm (transform-application): Preserve source
150 properties of original elisp expression by using cons-source.
151
152 * transform.scm: Don't handle special forms specially in the
153 translator. Instead, define them as macros in ...
154
155 * primitives/syntax.scm: New file; special form definitions.
156
157 * primitives/fns.scm (run-hooks): Rewritten correctly.
158
159 * primitives/symprop.scm (symbol-value): Use `value'.
160
161 * internals/set.scm (value): New function.
162
163 * primitives/fns.scm: Use (lang elisp internals null), as null is
164 no longer a primitive. Change generated #f values to %nil.
165
166 * internals/null.scm (null): Handle nil symbol.
167
168 * primitives/lists.scm (memq, member, assq, assoc): Handle all
169 possible nil values.
170
171 * transform.scm (transformer): Translate `nil' and `t' to #nil and
172 #t.
173
174 * base.scm: Remove setting of 'language read-option.
175
176 2001-11-03 Neil Jerram <neil@ossau.uklinux.net>
177
178 * README (Resources): Fill in missing URLs.
179
180 2001-11-02 Neil Jerram <neil@ossau.uklinux.net>
181
182 * Makefile.am (elisp_sources): Added base.scm, example.el,
183 interface.scm; removed emacs.scm.
184
185 * README: Updated accordingly.
186
187 * internals/load.scm (load): Avoid using `load-path' if the
188 supplied file name begins with a slash.
189
190 * internals/fset.scm: Support export of defuns, defmacros and
191 defvars to a module specified by the fluid `elisp-export-module'.
192 This allows us to automate the importing of Elisp definitions into
193 Scheme.
194
195 * example.el: New file: example code for `load-elisp-file'.
196
197 * interface.scm: New file - mechanisms to exchange definitions
198 between Scheme and Elisp.
199
200 Following changes try to make the Elisp evaluation module less
201 Emacs-dependent; in other words, so that it isn't necessary to try
202 to load the whole Emacs environment before evaluating basic
203 non-Emacs-specific Elisp code.
204
205 * variables.scm, internals/evaluation.scm: Changed (lang elisp
206 emacs) to (lang elisp base).
207
208 * emacs.scm (lang): Removed.
209
210 * base.scm (lang): New file (non-emacs-specific replacement for
211 emacs.scm).
212
213 2001-10-28 Neil Jerram <neil@ossau.uklinux.net>
214
215 * primitives/symprop.scm (symbol-name): New primitive.
216
217 * primitives/strings.scm (stringp): New primitive.
218
219 * primitives/pure.scm (purify-flag): New variable.
220
221 * primitives/numbers.scm (numberp): New primitive.
222
223 * internals/fset.scm (fset): Set procedure and macro name
224 properties usefully to match Elisp symbol names. Also bind Elisp
225 function definition variables to similarly named symbols in the
226 (lang elisp variables) module.
227
228 * transform.scm (transformer, m-unwind-protect): Added support for
229 `unwind-protect'.
230 (m-quasiquote): Use 'quasiquote rather than 'quote.
231 (transform-lambda, m-defmacro): When no rest arguments, set the
232 rest parameter to '() rather than #f. It shouldn't make any
233 difference, but it feels more right.
234
235 * README: Enlarged description of current status.
236
237 * Makefile.am (elisp_sources): Added variables.scm.
238
239 * variables.scm: New file.
240
241 2001-10-26 Neil Jerram <neil@ossau.uklinux.net>
242
243 * buffers.scm, calling.scm: Removed. These should have
244 disappeared during the reorganization described below, but I
245 missed them by mistake.
246
247 * primitives/symprop.scm (set, boundp, symbol-value): Changed to
248 use (module-xx the-elisp-module ...) rather than (local-xx ...).
249 (symbolp): Accept either symbols or keywords.
250 (set-default, default-boundp, default-value,
251 local-variable-if-set-p): New.
252
253 * primitives/match.scm (string-match, match-data): Store last
254 match data in Emacs rather than Guile form, to simplify
255 implementation of ...
256 (set-match-data, store-match-data): New.
257
258 * primitives/load.scm (autoload, current-load-list): New. (But
259 autoload is just stubbed, not properly implemented.)
260
261 * primitives/lists.scm (nth, listp, consp, nconc): New.
262
263 * primitives/fns.scm (byte-code-function-p, run-hooks): New.
264
265 * transform.scm (transform-application, transformer-macro): New
266 scheme for transforming procedure arguments while leaving macro
267 args untransformed. (See also associated change in libguile.)
268 (m-defconst): Simplified, now uses m-setq.
269
270 * Makefile.am: Changed so that it only deals with files directly
271 in this directory; otherwise files don't install cleanly.
272
273 * internals/Makefile.am, primitives/Makefile.am,
274 internals/.cvsignore, primitives/.cvsignore: New files.
275
276 2001-10-26 Neil Jerram <neil@ossau.uklinux.net>
277
278 * transform.scm (transformer): New handling for (1) quasiquoting
279 syntax like "(` ...)" as well as the more normal "` ..."; (2)
280 `function'; (3) interactive specification in lambda body.
281 Simplied handling for `setq'.
282 (transform-inside-qq): Fixed to handle improper as well as proper
283 lists.
284 (transform-lambda/interactive): New; wraps transform-lambda to
285 handle setting of various procedure properties.
286 (transform-lambda, m-defmacro): Changed `args' and `num-args' to
287 `%--args' and `%--num-args' in the hope of avoiding lexical
288 vs. dynamic name clashes.
289 (m-and): Use #f instead of '() where a condition fails.
290
291 Plus big hierarchy reorganization, in which most of the previous
292 occupants of lang/elisp moved to lang/elisp/primitives, with some
293 internal processing being split out into lang/elisp/internals.
294 The upshot looks like this:
295
296 * internals/trace.scm, internals/set.scm, internals/load.scm,
297 internals/fset.scm, internals/signal.scm, internals/time.scm,
298 internals/format.scm, internals/null.scm,
299 internals/evaluation.scm, primitives/buffers.scm,
300 primitives/features.scm, primitives/format.scm,
301 primitives/time.scm, primitives/guile.scm, primitives/keymaps.scm,
302 primitives/lists.scm, primitives/load.scm, primitives/match.scm,
303 primitives/numbers.scm, primitives/pure.scm, primitives/read.scm,
304 primitives/signal.scm, primitives/strings.scm,
305 primitives/symprop.scm, primitives/system.scm, primitives/fns.scm:
306 New files.
307
308 * features.scm, format.scm, fset.scm, guile.scm, keymaps.scm,
309 lists.scm, load.scm, match.scm, numbers.scm, pure.scm, read.scm,
310 signal.scm, strings.scm, symprop.scm, system.scm, time.scm,
311 trace.scm: Removed files.
312
313 2001-10-23 Neil Jerram <neil@ossau.uklinux.net>
314
315 * match.scm (string-match): New implementation using new
316 `make-emacs-regexp' primitive; old workaround implementation
317 renamed to `string-match-workaround'.
318
319 2001-10-21 Neil Jerram <neil@ossau.uklinux.net>
320
321 * transform.scm (m-defun, m-defmacro, m-let, m-defvar,
322 m-defconst): Use more selective tracing mechanism (provided by new
323 file trace.scm).
324
325 * symprop.scm (get, boundp), transform.scm (transform-lambda,
326 m-defmacro): Remove unnecessary uses of nil-ify and t-ify.
327
328 * match.scm (string-match): Workaround Guile/libc regex
329 parenthesis bug.
330
331 * emacs.scm: Move elisp primitive definitions into more specific
332 files, so that emacs.scm contains only overall code.
333
334 * Makefile.am: Added new files.
335
336 * numbers.scm, trace.scm, time.scm, pure.scm, system.scm,
337 read.scm, calling.scm, guile.scm: New files.
338
339 2001-10-20 Neil Jerram <neil@ossau.uklinux.net>
340
341 * Makefile.am (elisp_sources): Added match.scm and strings.scm.
342
343 * match.scm, strings.scm: New files.
344
345 2001-10-19 Neil Jerram <neil@ossau.uklinux.net>
346
347 * transform.scm: Replace uses of `nil' by `#f' or `'()'.
348
349 * Makefile.am (elisp_sources): Added lists.scm.
350
351 * load.scm (the-elisp-module): Corrected (lang elisp emacs) module
352 name.
353
354 * lists.scm (lang): New file containing list-related primitives.
355
356 * emacs.scm: Corrected module name.
357
358 2001-10-19 Neil Jerram <neil@ossau.uklinux.net>
359
360 Initial implementation of an Emacs Lisp translator, based on
361 transformer code originally written by Mikael Djurfeldt.
362
363 * Makefile.am, .cvsignore: New.
364
365 * ChangeLog, README, buffers.scm, emacs.scm, features.scm,
366 format.scm, fset.scm, keymaps.scm, load.scm, signal.scm,
367 symprop.scm, transform.scm: New files.
368
369