summaryrefslogtreecommitdiffstats
path: root/ChangeLog
Commit message (Collapse)AuthorAgeFilesLines
* * genman.txr: Simplify double plass over BODY into single pass.Kaz Kylheku2015-07-031-0/+4
|
* Allow op arguments like @1 to be places.Kaz Kylheku2015-07-031-0/+9
| | | | | | | * share/txr/stdlib/place.tl: Introducing new defplace for (sys:var ...) which is treated as if it were a symbol, in anticipation of the op/do macro placing that syntax with a symbol.
* Support trailing semicolon after hex/octal characters.Kaz Kylheku2015-07-021-0/+18
| | | | | | | | | | | | | | | | * parser.l (%option): Remove nounput option since we need yyunput. (grammar): Rule for matching hex and octal escape in SPECIAL state recognizes optional semicolon. In 109 compatibility, this is pushed back into the stream, otherwise consumed. * txr.1: Updated documentation, including compat notes. * genvim.txr (txr_char): Include optional semicolon in match. Corrected some errors where 8 and 9 were being included as matches for octal digits. (txr_error): Default match for \x or \o not followed by digits.
* Hash-bang support for .tl files.Kaz Kylheku2015-07-021-0/+18
| | | | | | | | | | | | | | | | * parser.c (read_eval_stream): New boolean argument to request hash bang support. * parser.h (read_eval_stream): Declaration updated. * eval.c (sys_load): Pass new thid argument to read_eval_stream, to decline hash bang support. * match.c (v_load): Likewise. * txr.c (txr_main): Request hash bang support from read_eval_stream. Thus files referenced from the txr command line can have a #! line, which is ignored.
* Handle escapes accurately in Vim syntax highlighting.Kaz Kylheku2015-07-021-0/+11
| | | | | | | | | * genvim.txr (txr_badesc, txr_stresc, txr_numesc, txr_regesc): New match categories. (txr_string, txr_quasilit, txr_regex, txl_regex): No longer use skip= argument, but rather contain escape categories. All escapes are colored as Special rather than String, and unknown or malformed escapes are colored as errors.
* * genman.txr: Take advantage of \@ escape in quasilit.Kaz Kylheku2015-07-011-0/+9
| | | | | | | * genvim.txr (txr_escat): New match category containing \@. Colorized a String. (txr_quasilit): Contains txr_escat. Thus, \@ looks like any other escape inside a quasilit.
* * genman.txr: Bugfix: reproduce the correct opening bracketKaz Kylheku2015-07-011-0/+5
| | | | before a function link.
* Fix issues in configure found by ShellCheck.Kaz Kylheku2015-06-271-0/+10
| | | | | | | | * configure (have_timegm, tm_gmtoff, tm_tmzone): Unused variables removed. (SIZEOF_LONG_LONG_T): Reference to nonexistent variable fixed. Also, fixed two instances of arithmetic expressions using unnecessary $ prefixes on variables.
* Fix TXR 97 regression in quasiliterals.Kaz Kylheku2015-06-271-0/+11
| | | | | | | | | * eval.c (expand_quasi): When the modifiers argument of a var item is expanded, the expansion incorrectly places it as the fourth item rather than third. This is effectively a continuation of the incomplete regression fix that was applied on 2014-08-29. The breakage is that `@{(expr) modifier}` ignores modifier whenever (expr) is an expression that undergoes expansion.
* Third round of quasiliteral-related fixes.Kaz Kylheku2015-06-261-0/+3
| | | | | | | | | * parser.l (char_esc): Recognize \@ escape. (grammar): Add a rule for a \@ escape in quasiliterals, and quasi word list literals. * txr.1: Document \@, and remove the lie that @@ encodes for a single @ in quasiliterals.
* Third round of quasiliteral-related fixes.Kaz Kylheku2015-06-261-0/+8
| | | | | | * parser.l (char_esc): Recognize \@ escape. (grammar): Add a rule for a \@ escape in quasiliterals, and quasi word list literals.
* Second round of quasiliteral-related fixes.Kaz Kylheku2015-06-261-0/+11
| | | | | | | | | * parser.l: Only shift to QSPECIAL state when @ is followed by a trailing context consisting of certain characters. Not every kind of Lisp object syntax can be introduced with @ in a quasiliteral. Adding a rule to produce an error when @ appears that is not followed by an allowed character.
* First round of quasiliteral-related fixes.Kaz Kylheku2015-06-261-0/+23
| | | | | | | | | | | | | | | | | | | | | * parser.l: Do not try to recognize floating-point literals in QSPECIAL state; that is not possible because @134.3 in a quasiliteral parses as a METANUM followed by ".3". On the other hand, recognize METANUM literals in QSPECIAL state, so that @@123 scans. Recognize @ as a token in QSPECIAL state, so @@abc will scan. When transitioning from QSILIT and QWLIT states to QSPECIAL upon scanning @, return a @ token, which is now parsed in the grammar. * parser.y (quasi_meta_helper): New static function. (q_var): Do not handle SYMTOK any more, only the braced variable syntax. SYMTOK is handled as a n_expr. Braced vars are handled with explicit '@' token, which is now produced by the scanner when it shifts from QSILIT to QSPECIAL. (quasi_item): No longer necessary to recognize various forms here such as quotes and splices. Just recognize a n_expr, preceded by '@'.
* * genman.txr: New filter to add hyperlinks within code inKaz Kylheku2015-06-261-0/+5
| | | | more places such as examples and summary lists.
* * txr.1: partition example: wrong use of where function.Kaz Kylheku2015-06-241-0/+4
|
* * hash.c (hash_from_pairs, hash_list): New functions.Kaz Kylheku2015-06-241-0/+11
| | | | | | | | | * hash.h (hash_from_pairs, hash_list): Declared. * eval.c (eval_init): Registered hash-from-pairs and hash-list intrinsic. * txr.1: Documented new functions.
* Refactoring n-ary functions to use a single helper.Kaz Kylheku2015-07-241-0/+9
| | | | | | | * lib.c (nary_op): New function. (plusv, mulv, logandv, logiorv): Use nary_op. * lib.h (nary_op): Declared.
* Hash subset testing.Kaz Kylheku2015-06-231-0/+13
| | | | | | | | | | | * eval.c (eval_init): Register hash-subset and hash-proper-subset intrinsics. * hash.c (hash_subset, hash_proper_subset): New functions. * hash.h (hash_subset, hash_proper_subset): Declared. * txr.1: New functions documented.
* * genvim.txr: Add ifa.tl library file.Kaz Kylheku2015-06-221-0/+6
| | | | * tl.vim, txr.vim: Regenerated.
* * share/txr/stdlib/place.tl: Get rid of big progn around theKaz Kylheku2015-06-221-0/+7
| | | | | | whole module. * genvim.txr: Handle (def's not preceded by spaces.
* Version 109.txr-109Kaz Kylheku2015-06-211-0/+12
|
* * lisplib.c (ifa_set_entries): Add conda.Kaz Kylheku2015-06-211-0/+22
| | | | | | | | * share/txr/stdlib/ifa.tl (conda): New macro. * tests/012/ifa.tl: Adding test for conda. * txr.1: Documenting conda.
* * genman.txr: Rewrite the man2html-generated inner name links with hashKaz Kylheku2015-06-201-0/+7
| | | | | | values derived from the title text, so that when sections are inserted or deleted, the URL's remain stable. The PREAMBLE is gone, and VERSION is collected when processsing the body.
* * genman.txr (month-name): Filter removed.Kaz Kylheku2015-06-201-0/+5
| | | | Page date is converted to a time value, and later formatted.
* Remove places.h generation hack.Kaz Kylheku2015-06-201-0/+16
| | | | | | | | | | | | | | * Makefile (GEN_HDRS, LISP_TO_C_STRING): Variables removed. (%.h: %.tl): Rule removed. The place.h header is no longer generated from place.tl. * lisplib.c (place_instantiate): Load place.tl from stdlib directory, rather than obtaining it from a string literal in generated header place.h. * place.tl: Moved to share/txr/stdlib directory. * genvim.txr: Refer to place.tl in stdlib.
* * eval.c (eval_init): Register have function, synonym of true.Kaz Kylheku2015-06-201-0/+6
| | | | * txr.1: Document have.
* * txr.1: Documented ifa.Kaz Kylheku2015-06-191-0/+9
| | | | | | | * share/txr/stdlib/ifa.tl: Tightened up the tests for situations when the macro is ill-formed, following the improved specification. Also, eval-error is thrown instead of just error.
* Test ifa macro.Kaz Kylheku2015-06-191-0/+11
| | | | | | | | | * Makefile (TEST_OUT): Include .tl files. (tst/%.out): New rule variant, from .tl prerequisite. * tests/012/ifa.expected: New file. * tests/012/ifa.tl: New file.
* * parser.c (parser_mark): Do not mark p->syntax_tree ifKaz Kylheku2015-06-191-0/+6
| | | | | its value is nao. Introduced on 2015-06-10, "Error handling improvement in read".
* * lib.c (mkstring): Fix neglect to null terminate.Kaz Kylheku2015-06-181-0/+4
|
* * lib.c (cat_str): Detect overflow in the total lengthKaz Kylheku2015-06-181-0/+5
| | | | calculation.
* Improvements in equal hashing function.Kaz Kylheku2015-06-181-0/+9
| | | | | | | * hash.c (equal_hash): For conses and vectors, ensure that distinct permutations lead to different hash codes. This is done by accumulating the partial hash with a multiplier, rather than just adding subhashes.
* Library .txr files become .tl and are autoloaded.Kaz Kylheku2015-06-181-0/+19
| | | | | | | | | | | | | | | | | * lisplib.c (ver_set_entries, ver_instantiate, txr_case_set_entries, txr_case_instantiate): New static functions. (lisplib_init): Register new functions. * share/txr/stdlib/txr-case.txr: Reduced to a load for the corresponding .tl file, retained for backward compatibility. * share/txr/stdlib/ver.txr: Likewise. * share/txr/stdlib/txr-case.tl: New file, based on previous contents of corresponding .txr file. * share/txr/stdlib/ver.tl: Likewise.
* Adding anaphoric ifa macro.Kaz Kylheku2015-06-171-0/+22
| | | | | | | | | | | | | | | | | | | | * Makefile (install): Install .tl files present in stdlib directory. (INSTALL): Handle argument 2 being a list. * eval.c (load): New function. * eval.h (load): Declared. * lisplib.c (ifa_set_entries, ifa_instantiate): New functions to lazily load ifa.tl. (lisplib_init): Register new functions. * txr.c (stdlib_path): New variable. (sysroot_init): Store the stdlib path in stdlib_path. * txr.h (stdlib_path): Declared. * share/txr/stdlib/ifa.tl: New file.
* Refactoring of lisplib.cKaz Kylheku2015-06-171-0/+13
| | | | | | | | | | | * lisplib.c (set_dlt_entries): New static function. (set_place_dlt_entries): Renamed to place_set_entries. Uses set_dlt_entries as subroutine. (place_instantiate): Argument changes from table to function, which is invoked to null out the hash entries. (dlt_register): New static function. (lisplib_init): Use dlt_register to register dynamic loading of places_tl.
* Version 108.txr-108Kaz Kylheku2015-06-131-0/+12
|
* * txr.1: Documented Lisp loading.Kaz Kylheku2015-06-131-0/+4
|
* New --lisp option: treat unsuffixed files as Lisp.Kaz Kylheku2015-06-131-0/+7
| | | | | * txr.c (help): Added help text. (txr_main): Handle lisp option.
* * txr.c (txr_main): Handle Lisp files.Kaz Kylheku2015-06-131-0/+4
|
* Lisp load macro.Kaz Kylheku2015-06-131-0/+9
| | | | | | | * eval.c (sys_load_s): New symbol variable. (sys_load, me_load): New static functions. (eval_init): Initialize sys_load_s, register sys:load intrinsic function and load macro.
* @(load) and @(include) now load Lisp code.Kaz Kylheku2015-06-121-0/+13
| | | | | | | | | | | * match.c (v_load): Check txr_lisp_p flag coming out of open_txr_file and handle the Lisp case usin read_eval_stream. * parser.c (read_eval_stream, get_parser, parser_errors): New functions. * parser.h (read_eval_stream, get_parser, parser_errors): Declared.
* Preparing for lisp loading.Kaz Kylheku2015-06-101-0/+15
| | | | | | | | | | | | | * parser.c (open_txr_file): Rewritten to take new argument which indicates whether to treat an unsuffixed file as TXR or TXR Lisp, and is updated to indicate which is the case by looking at the suffix. * parser.h (open_txr_file): Declaration updated. * match.c (v_load): Follow change in open_txr_file. * txr.c (txr_main): Likewise.
* Error handling improvement in read.Kaz Kylheku2015-06-101-0/+12
| | | | | | | | | | * parser.y (spec): New grammar production to handle the cases that SECRET_ESCAPE_E is not followed by anything (the input ends before any object is scanned, or there is no input token which starts an object). * parser.c (lisp_parse): Deal with EOF indication from parser (the syntax_tree member of parser_t set to nao).
* * parser.y (yybadtoken): Print unexpected characterKaz Kylheku2015-06-101-0/+5
| | | | literally rather than as a Lisp character literal.
* Code simplification.Kaz Kylheku2015-06-081-0/+7
| | | | | * txr.c (txr_main): Replacing two code blocks with single call to existing open_txr_file function.
* Critical bugfix for weak hashes.Kaz Kylheku2015-06-071-0/+9
| | | | | | | * hash.c (hash_mark): Hash tables which have both weak keys and values were not added to the reachable_weak_hashes list, and thus not subject to complete hash processing, leading to corruption.
* * lib.h (mkloc): Rename misleading argument from fun to obj.Kaz Kylheku2015-06-071-0/+4
|
* * parser.c (stream_parser_hash): New static variable.Kaz Kylheku2015-06-071-0/+19
| | | | | | | | | | | | | | | | | | (parser_mark): Mark parser and primer members. (parser, ensure_parser): new argument: primer. (get_parser_impl, ensure_parser): New static functions. (prime_parser): New function. (lisp_parse): Multiple calls to this function on the same stream now logically continue the parse, not resetting the line number to 1. (parse_init): Initialize and gc-protect stream_parser_hash. * parser.h (parser_t): New members, primer and parser. (prime_parser): Declared. (parser): Declaration updated. * parser.y (parse): Now responsible for calling prime_parser.
* * match.c (v_load): Call parse_once rater than parse.Kaz Kylheku2015-06-071-0/+15
| | | | | | | | | | | | | * parser.c (regex_parse): Likewise. * txr.c (txr_main): Likewise. * parser.h (parse): Declaration updated. (parse_once): Declared. * parser.y (parse_once): New function, same as old parse implementation. (parse): Becomes one argument function which works with a previously initialized parser and continues the parse.
* * stream.c (catenated_stream_p, catenated_stream_push): New functions.Kaz Kylheku2015-06-071-0/+9
| | | | * stream.h (catenated_stream_p, catenated_stream_push): Declared.