| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (handler_bind_s): New symbol variable.
(op_handler_bind): New static function.
(do_expand): Traverse handler-bind forms.
(eval_init): Initialize handler_bind_s variable and register handler-bind
operator.
* lisplib.c (except_set_entries, except_instantiate): New functions.
(lisplib_init): Register new functions in dl_table.
* parser.c (intr_s): New symbol variable.
(repl_intr): Throw exception of type intr, rather than error.
This way we can interrupt accidental exception handling loops involving
exceptions derived from error.
(parse_init): Initialize intr_s.
* share/txr/stdlib/except.tl: New file, defines handle macro.
* unwind.c (uw_push_handler): New function.
(invoke_handler): New static function.
(uw_throw): Search loop looks for and processes handlers in addition to
catches.
* unwind.h (uw_frtype_t): New enum member, UW_HANDLE.
(struct uw_catch): Move member visible so it
is in the same position as in struct uw_handler.
(struct uw_handler): New struct type.
(union uw_frame): New member ha of type struct uw_handler.
(uw_push_handler): Function declared.
* txr.1: Added introductory paragraphs to Exception Handling section.
Documented handler-bind and handle. Some minor errors corrected.
|
|
|
|
|
|
|
|
| |
* txr.c (help): Document the behavior.
(banner): New static function.
(txr_main): If listener support compiled in,
show the banner and go to REPL instead of
showing the usage hint and bailing.
|
|
|
|
| |
* txr.c (help): Capitalize TXR, Copyright and Usage.
|
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (eval_init): Register hash-begin and hash-next intrinsics.
* lisplib.c (hash_set_entries, hash_instantiate): New static functions.
(lisplib_init): Register new tables in dl_table.
* share/txr/stdlib/hash.tl: New file.
* txr.1: Document with-hash-iter macro.
|
|
|
|
|
|
|
|
|
|
| |
* struct.c (make_struct): Add unwind protection around
the initialization of the struct object, which calls
the partially initialized object's finalizers if
initialization is abandoned by a non-local exit.
* txr.1: Document the behavior, under make-struct and
the new macro.
|
|
|
|
|
|
|
|
|
|
|
| |
* share/txr/stdlib/struct.tl (defstruct): Rearrange the
generated instance initialization function so that if a :fini
block was specified, it is performed first. Thus if the
remaining initialization code is abandoned, it is possible to
intercept that and invoke the finalizer, which can clean
up any mess left behind.
* txr.1: Document changed order.
|
|
|
|
|
| |
* share/txr/stdlib/struct.tl (defstruct): The nonexistent
uw-throwf function was called instead of throw.
|
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure, txr.1: Bumped version and date.
* share/txr/stdlib/ver.tl: Likewise.
* txr.vim, tl.vim: Regenerated.
|
|
|
|
|
|
|
|
|
|
|
| |
* lisplib.c (with_resources_set_entries): "with-objects" added
to name table.
* share/txr/stdlib/with-resources.tl (with-objects): New macro.
* txr.1: Documented with-objects. Added note to :fini
specifier of defstruct pointing to call-finalizers and
with-objects.
|
|
|
|
|
| |
* eval.c (do_expand): Reduce (progn) to nil,
and (progn single) to single.
|
|
|
|
|
|
|
| |
* eval.c (me_when): Expand to if if there aren't multiple body forms.
(me_unless): Simplify progn.
* tests/012/struct.tl: Update string representation in struct test case.
|
|
|
|
| |
* txr.1: Unlike methods, these don't have an implicit block.
|
|
|
|
|
|
|
|
|
|
| |
* lisplib.c (with_stream_set_entries,
with_stream_instantiate): New static functions.
(lisplib_init): Register new functions in dl_table.
* share/txr/stdlib/with-stream.tl: New file.
* txr.1: Documented new macros.
|
|
|
|
|
|
|
|
|
|
| |
* eval.c (me_defex, register_exception_subtypes): New static
functions.
(eval_init): Registered new defex macro, and
register-exception-subtype and exception-subtype-p
intrinsic functions.
* txr.1: Documented new macro and functions.
|
|
|
|
|
| |
* unwind.c (uw_register_subtype): Error messages should print
symbols with ~s, not the information-losing ~a.
|
|
|
|
| |
* txr.1: listener doesn't handle Unicode properly.
|
|
|
|
|
| |
* txr.1: spelling and grammar errors in various places
in Interactive Listener section.
|
|
|
|
|
|
|
| |
* eval.c (promisep): New static function.
(eval_init): Registered promisep intrinsic.
* txr.1: Documented promisep.
|
|
|
|
|
|
| |
* parser.l: Different text needed for ).1 and a.1 cases,
because the insertion of a zero cannot fix the latter.
Might as well make the messages more detailed.
|
|
|
|
|
| |
* genvim.txr: Some operators should indent like functions.
We don't want these in lispwords.
|
|
|
|
|
|
|
|
|
| |
* struct.c (reset_struct): New function.
(struct_init): Register reset_struct intrinsic.
* struct.h (reset_struct): Declared.
* txr.1: documented reset-struct.
|
|
|
|
|
|
|
|
|
| |
* struct.c (replace_struct): New function.
(struct_init): Register replace_struct intrinsic.
* struct.h (replace_struct): Declared.
* txr.1: documented replace-struct.
|
|
|
|
|
|
|
|
|
| |
* struct.c (clear_struct): New function.
(struct_init): Register clear-struct intrinsic.
* struct.h (struct_init): Declared.
* txr.1: documented clear-struct.
|
|
|
|
|
|
|
|
|
| |
* gc.c (gc_call_finalizers): New function.
(gc_late_init): Register call-finalizers intrinsic.
* gc.h (gc_call_finalizers): Declared.
* txr.1: documented call-finalizers.
|
|
|
|
|
|
|
|
|
|
|
| |
* txr.1: Examples under iff and iffi had two issues:
the false predicate function was used in a role which calls
for a function that unconditionally returns nil.
The correct function is nilf. Square brackets must
be used, otherwise nilf and identity are unbound
variables. Also the equivalence for [iff a] now
indicates that it's equiavlent to a, showing that
it's not useful to default both arguments.
|
|
|
|
|
|
|
|
| |
* eval.c (expand_right_fun, expand_right): New static
functions.
(eval_init): Register expand-right intrinsic.
* txr.1: Documented expand-right.
|
|
|
|
|
| |
* lib.c (conses): Use consp termination test
only if input is a list.
|
|
|
|
|
|
|
|
| |
* eval.c (ginterate_func): New static function.
(ginterate): New function.
(eval_init): Registered ginterate as intrinsic.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* lib.c (take_list_fun, take_while_list_fun,
take_until_list_fun): New static functions.
(take, take_while, take_until, drop, drop_while,
drop_until): New functions.
* eval.c (eval_init): Register intrinsics take,
take-while, take-until, drop, drop-while, drop-until.
* txr.1: Documented.
|
|
|
|
|
|
|
| |
* lib.c (copy_lazy_str): New static function.
(copy_str): Use copy_lazy_str to copy lazy strings.
* txr.1: Documentation added under copy-str.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* share/txr/stdlib/struct.tl (defstruct): Split boa
arguments on colon and generate the lambda
accordingly. The generated function detects which
optional arguments are actually present and only
performs the slot updates for those.
* tests/012/struct.tl: Corrected boa test case.
* txr.1: Documented.
|
|
|
|
|
| |
* struct.c (make_struct): Process property list first,
then call boa constructor, not vice versa.
|
|
|
|
|
| |
* struct.c (make_struct): Don't wastefully evaluate the symbolp
test twice via recursion; assign and fall through.
|
|
|
|
|
|
|
| |
* parser.c (find_matching_syms): Take advantage of the
linenoise Ctrl-X Tab feature by providing substring matches.
* txr.1: Documented Ctrl-X Tab.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A feature is hereby introduced into linenoise whereby
completion mode can be entered via Ctrl-X Tab also, not only
Tab. This is distinguished with a flag in the completion
structure. The intent is that the callback can use this to
provide substring matches not only prefix matches.
* linenoise/linenoise.c (complete_line): Takes a new argument,
and stores it in the new substring member of
lino_completions_t.
(edit): If Tab is typed while in Ctrl-X extended mode,
then fall through to the regular switch, where the TAB
case now recognizes that it is in extended mode and passes
the mode flag to complete_line.
* linenoise/linenoise.h (lino_completions_t): New member,
substring.
|
|
|
|
|
| |
* txr.1: Missing denotation of meta-syntactic identifiers
in meth macro syntax.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* share/txr/stdlib/struct.tl (sys:prune-nil-inits):
Use of slot-p renamed.
* struct.c (struct_init): Register slotp, and make
registration of slot-p conditional on compatibility option.
(slot_p): Function renamed to slotp.
* struct.h (slot_p): Declaration renamed.
* txr.1: References to slot-p fixed to slotp. Compat notes
added.
|
|
|
|
|
| |
* txr.1: Added missing compatibility notes for 117 that
should have been released with 118.
|
|
|
|
|
|
|
|
|
|
| |
* share/txr/stdlib/struct.tl (umeth): New macro.
* struct.c (struct_init): Registered umethod intrinsic.
(umethod_fun): New static function.
(umethod): New function.
* txr.1: Documented.
|
|
|
|
|
|
|
|
|
|
|
| |
If a defstruct slot specifier calls for a slot to
be initialized to nil, that doesn't have to be done
explicitly if the slot isn't inherited.
* share/txr/stdlib/struct.tl (sys:prune-nil-inits): New
function.
(defstruct): Use prune-nil-inits to try to reduce the
lists of static and instance slot specifiers.
|
|
|
|
|
|
|
| |
* struct.c (struct_handle): The situation is that
the object isn't a structure instance, not that
the argument isn't a struct type. Use appropriate
error message.
|
|
|
|
|
| |
* eval.c (eval_progn): If there are no forms to evaluate, then
check for signals.
|
|
|
|
|
|
|
|
|
|
| |
* linenoise/linenoise.c (edit): The recall previous word,
atom and line features now offset relative to the current
navigation position in the history. Previous line means
the line before the currently showing history line, not the
line most recently entered into the history.
* txr.1: Documented.
|
|
|
|
|
|
|
|
| |
* share/txr/stdlib/struct.tl (defstruct): Generate a named
block around the body forms of the :method and
:function lambdas, whose name matches the slot name.
* txr.1: Documented.
|
|
|
|
|
|
|
| |
* linenoise/linenoise.c (edit): Extended Ctrl-X Ctrl-R/r
command added.
* txr.1: Documented.
|
|
|
|
|
|
|
| |
* eval.c (eval_init): Bind macro-time to op_error.
* genvim.txr: No longer manually add macro-time to
txl-orig-sym.
|
|
|
|
|
| |
* genvim.txr (txl-orig-sym, lispwords): New variable.
(generate): Generate Vim set lispwords command.
|
|
|
|
|
| |
* eval.c (symbol_value): lookup_mac doesn't return
a cons cell binding; don't do cdr on it.
|
|
|
|
|
| |
* txr.1: Formatting blunders in defstruct (description of :fini),
new macro, make-struct-type.
|
|
|
|
|
|
|
|
|
|
| |
* RELNOTES: Updated.
* configure, txr.1: Bumped version and date.
* share/txr/stdlib/ver.tl: Likewise.
* txr.vim, tl.vim: Regenerated.
|