summaryrefslogtreecommitdiffstats
path: root/txr.1
Commit message (Collapse)AuthorAgeFilesLines
* linenoise: Ctrl-X Ctrl-V super verbatim mode.Kaz Kylheku2015-09-171-0/+11
| | | | | | | | * linenoise/linenoise.c (edit): Support a verbatim entry mode with limited commands, in which most characters self-insert, including Enter. * txr.1: Documented.
* Version 116.txr-116Kaz Kylheku2015-09-171-2/+2
| | | | | | | | | | * RELNOTES: Updated. * configure, txr.1: Bumped version and date. * share/txr/stdlib/ver.tl: Likewise. * txr.vim, tl.vim: Regenerated.
* Listener configuration variables.Kaz Kylheku2015-09-171-7/+39
| | | | | | | | | | | | | | | | | | * linenoise/linenoise.c (lino_get_multiline): New function. * linenoise/linenoise.h (lino_get_multiline): Declared. * parser.c (listener_hist_len, listener_multi_line_p_s): New symbol global variables. (repl): Set linenoise history length and multi-line mode from the *listener-hist-len* and *listener-multi-line-p* variables on each call. Set the *listener-multi-line* variable from the lino_t object's current state after each linenoise call. (parse_init): Initialize new global variables and register them as special variables. * txr.1: Update sentence which says that history is fixed at 100 lines. Document listener configuration variables.
* Describe listener limitations.Kaz Kylheku2015-09-161-0/+7
| | | | * txr.1: New section about line length limit and other restrictions.
* Rearrange some subsections.Kaz Kylheku2015-09-161-36/+37
| | | | | * txr.1: Clear Screen, Suspend, and History Persistence are not editing commands. They get their own sections.
* linenoise: edit command line in external editor.Kaz Kylheku2015-09-161-0/+24
| | | | | | | | * linenoise/linenoise.c (tr, edit_in_editor): New static functions. (edit): edit_in_editor hooked in under Ctrl-X Ctrl-E. * txr.1: Documented.
* linenoise: enhanced multi-line mode with line breaks.Kaz Kylheku2015-09-161-3/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The linenoise multi-line mode is just a glorified line wrapper, and not actualy a multi-line editor, like in GNU Readline and others. This commit fixes it. The edit buffer can now contain line breaks, separated by carriage return characters. (In single-line mode, these characters continue to be displayed as ^M). The row and column calculations in the multi-line refresh follow this data representation. * linenoise/linenoise.c (sync_data_to_buf): This function now takes an extra argument telling it whether multi-line mode is in effect for the rendering. In multi-line mode, the prompt is now added to the display data, so that multi-line refresh is simplified by not having to account for the prompt length in various calculations. Also, in multi-line mode, carriage returns are rendered to display as CR-LF pairs, since they denote embedded line breaks. (complete_line): Pass mlmode to sync_data_to_buf. (struct row_values): New struct, for returning multiple row values out of a function. (screen_rows, col_offset_in_str): New static functions. (refresh_multiline): Modified to use screen_rows and col_offset_in_str for its calculations, and not to deal with the prompt at all, since the prompt is rolled into the display data. (refresh_line, edit_insert): Pass mlmode to sync_data_to_buf. * txr.1: Documented multi-line mode.
* linenoise: parenthesis-matching backward jump.Kaz Kylheku2015-09-151-0/+22
| | | | | | | | | | | * linenoise/linenoise.c (LINENOISE_PAREN_DELAY): New preprocessor symbol. (scan_match_rev, scan_rev, usec_delay, paren_jump): New static functions. (edit): Handle closing parenthesis, bracket and brace by inserting and calling paren_jump. * txr.1: Documented.
* Wording and grammar fix under permutationsKaz Kylheku2015-09-151-3/+3
| | | | | * txr.1: Fix inappropriately copy and pasted ungrammatical text "permutations is of zero length".
* Implement ~/.txr_profile mechanism.Kaz Kylheku2015-09-131-0/+22
| | | | | | | | | | | | * parser.c (load_rcfile): New function. (repl): Compute profile file name and try to load it before entering loop. * sysif.c (statp): Linkage becomes external. * sysif.h (statp): Declaration updated. * txr.1: Documented.
* linenoise: recognize additional commands in search.Kaz Kylheku2015-09-131-3/+7
| | | | | | | | | * linenoise/linenoise.c (history_search): Editing keys should leave search mode and be processed in command mode. Also, let's have Ctrl-L and Ctrl-Z work, but stay in search mode. * txr.1: Documented.
* linenoise: support completion in the middle of line.Kaz Kylheku2015-09-121-5/+3
| | | | | | | | | * linenoise/linenoise.c (compare_completions): Restructure with help of new lino_copy function to collect completions just for the prefix of the line up to the cursor position, and recombine those with the suffix. * txr.1: Doc updated.
* linenoise: incorrect ESC treatment in completion.Kaz Kylheku2015-09-121-12/+1
| | | | | | | | | | * linenoise/linenoise.c (complete_line): ESC must not be treated specially when leaving completion mode; it must accept the completed line. The original code did this wrong in my opinion and I propagated the error. * txr.1: Remove all mention of special ESC treatment in completion mode.
* linenoise: Suppress unknown control characters.Kaz Kylheku2015-09-121-5/+7
| | | | | | | * linenoise/linenoise.c (edit): Don't let characters less than 32 be inserted. * txr.1: Documented that control characters are rejected.
* linenoise: Ctrl-R searchKaz Kylheku2015-09-121-0/+45
| | | | | | | | | | | * linenoise/linenoise.c (next_hist_match, history_search): New static function. (edit): New Ctrl-R case added to early switch that also handles Tab completion, and calls history_search. (lino_free): Adding null check, so we can safely call lino_free(0). history_search relies on this. * txr.1: Documented search.
* Treat comment lines in repl, and plug memory leak.Kaz Kylheku2015-09-111-2/+10
| | | | | | | | | | * parser.c (repl): If we continue the loop due to detecting a blank line, we must free that line, since we are outside of the unwind block (and continue would violate that block if we were). If a line contains nothing but a comment, then enter that line into the history. * txr.1: Documented treatment of commented lines.
* New :read command in repl for direct stdin parse.Kaz Kylheku2015-09-111-0/+25
| | | | | | | | * parser.c (read_eval_ret_last): New function. (repl): Use read_eval_ret_last for :read command. * txr.1: Document :read in new section on direct read from the terminal.
* Quit if input form is :quit not its value.Kaz Kylheku2015-09-111-1/+1
| | | | | | | | * parser.c (repl): Subtle difference. Test form's syntax for equality to :quit, not its value. The REPL should not terminate if a form happens to calculate :quit as a value. * txr.1: Updated.
* Document some special keys supported by linenoise.Kaz Kylheku2015-09-111-2/+5
| | | | * txr.1: document Home, End and Delete support.
* linenoise: Ctrl-C cleanly cancels completion.Kaz Kylheku2015-09-111-3/+15
| | | | | | | | | | * linenoise/linenoise.c (complete_line): If Ctrl-C is pressed in completion mode, we cancel completion and return 0 so the command loop reads a new character. * txr.1: Documented Ctrl-C in completion mode, and removed the falsehood that ESC is a cancel command, adding instead an explanation about the ESC handling is really for.
* Version 115.txr-115Kaz Kylheku2015-09-101-2/+2
| | | | | | | | | | * RELNOTES: Updated. * configure, txr.1: Bumped version and date. * share/txr/stdlib/ver.tl: Likewise. * txr.vim, tl.vim: Regenerated.
* Fix misspelled :toinger filter.Kaz Kylheku2015-09-101-1/+1
| | | | | | | | | | | | | | | | | | | The manual documents a filter called :tointeger, but it has never existed. The keyword was misspelled in the source code from the beginning as :toinger. I'm fixing the typo and renaming the filter to :toint at the same time. * filter.c (tointeger_k, toint_k): Former renamed to latter. (filter_init): Initialize toint_k with correctly spelled symbol. Register filter under toint_k. * filter.h (tointeger_k, toint_k): Former renamed to latter. * txr.1: Changed mention of :tointeger to :toint.
* Bugfix: *args* not bound for command line expressions.Kaz Kylheku2015-09-101-8/+14
| | | | | | | | | | | | | | | | The documentation says that *args* is bound to nil, but actually it is not bound at all. Let us fix this by actualy binding *args* to the remaining arguments, and by also allowing modification of *args* to dynamically take effect. * txr.c: Set up value of *args* prior to processing any option which evaluates TXR Lisp. Afterwards, reload the argument list from that variable. * txr.1: Documented semantics of *args* during command line processing.
* Don't scan C source code for Lisp symbols.Kaz Kylheku2015-09-101-0/+38
| | | | | | | | | | | | | | * eval.c (eval_init): Register package-alist, package-name and package-symbols intrinsics. * genvim.txr: Rather than scanning C sources for TXR Lisp symbols, iterate over the packages and their symbols, collecting anything which has a binding or is self-evaluating. To get the stdlib symbols, we trigger the autoloads by doing boundp queries on a few symbols. * txr.1: Document package-alist, package-name and package-symbols.
* Bugfix: make self-path visible to Lisp.Kaz Kylheku2015-09-101-0/+21
| | | | | | | | | | | | | | | The self-path variable is not bound in TXR Lisp scripts or the command line. * txr.c (txr_main): Set self-path to "cmdline-expr" before command line Lisp evaluations. (For TXR pattern language syntax invoked in a -c, it continues to be "cmdline"). Set self-path to the file name when reading a Lisp file. Also, the legacy, undocumented *self-path* is only set for TXR scripts, and is reverted to being a special variable, not a global lexical. * txr.1: Documented self-path in more detail.
* Formatting under new macro.Kaz Kylheku2015-09-091-0/+1
| | | | * txr.1: Missing .desc added.
* Documented interactive listener.Kaz Kylheku2015-09-081-0/+343
|
* New functions, subtypep and typep.Kaz Kylheku2015-09-081-0/+144
| | | | | | | | | | | | | | | | * eval.c (eval_init): Register subtypep and typep. * eval.h (list_s): Existing variable declared. * lib.c (atom_s, integer_s, number_s, sequence_s, string_s): new symbol variables. (subtypep, typep): New functions. (obj_init): Initialize new symbol variables. * lib.c (atom_s, integer_s, number_s, sequence_s, string_s): Declared. * txr.1: Documented type hierarchy and the new functions.
* Random states of type random-state, not *random-state*.Kaz Kylheku2015-09-081-0/+8
| | | | | | | | | | | | | | | * lib.c (compat_fixup): Call rand_compat_fixup. * rand.c (random_state_var_s): New global symbol variable. (rand_compat_fixup): New static function. (rand_init): Initialize random_state_var_s by intering the earmuffed symbol *random-state*. Initialize random_state_s to the non-earmuffed symbol random-state. * rand.h (random_state_var_s): Declared. (random_state): Macro updated to look up the special variable using random_state_var_s, rather than random_state_s. (rand_compat_fixup): Declared.
* Debugger and compatibility now major sections.Kaz Kylheku2015-09-071-5/+7
| | | | | * txr.1: Debugger and Compatibility are moved out of the TXR library description, into their own major sections.
* kill function returns boolean rather than integer.Kaz Kylheku2015-09-071-1/+11
| | | | | | | | * signal.c (kill_wrap): Return boolean indication of success, with compatibility to previous behavior. * txr.1: Document return value of kill, and put in compatibility note.
* Adding raise function.Kaz Kylheku2015-09-071-0/+17
| | | | | | | * signal.c (raise_wrap): New static function (sig_init): Register raise intrinsic. * txr.1: Documented raise.
* Parse errors lose program prefix and parens.Kaz Kylheku2015-09-061-0/+10
| | | | | | | | | | | * parser.l (yyerrorf): Don't print the program prefix and parenthes, except if compatibility to 114 or older is requested. The main motivation for this is the repl, where the program prefix is not informative. The new format is also a de facto standard which is compatible with other parsers. Vim understands it directly. * txr.1: Documented.
* Version 114.txr-114Kaz Kylheku2015-09-021-2/+2
| | | | | | | | | | | | * RELNOTES: Updated. * configure, txr.1: Bumped version and date. * share/txr/stdlib/ver.tl: Likewise. * genvim.txr: Scan struct.c, path-test.tl and struct.tl files. * txr.vim, tl.vim: Regenerated.
* Unix password database access.Kaz Kylheku2015-09-011-0/+79
| | | | | | | | | | | | | | | * configure: Detect getpwuid, getpwuid_r and others. * sysif.c (passwd_s, name_s, gecos_s, dir_s, shell_s): New symbol variables. (setpwent_wrap, endpwent_wrap, fill_passwd, make_pwstruct, getpwent_wrap, getpwuid_wrap, getpwnam_wrap): New static functions. (sysif_init): Initialize new symbol variables. Create passwd structure type. Register setpwent, endpwent, getpwent, getpwuid and getpwnam intrinsics. * txr.1: Documented passwd structure and functions.
* Document new time structure and functions.Kaz Kylheku2015-09-011-0/+65
| | | | | * txr.1: Document time struct, time-struct-local and time-struct-utc.
* Documenting stat structure.Kaz Kylheku2015-09-011-25/+47
| | | | | | * txr.1: stat structure described; places updated to refer to it rather than the old propertly list. Compatibility note added.
* Fix bad .meta/.metn formatting.Kaz Kylheku2015-09-011-5/+5
| | | | | * txr.1: Fixed incorrect macro use under in, mapdo, set, and getenv.
* Fix wrong description of :wholeKaz Kylheku2015-09-011-2/+32
| | | | | * txr.1: :whole doesn't bind the entire macro form. Added Dialect Note to compare with CL.
* Struct documentation.Kaz Kylheku2015-08-311-5/+750
| | | | * txr.1: New section on structs documenting functions and macros.
* Document alternation syntax.Kaz Kylheku2015-08-291-0/+8
| | | | | * txr.1: The { x | y } notation has been used in the document for a long time; now it is explained.
* Fix duplication in manpage.Kaz Kylheku2015-08-251-15/+1
| | | | | * txr.1: Verbatim exact duplicate of packagep documentation removed. Fixed duplicated mknod heading over description of chmod.
* Document previously undocumented command line options.Kaz Kylheku2015-08-241-0/+21
| | | | | | * txr.1: Documented --gc-debug, --vg-debug and --dv-regex. * txr.c (help): Cover above options.
* Compatibility <= 107 allows redefinition of builtins.Kaz Kylheku2015-08-241-1/+6
| | | | | | | | * eval.c (builtin_reject_test): Suppress the diagnostic against redefinition of built-in macros and operators if the compatibility is 107 or lower. The rejection appeared in 108. * txr.1: Document this compatibility behavior.
* New function: shuffle.Kaz Kylheku2015-08-241-0/+21
| | | | | | | | * eval.c (eval_init): Register shuffle as intrinsic. * lib.c (shuffle): New function. * lib.h (shuffle): Declared.
* Use of new args for function calls in interpreter.Kaz Kylheku2015-08-231-12/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * args.c (args_copy_to_list): New function. * args.h (ARGS_MIN): New preprocessor symbol. (args_add_list): New inline function. (args_copy_to_list): Declared. * debug.c (debug): Args in debug frame are now struct args *. Pull them out nondestructively for printing using args_copy_to_list. * eval.c (do_eval_args): Fill struct args argument list rather than returning evaluated list. Dot position evaluation is handled by installing the dot position value as args->list. (do_eval): Allocate args of at least ARGS_MAX for the call to do_eval_args. Then use generic_funcall to invoke the function rather than apply. (eval_args_lisp1): Modified similarly to do_eval_args. (eval_lisp1): New static function. (expand_macro): Construct struct args argument list for the sake of debug_frame. (op_dwim): Allocate args which are filled by eval_args_lisp1, and applied to the function/object with generic_funcall. The object expression is separately evaluated with eval_lisp1. * match.c (h_fun, v_fun): Construct struct args arglist for the sake of debug_frame call. * unwind.c (uw_push_debug): args argument becomes struct args *. * unwind.h (struct uw_debug): args member becomes struct args *. (uw_push_debug): Declaration updated. * txr.1: Update documentation about dot position argument in function calls. (list . a) now works, which previously didn't.
* Clarification about @rest in do/op syntax.Kaz Kylheku2015-08-231-9/+20
| | | | | | * txr.1: Make it clear that @rest is not inserted if meta-numbers or @rest is present. Move example to the end.
* Missing notes about global lexical variables.Kaz Kylheku2015-08-201-8/+43
| | | | | | * txr.1: Note that TXR Lisp has global lexicals, and that some library variables are examples of such, and that defparm is defparameter in CL.
* Wording in description of quasiquote.Kaz Kylheku2015-08-201-2/+2
| | | | | * txr.1: An unquote's evaluation should be contrasted with the quasiquote's suppression of it, not with the quote.
* Version 113.txr-113Kaz Kylheku2015-08-141-2/+2
| | | | | | | | * RELNOTES: Updated. * configure, txr.1: Bumped version and date. * share/txr/stdlib/ver.tl: Likewise.