1 2002-12-08 Rob Browning <rlb@defaultvalue.org>
3 * Makefile.am (subpkgdatadir): VERSION -> GUILE_EFFECTIVE_VERSION.
5 * primitives/Makefile.am (subpkgdatadir): VERSION ->
6 GUILE_EFFECTIVE_VERSION.
8 * internals/Makefile.am (subpkgdatadir): VERSION ->
9 GUILE_EFFECTIVE_VERSION.
11 2002-02-13 Neil Jerram <neil@ossau.uklinux.net>
13 * base.scm (load-emacs): Add optional parameters for specifying an
14 alternative load path, and for debugging this. (Thanks to
17 * primitives/syntax.scm (setq): Use `set'.
19 * internals/set.scm (set): Fixed to support variables that are
20 imported from other modules.
22 2002-02-12 Neil Jerram <neil@ossau.uklinux.net>
24 * transform.scm (scheme): Use set-current-module to ensure
25 expected behaviour of resolve-module.
27 2002-02-08 Neil Jerram <neil@ossau.uklinux.net>
33 * interface.scm (translate-elisp): New exported procedure.
34 (elisp-function): Symbol var is `obj', not `symbol'.
36 * internals/lambda.scm, primitives/fns.scm: Fix confusion between
37 interactive-spec and interactive-specification.
39 * internals/lambda.scm (transform-lambda), primitives/syntax.scm
40 (defmacro): Bind unspecified optional and rest arguments to #nil,
43 * internals/null.scm (->nil, lambda->nil): New, exported.
46 * primitives/features.scm (featurep), primitives/fns.scm
47 (fboundp, subrp): Use ->nil.
49 * internals/lists.scm (cons, setcdr, memq, member, assq, assoc):
51 (car, cdr): Return #nil rather than #f.
53 * primitives/load.scm (current-load-list), primitives/pure.scm
54 (purify-flag): Set to #nil, not #f.
56 * primitives/match.scm (string-match): Return #nil rather than #f.
58 * primitives/numbers.scm (integerp, numberp),
59 primitives/strings.scm (string-lessp, stringp): Use lambda->nil.
61 * primitives/symprop.scm (boundp): Use ->nil.
62 (symbolp, local-variable-if-set-p): Return #nil rather than #f.
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.
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
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.
83 2002-02-06 Neil Jerram <neil@ossau.uklinux.net>
85 * example.el (time): New macro, for performance measurement.
86 Accompanying comment compares results for Guile and Emacs.
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.
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.
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.
100 * internals/lambda.scm (transform-lambda): Unquote use of `@bind'
103 * transform.scm (transformer-macro): Don't quote `list' in
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.
109 2002-02-04 Neil Jerram <neil@ossau.uklinux.net>
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
116 * internals/fset.scm (elisp-apply): Use `eval' and
117 `transform-lambda/interactive' to turn a quoted lambda expression
118 into a Scheme procedure.
120 * transform.scm (m-quasiquote): Don't quote `quasiquote' in
122 (transformer): Transform '() to #nil.
124 2002-02-03 Neil Jerram <neil@ossau.uklinux.net>
126 * internals/Makefile.am (elisp_sources): Add lambda.scm.
128 * internals/lambda.scm (lang): New file.
130 2002-02-01 Neil Jerram <neil@ossau.uklinux.net>
132 * transform.scm (transformer), primitives/syntax.scm (let*):
133 Unquote uses of `begin' in transformed code.
135 2002-01-29 Neil Jerram <neil@ossau.uklinux.net>
137 * transform.scm (transform-1, transform-2, transform-3,
138 transform-list): Removed (unused).
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).
144 * base.scm: Move use-modules expressions inside the define-module,
145 and add #:pure so that we don't import bindings from (guile).
147 2002-01-25 Neil Jerram <neil@ossau.uklinux.net>
149 * transform.scm (transform-application): Preserve source
150 properties of original elisp expression by using cons-source.
152 * transform.scm: Don't handle special forms specially in the
153 translator. Instead, define them as macros in ...
155 * primitives/syntax.scm: New file; special form definitions.
157 * primitives/fns.scm (run-hooks): Rewritten correctly.
159 * primitives/symprop.scm (symbol-value): Use `value'.
161 * internals/set.scm (value): New function.
163 * primitives/fns.scm: Use (lang elisp internals null), as null is
164 no longer a primitive. Change generated #f values to %nil.
166 * internals/null.scm (null): Handle nil symbol.
168 * primitives/lists.scm (memq, member, assq, assoc): Handle all
171 * transform.scm (transformer): Translate `nil' and `t' to #nil and
174 * base.scm: Remove setting of 'language read-option.
176 2001-11-03 Neil Jerram <neil@ossau.uklinux.net>
178 * README (Resources): Fill in missing URLs.
180 2001-11-02 Neil Jerram <neil@ossau.uklinux.net>
182 * Makefile.am (elisp_sources): Added base.scm, example.el,
183 interface.scm; removed emacs.scm.
185 * README: Updated accordingly.
187 * internals/load.scm (load): Avoid using `load-path' if the
188 supplied file name begins with a slash.
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
195 * example.el: New file: example code for `load-elisp-file'.
197 * interface.scm: New file - mechanisms to exchange definitions
198 between Scheme and Elisp.
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.
205 * variables.scm, internals/evaluation.scm: Changed (lang elisp
206 emacs) to (lang elisp base).
208 * emacs.scm (lang): Removed.
210 * base.scm (lang): New file (non-emacs-specific replacement for
213 2001-10-28 Neil Jerram <neil@ossau.uklinux.net>
215 * primitives/symprop.scm (symbol-name): New primitive.
217 * primitives/strings.scm (stringp): New primitive.
219 * primitives/pure.scm (purify-flag): New variable.
221 * primitives/numbers.scm (numberp): New primitive.
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.
228 * transform.scm (transformer, m-unwind-protect): Added support for
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.
235 * README: Enlarged description of current status.
237 * Makefile.am (elisp_sources): Added variables.scm.
239 * variables.scm: New file.
241 2001-10-26 Neil Jerram <neil@ossau.uklinux.net>
243 * buffers.scm, calling.scm: Removed. These should have
244 disappeared during the reorganization described below, but I
245 missed them by mistake.
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.
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.
258 * primitives/load.scm (autoload, current-load-list): New. (But
259 autoload is just stubbed, not properly implemented.)
261 * primitives/lists.scm (nth, listp, consp, nconc): New.
263 * primitives/fns.scm (byte-code-function-p, run-hooks): New.
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.
270 * Makefile.am: Changed so that it only deals with files directly
271 in this directory; otherwise files don't install cleanly.
273 * internals/Makefile.am, primitives/Makefile.am,
274 internals/.cvsignore, primitives/.cvsignore: New files.
276 2001-10-26 Neil Jerram <neil@ossau.uklinux.net>
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
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.
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:
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:
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.
313 2001-10-23 Neil Jerram <neil@ossau.uklinux.net>
315 * match.scm (string-match): New implementation using new
316 `make-emacs-regexp' primitive; old workaround implementation
317 renamed to `string-match-workaround'.
319 2001-10-21 Neil Jerram <neil@ossau.uklinux.net>
321 * transform.scm (m-defun, m-defmacro, m-let, m-defvar,
322 m-defconst): Use more selective tracing mechanism (provided by new
325 * symprop.scm (get, boundp), transform.scm (transform-lambda,
326 m-defmacro): Remove unnecessary uses of nil-ify and t-ify.
328 * match.scm (string-match): Workaround Guile/libc regex
331 * emacs.scm: Move elisp primitive definitions into more specific
332 files, so that emacs.scm contains only overall code.
334 * Makefile.am: Added new files.
336 * numbers.scm, trace.scm, time.scm, pure.scm, system.scm,
337 read.scm, calling.scm, guile.scm: New files.
339 2001-10-20 Neil Jerram <neil@ossau.uklinux.net>
341 * Makefile.am (elisp_sources): Added match.scm and strings.scm.
343 * match.scm, strings.scm: New files.
345 2001-10-19 Neil Jerram <neil@ossau.uklinux.net>
347 * transform.scm: Replace uses of `nil' by `#f' or `'()'.
349 * Makefile.am (elisp_sources): Added lists.scm.
351 * load.scm (the-elisp-module): Corrected (lang elisp emacs) module
354 * lists.scm (lang): New file containing list-related primitives.
356 * emacs.scm: Corrected module name.
358 2001-10-19 Neil Jerram <neil@ossau.uklinux.net>
360 Initial implementation of an Emacs Lisp translator, based on
361 transformer code originally written by Mikael Djurfeldt.
363 * Makefile.am, .cvsignore: New.
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.