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.