1 2008-04-14 Neil Jerram <neil@ossau.uklinux.net>
3 * primitives/symprop.scm (get): Use lambda->nil.
5 * primitives/strings.scm (aset): New primitive.
7 * internals/load.scm (load): Use in-vicinity (instead of
8 string-append) to add a slash if needed.
10 2004-02-08 Mikael Djurfeldt <djurfeldt@nada.kth.se>
12 * primitives/Makefile.am (TAGS_FILES), internals/Makefile.am
13 (TAGS_FILES), Makefile.am (TAGS_FILES): Use this variable instead
14 of ETAGS_ARGS so that TAGS can be built using separate build
17 2003-11-01 Neil Jerram <neil@ossau.uklinux.net>
19 * internals/format.scm (format), internals/signal.scm (error),
20 internals/load.scm (load): Export using #:replace to avoid
21 duplicate binding warnings.
23 2003-01-05 Marius Vollmer <mvo@zagadka.ping.de>
25 * primitives/Makefile.am (elisp_sources): Added char-table.scm.
27 2002-12-28 Neil Jerram <neil@ossau.uklinux.net>
29 * base.scm (lang): Use char-table module.
31 * primitives/char-table.scm (lang): New (stub definitions).
33 2002-12-08 Rob Browning <rlb@defaultvalue.org>
35 * Makefile.am (subpkgdatadir): VERSION -> GUILE_EFFECTIVE_VERSION.
37 * primitives/Makefile.am (subpkgdatadir): VERSION ->
38 GUILE_EFFECTIVE_VERSION.
40 * internals/Makefile.am (subpkgdatadir): VERSION ->
41 GUILE_EFFECTIVE_VERSION.
43 2002-02-13 Neil Jerram <neil@ossau.uklinux.net>
45 * base.scm (load-emacs): Add optional parameters for specifying an
46 alternative load path, and for debugging this. (Thanks to
49 * primitives/syntax.scm (setq): Use `set'.
51 * internals/set.scm (set): Fixed to support variables that are
52 imported from other modules.
54 2002-02-12 Neil Jerram <neil@ossau.uklinux.net>
56 * transform.scm (scheme): Use set-current-module to ensure
57 expected behaviour of resolve-module.
59 2002-02-08 Neil Jerram <neil@ossau.uklinux.net>
65 * interface.scm (translate-elisp): New exported procedure.
66 (elisp-function): Symbol var is `obj', not `symbol'.
68 * internals/lambda.scm, primitives/fns.scm: Fix confusion between
69 interactive-spec and interactive-specification.
71 * internals/lambda.scm (transform-lambda), primitives/syntax.scm
72 (defmacro): Bind unspecified optional and rest arguments to #nil,
75 * internals/null.scm (->nil, lambda->nil): New, exported.
78 * primitives/features.scm (featurep), primitives/fns.scm
79 (fboundp, subrp): Use ->nil.
81 * internals/lists.scm (cons, setcdr, memq, member, assq, assoc):
83 (car, cdr): Return #nil rather than #f.
85 * primitives/load.scm (current-load-list), primitives/pure.scm
86 (purify-flag): Set to #nil, not #f.
88 * primitives/match.scm (string-match): Return #nil rather than #f.
90 * primitives/numbers.scm (integerp, numberp),
91 primitives/strings.scm (string-lessp, stringp): Use lambda->nil.
93 * primitives/symprop.scm (boundp): Use ->nil.
94 (symbolp, local-variable-if-set-p): Return #nil rather than #f.
96 * primitives/syntax.scm (prog1, prog2): Mangle variable names
97 further to lessen possibility of conflicts.
98 (if, and, or, cond): Return #nil rather than #f.
99 (cond): Return #t rather than t (which is undefined).
100 (let, let*): Bind uninitialized variables to #nil, not #f.
102 * transform.scm: Resolve inconsistency in usage of `map', and add
103 an explanatory note. Also cleaned up use of subsidiary
104 transformation functions. Also use cons-source wherever possible.
105 (transform-datum, transform-quote): New.
106 (transform-quasiquote): Renamed from `transform-inside-qq'.
107 (transform-application): Apply `transform-quote' to application
109 (cars->nil): Removed.
111 * internals/null.scm (null), primitives/lists.scm (cons, car, cdr,
112 setcdr, memq, member, assq, assoc, nth): Update to take into
113 account new libguile support for Elisp nil value.
115 2002-02-06 Neil Jerram <neil@ossau.uklinux.net>
117 * example.el (time): New macro, for performance measurement.
118 Accompanying comment compares results for Guile and Emacs.
120 * transform.scm (scheme): New macro.
121 (transformer): New implementation of `scheme' escape that doesn't
122 rely on (lang elisp base) importing Guile bindings.
124 * base.scm: No longer import anything from (guile).
125 (load-emacs): Add scheme form to ensure that keywords
126 read option is set correctly.
128 * primitives/syntax.scm (defmacro, let, let*): Unquote uses of
129 `@bind' in transformed code.
130 (if): Unquote uses of `nil-cond' in transformed code.
132 * internals/lambda.scm (transform-lambda): Unquote use of `@bind'
135 * transform.scm (transformer-macro): Don't quote `list' in
137 (transform-application): Don't quote `@fop' in transformed code.
138 (transformer): No need to treat `@bind' and `@fop' as special
139 cases in input to the transformer.
141 2002-02-04 Neil Jerram <neil@ossau.uklinux.net>
143 * primitives/syntax.scm (parse-formals, transform-lambda,
144 interactive-spec, set-not-subr!, transform-lambda/interactive):
145 Move into internals/lambda.scm so that these can also be used
148 * internals/fset.scm (elisp-apply): Use `eval' and
149 `transform-lambda/interactive' to turn a quoted lambda expression
150 into a Scheme procedure.
152 * transform.scm (m-quasiquote): Don't quote `quasiquote' in
154 (transformer): Transform '() to #nil.
156 2002-02-03 Neil Jerram <neil@ossau.uklinux.net>
158 * internals/Makefile.am (elisp_sources): Add lambda.scm.
160 * internals/lambda.scm (lang): New file.
162 2002-02-01 Neil Jerram <neil@ossau.uklinux.net>
164 * transform.scm (transformer), primitives/syntax.scm (let*):
165 Unquote uses of `begin' in transformed code.
167 2002-01-29 Neil Jerram <neil@ossau.uklinux.net>
169 * transform.scm (transform-1, transform-2, transform-3,
170 transform-list): Removed (unused).
172 * transform.scm, primitives/syntax.scm: Add commas everywhere
173 before use of (guile) primitives in generated code, so that (lang
174 elisp base) doesn't have to import bindings from (guile).
176 * base.scm: Move use-modules expressions inside the define-module,
177 and add #:pure so that we don't import bindings from (guile).
179 2002-01-25 Neil Jerram <neil@ossau.uklinux.net>
181 * transform.scm (transform-application): Preserve source
182 properties of original elisp expression by using cons-source.
184 * transform.scm: Don't handle special forms specially in the
185 translator. Instead, define them as macros in ...
187 * primitives/syntax.scm: New file; special form definitions.
189 * primitives/fns.scm (run-hooks): Rewritten correctly.
191 * primitives/symprop.scm (symbol-value): Use `value'.
193 * internals/set.scm (value): New function.
195 * primitives/fns.scm: Use (lang elisp internals null), as null is
196 no longer a primitive. Change generated #f values to %nil.
198 * internals/null.scm (null): Handle nil symbol.
200 * primitives/lists.scm (memq, member, assq, assoc): Handle all
203 * transform.scm (transformer): Translate `nil' and `t' to #nil and
206 * base.scm: Remove setting of 'language read-option.
208 2001-11-03 Neil Jerram <neil@ossau.uklinux.net>
210 * README (Resources): Fill in missing URLs.
212 2001-11-02 Neil Jerram <neil@ossau.uklinux.net>
214 * Makefile.am (elisp_sources): Added base.scm, example.el,
215 interface.scm; removed emacs.scm.
217 * README: Updated accordingly.
219 * internals/load.scm (load): Avoid using `load-path' if the
220 supplied file name begins with a slash.
222 * internals/fset.scm: Support export of defuns, defmacros and
223 defvars to a module specified by the fluid `elisp-export-module'.
224 This allows us to automate the importing of Elisp definitions into
227 * example.el: New file: example code for `load-elisp-file'.
229 * interface.scm: New file - mechanisms to exchange definitions
230 between Scheme and Elisp.
232 Following changes try to make the Elisp evaluation module less
233 Emacs-dependent; in other words, so that it isn't necessary to try
234 to load the whole Emacs environment before evaluating basic
235 non-Emacs-specific Elisp code.
237 * variables.scm, internals/evaluation.scm: Changed (lang elisp
238 emacs) to (lang elisp base).
240 * emacs.scm (lang): Removed.
242 * base.scm (lang): New file (non-emacs-specific replacement for
245 2001-10-28 Neil Jerram <neil@ossau.uklinux.net>
247 * primitives/symprop.scm (symbol-name): New primitive.
249 * primitives/strings.scm (stringp): New primitive.
251 * primitives/pure.scm (purify-flag): New variable.
253 * primitives/numbers.scm (numberp): New primitive.
255 * internals/fset.scm (fset): Set procedure and macro name
256 properties usefully to match Elisp symbol names. Also bind Elisp
257 function definition variables to similarly named symbols in the
258 (lang elisp variables) module.
260 * transform.scm (transformer, m-unwind-protect): Added support for
262 (m-quasiquote): Use 'quasiquote rather than 'quote.
263 (transform-lambda, m-defmacro): When no rest arguments, set the
264 rest parameter to '() rather than #f. It shouldn't make any
265 difference, but it feels more right.
267 * README: Enlarged description of current status.
269 * Makefile.am (elisp_sources): Added variables.scm.
271 * variables.scm: New file.
273 2001-10-26 Neil Jerram <neil@ossau.uklinux.net>
275 * buffers.scm, calling.scm: Removed. These should have
276 disappeared during the reorganization described below, but I
277 missed them by mistake.
279 * primitives/symprop.scm (set, boundp, symbol-value): Changed to
280 use (module-xx the-elisp-module ...) rather than (local-xx ...).
281 (symbolp): Accept either symbols or keywords.
282 (set-default, default-boundp, default-value,
283 local-variable-if-set-p): New.
285 * primitives/match.scm (string-match, match-data): Store last
286 match data in Emacs rather than Guile form, to simplify
287 implementation of ...
288 (set-match-data, store-match-data): New.
290 * primitives/load.scm (autoload, current-load-list): New. (But
291 autoload is just stubbed, not properly implemented.)
293 * primitives/lists.scm (nth, listp, consp, nconc): New.
295 * primitives/fns.scm (byte-code-function-p, run-hooks): New.
297 * transform.scm (transform-application, transformer-macro): New
298 scheme for transforming procedure arguments while leaving macro
299 args untransformed. (See also associated change in libguile.)
300 (m-defconst): Simplified, now uses m-setq.
302 * Makefile.am: Changed so that it only deals with files directly
303 in this directory; otherwise files don't install cleanly.
305 * internals/Makefile.am, primitives/Makefile.am,
306 internals/.cvsignore, primitives/.cvsignore: New files.
308 2001-10-26 Neil Jerram <neil@ossau.uklinux.net>
310 * transform.scm (transformer): New handling for (1) quasiquoting
311 syntax like "(` ...)" as well as the more normal "` ..."; (2)
312 `function'; (3) interactive specification in lambda body.
313 Simplied handling for `setq'.
314 (transform-inside-qq): Fixed to handle improper as well as proper
316 (transform-lambda/interactive): New; wraps transform-lambda to
317 handle setting of various procedure properties.
318 (transform-lambda, m-defmacro): Changed `args' and `num-args' to
319 `%--args' and `%--num-args' in the hope of avoiding lexical
320 vs. dynamic name clashes.
321 (m-and): Use #f instead of '() where a condition fails.
323 Plus big hierarchy reorganization, in which most of the previous
324 occupants of lang/elisp moved to lang/elisp/primitives, with some
325 internal processing being split out into lang/elisp/internals.
326 The upshot looks like this:
328 * internals/trace.scm, internals/set.scm, internals/load.scm,
329 internals/fset.scm, internals/signal.scm, internals/time.scm,
330 internals/format.scm, internals/null.scm,
331 internals/evaluation.scm, primitives/buffers.scm,
332 primitives/features.scm, primitives/format.scm,
333 primitives/time.scm, primitives/guile.scm, primitives/keymaps.scm,
334 primitives/lists.scm, primitives/load.scm, primitives/match.scm,
335 primitives/numbers.scm, primitives/pure.scm, primitives/read.scm,
336 primitives/signal.scm, primitives/strings.scm,
337 primitives/symprop.scm, primitives/system.scm, primitives/fns.scm:
340 * features.scm, format.scm, fset.scm, guile.scm, keymaps.scm,
341 lists.scm, load.scm, match.scm, numbers.scm, pure.scm, read.scm,
342 signal.scm, strings.scm, symprop.scm, system.scm, time.scm,
343 trace.scm: Removed files.
345 2001-10-23 Neil Jerram <neil@ossau.uklinux.net>
347 * match.scm (string-match): New implementation using new
348 `make-emacs-regexp' primitive; old workaround implementation
349 renamed to `string-match-workaround'.
351 2001-10-21 Neil Jerram <neil@ossau.uklinux.net>
353 * transform.scm (m-defun, m-defmacro, m-let, m-defvar,
354 m-defconst): Use more selective tracing mechanism (provided by new
357 * symprop.scm (get, boundp), transform.scm (transform-lambda,
358 m-defmacro): Remove unnecessary uses of nil-ify and t-ify.
360 * match.scm (string-match): Workaround Guile/libc regex
363 * emacs.scm: Move elisp primitive definitions into more specific
364 files, so that emacs.scm contains only overall code.
366 * Makefile.am: Added new files.
368 * numbers.scm, trace.scm, time.scm, pure.scm, system.scm,
369 read.scm, calling.scm, guile.scm: New files.
371 2001-10-20 Neil Jerram <neil@ossau.uklinux.net>
373 * Makefile.am (elisp_sources): Added match.scm and strings.scm.
375 * match.scm, strings.scm: New files.
377 2001-10-19 Neil Jerram <neil@ossau.uklinux.net>
379 * transform.scm: Replace uses of `nil' by `#f' or `'()'.
381 * Makefile.am (elisp_sources): Added lists.scm.
383 * load.scm (the-elisp-module): Corrected (lang elisp emacs) module
386 * lists.scm (lang): New file containing list-related primitives.
388 * emacs.scm: Corrected module name.
390 2001-10-19 Neil Jerram <neil@ossau.uklinux.net>
392 Initial implementation of an Emacs Lisp translator, based on
393 transformer code originally written by Mikael Djurfeldt.
395 * Makefile.am, .cvsignore: New.
397 * ChangeLog, README, buffers.scm, emacs.scm, features.scm,
398 format.scm, fset.scm, keymaps.scm, load.scm, signal.scm,
399 symprop.scm, transform.scm: New files.