1 2NOTICE: This change log is officially (sez me) closed. 3 All further changes documented (hopefully) in "CHANGES". This 4 file was renamed from "CHANGES" to "CHANGES.R3" on Tue Feb 22, 1994. 5 6Changes for vile 3.65: (released Mon Feb 7, 1994) 7(pgf) 8 Big change this release is 8-bit cleanliness. See the help file 9 for 8-bit settings. 10 11 NOTE: If you had a FN-key binding which was bound to a "meta" (high 12 bit) key, you must change your binding to be a M- binding. FN- and M- 13 are no longer synonymous. In addition, we now preserve more of the 14 termio settings, so you may have to explicitly use "stty" to get 15 your meta-bit back. (We used to clear istrip and the parity settings.) 16 17 NOTE2: pc vile, if built with djgpp or watcom compilers, cannot change 18 screens to 43 or 50 line mode. i'm working on it. 19 20 + fix bug in charprocreg() that allowed a buffer to be marked 21 modified even if no changes were made and there is nothing to 22 undo. (region.c) 23 24 + Brackets '[' and ']' are now treated like braces and parentheses 25 when inserting in c-mode. added new #defines for [LR]BRACK to assist 26 this. (insert.c, estruct.h, main.c) 27 28 + A buffer's local "dos" mode is now set to the same as the global 29 "dos" mode when empty, fresh, or when dos-style lines equal unix- 30 style lines. (main.c, file.c, random.c) 31 32 + giving an argument to "set-dos-mode" causes it to turn dos-mode 33 off rather than on. (file.c) 34 35 + allow backspacing over autoindented whitespace, whether or not 36 backspacelimit is set. (insert.c) 37 38 + new commands, ^A-i, ^A-o, and ^A-O, corresponding to i, o, and O, 39 but which do autoindent-override during an insert. Most useful 40 when pasting into a buffer, since the pasted text often already 41 has leading whitespace, and autoindent just adds more. this 42 is a different kind of override than used when pasting in xvile. 43 hmmm. (insert.c, cmdtbl) 44 45 + fixed core dump resulting from calculating indentlen and checking 46 for '#' char at start of empty line. (insert.c) 47 48 + add directory and host names to "vile died" message. added ifdef 49 and prototype for usage of gethostname. currently only used #if 50 BERK is true. (greg mcfarlane) (file.c, proto.h, estruct.h) 51 52 + apply (greg mcfarlane's) fix for bug in unqname, when it's being 53 used at startup, and can't ask for input from user. (file.c) 54 55 + only reclaim or destroy empty unmodified buffers if they don't 56 correspond to existing files. new routine ffexists() to support 57 this. (buffer.c, file.c, fileio,c, proto.h) 58 59 + changed calls to kbd_key() to tgetc(), since SPEC is now outside 60 the range that callers can handle. (window.c spawn.c 61 insert.c history.c exec.c eval.c csrch.c bind.c) 62 63 + changed all references to last1key to refer to lastkey instead, 64 to accompany above change. last1key is gone. (basic.c, opers.c, 65 edef.h) 66 67 + kbd_key() now translates system-specific function-key sequences 68 to canonical '#-c' sequences, which kbd_seq() now interprets. 69 (input.c) 70 71 + allow 8-bit input, by changing SPEC definition, and some table 72 sizes. (estruct.h, input.c, mktbls.c) 73 74 + translate X key-events to a default set of xvile FN-bindings, 75 without using the SPEC define, since it won't fit through the 76 8-bit wide pipe we've constructed. (x11.c) 77 78 + added new modes, printing-low and printing-high, which define 79 the range of 8-bit chars which should _not_ be displayed in 80 octal, but rather as themselves. (modetbl, modes.c, main.c) 81 82 + change how we display 8-bit chars. (display.c) 83 84 + new mode, unprintable-as-octal, to control display of non-printing 85 chars in hex or octal. (display.c, modetbl) 86 87 + new mode, meta-insert-bindings, which allows meta-bindings (M-c) 88 to work while in insert mode. when off, all characters, meta 89 or not, are simply inserted as themselves. when on, meta keys 90 which are bound to functions execute those functions, all others 91 insert themselves. (insert.c, modetbl) 92 93 + tb_get now returns a true 8 bits, no sign-extension. (tbuff.c) 94 95 + allow focusFollowsMouse to be disabled by XDefaults (x11.c) 96 97 + apply fix (kev) for infinite loop on extended lines with certain 98 kinds of tab values. (display.c) 99 100 + attempt at better video support, and raw i/o, for djgpp (ibmpc.c) 101 102 + new routines for ctrl-c/ctrl-break/critical-error handling in 103 djgpp environment. (main.c, proto.h, new file djhandl.c, makefile, 104 makefile.djg) 105 106 + added DJGPP to the direct/dirent ifdef in dirstuff.h 107 108 + fix for sys5 tgetent behavior, when attempting to determine if 109 we're an xterm. (tcap.c) 110 111 + new targets for motorola delta machines (makefile) 112 113 + fixes for core dumps on window resize (from kev) (x11.c) 114 115 + new define for min no. of lines per window. (estruct.h) 116 117 + change if_OPT_WORKING to simple ifdefs. (file.c fileio.c display.c 118 estruct.h) 119 120 + added vanillashar target to makefile, so i can produce shars 121 that the gnuish DOS unshar program will unpack. (makefile) 122 123 + clarify help file regarding regions as used by the operator 124 commands (vile.hlp) 125 126 + applied contributed fix for null fontname (x11.c) 127 128 + changed logic of tags lookup, so i can understand it, and to 129 correct logic surrounding "taglength" (again). if taglength is 130 0, matches must be exact (i.e. all characters significant). if 131 the user enters less than 'taglength' characters, this match must 132 also be exact. if the user enters 'taglength' or more 133 characters, only that many characters will be significant in the 134 lookup. (tags.c) 135 136 + fixed bug with wrap-around reverse searching for a string occurring 137 on the last line of a buffer. (search.c) 138 139 + fixed bug in search/replace operations where replacement string 140 was of the form 'text\1moretext'. the length of the \1 replacement 141 pattern was being obtained incorrectly. (oneliner.c) 142 143 + changed GO32 ifdef to DJGPP, to avoid name conflict with 144 predefinition. (input.c, fileio.c, estruct.h, ibmpc.c, path.c, 145 random.c, termio.c) 146 147 + changed the 'interrupted' global to a routine, so we can poll for 148 a control-C character when real signals aren't available. (buffer.c, 149 edef.h, fences.c, main.c, search.c, word.c) 150 151(tom) 152 + corrected EVCURCHAR case in 'gtenv()' that tried to return the 153 characters at the current position, even when the buffer was empty 154 (eval.c). 155 156 + added ifdef-controls OPT_SHOW_EVAL, OPT_SHOW_REGS, OPT_SHOW_TAGS 157 (cmdtbl, eval.c, estruct.h, line.c, proto.h, tags.c), and renamed 158 OPT_MAP_DISPLAY to OPT_SHOW_MAPS (map.c, estruct.h). 159 160 + use OPT_UPBUFF in 'killbuffer()' (buffer.c). 161 162 + added ifdef-control OPT_WIDE_CTYPES (estruct.h, input.c, main.c). 163 164 + use new macro 'chrBIT()' to fix long/short bitmasks in character 165 tests (estruct.h, line.c). 166 167 + changed 'set_bname()' to a procedure so that it can trim trailing 168 blanks from the buffer-name. This is done so that a ^X-k command 169 applied to a buffer-name beginning with "!" will work. 170 171 + corrected length-computation in 'delins()' so that command 172 ":s/abc\[\(..\))/abc[\1]/" works properly (oneliner.c). 173 174 + corrected offset-computation in 'scanner()' so that wrapped search 175 finds text on the first line after wrapping (search.c). 176 177 + added call to 'update()' in 'ms_processing()' so that 178 "show-registers" display will be properly updated at the end of 179 mouse-selection (ibmpc.c). 180 181 + corrected logic in 'execute_named_command()' that prevented user from 182 typing ":0r foo" in an empty buffer (exec.c). 183 184 + corrected 'bclear()', so that the b_ulinep member is reset if it is 185 freed (buffer.c). 186 187 + lint (fileio.c, npopen.c, spawn.c) 188 189 + absorbed 'fnc2key()' into 'fnc2kcod()' (bind.c), to simplify 190 unbinding of prefix-keys in 'install_bind()'. 191 192 + corrected 'install_bind()' by new procedure 'reset_prefix()', so that 193 mapping characters that happen to be prefix-keys will override their 194 binding (bind.c). 195 196 + added definition LTRIMMED, to use in special cases (i.e., scratch 197 buffers) where we don't really want to show "^J" at the end of lines 198 when "list" mode is enabled (estruct.h, display.c, file.c, line.c, 199 map.c). 200 201 + animated [Mapped Characters] buffer (map.c). 202 203 + modified display of mappings so that using a repeat-count for the 204 ":map" command causes the actual characters to be shown, e.g., 205 "#1" instead of "FN1", (map.c, modes.c). 206 207 + added alternate boolean "glob" mode (in contrast to the normal string 208 mode), for configurations in which vile cannot read filename 209 expansions via a pipe, e.g., VMS or UNIX (mktbls.c, modetbl, glob.c). 210 211 + moved "glob.h" definitions into estruct.h and proto.h because 212 the preceding change requires some definitions to precede inclusion 213 of "nemode.h" within estruct.h (descrip.mms, eval.c, filec.c, glob.c, 214 main.c, makefile, makefile.djg, makefile.tbc, makefile.wat, proto.h, 215 random.c, revlist, tags.c). 216 217 + corrected test in 'index2ukb()', which caused the unnamed-buffer 218 to be shown incorrectly when yanking text after lines had been 219 deleted (line.c). 220 221 + use 'DOT', 'mode_row()', 'buf_head()' and 'win_head()' macros (basic.c, buffer.c, 222 csrch.c, display.c, eval.c, exec.c, 223 file.c, filec.c, finderr.c, globals.c, line.c, random.c, tags.c, 224 tcap.c, tmp.c, undo.c, window.c, word.c) for consistency and readability. 225 226 + modified lines/cols initialization so that 24x80 is assumed if all 227 other lookups fail, needed for apollo sr10.2 dial-in (tcap.c). 228 229 + added macro 'KbSize()' (file.c, estruct.h, x11.c, spawn.c, line.c). 230 231 + corrected 'imdying()' to not save temporary buffers, and to suppress 232 "implybuffer" mode (file.c). 233 234Changes for vile 3.64: (released Wed Dec 23, 1993) 235(pgf) 236 + change arithmetic expression in mktbls.c, so we don't assume 237 boolean expression returns exactly 0 and 1. this exercised 238 a bug in an HP compiler (mktbls,c, from chris sherman) 239 240 + added fallback definition of VDISABLE to termio.c, in case 241 system doesn'd define it. (termio.c) 242 243 + increased stack size for Watcom DOS builds to 16K. probably 244 overkill, but the other DOS builds seems to use 16K as well. 245 246 + cleaned up some of the scanf nonsense, but not nearly enough. 247 (finderr.c) 248 249 + don't let display-page changes affect the user's chosen cursor. 250 (ibmpc.c) 251 252 + use _previous_ indentation level after a line beginning with '#' 253 in cmode. (insert.c, proto.h) 254 255 + use COMSPEC environment variable when spawning a DOS shell (spawn.c) 256 257 + assume we're an xterm if the word "xterm" appears anywhere in the 258 first field of the tcbuf, rather than just in the user's TERM 259 variable. (tcap.c) 260 261 + increased size of tcbuf since SCO core dumps on overflow (tcap.c) 262 263 + initialized tb_last in tb_alloc(). (tbuff.c) 264 265 + couple of minor user suggestions for vile.hlp and the README. 266 267 + don't beep when motions fail due to being aborted. (main.c) 268 269 + check modification time on first change to buffer (file.c, exec.c, 270 proto.h) 271 272 + the filename found for a tags lookup is now passed through doglob(), 273 which means tagfiles can now refer to environment variables etc. 274 (tags.c, from S.Suresh) 275 276 + new X resource, "focusFollowsMouse", causes xvile's current window 277 to track with the mouse cursor. (x11.c, from S.Suresh) 278 279 + added '~' to the characters considered part of a pathname, so 280 ^X-e will pick up ~pgf/foo correctly (main.c). 281 282(tom) 283 + corrected last change to allow pipe to vile, in case it is invoked 284 via 'rsh' and cannot open /dev/tty (main.c). 285 286 + added config flag OPT_TERMCHRS (estruct.h, bind.c). 287 288 + animated [Terminal] and [Binding List] buffers (bind.c, buffer.c). 289 290 + corrected call on 'slowreadf()' that resulted in wrong line numbers 291 when a file was piped to vile (main.c). 292 293 + modified TurboC makefile to merge duplicate strings, saving a little 294 memory (makefile.tbc). 295 296 + corrected logic that makes ".bak" file on MSDOS so that when 297 appending to a file (e.g., ":w >>foo") the file is copied after 298 renaming (fileio.c). 299 300 + consolidated some code that sets errno when user attempts to read or 301 write a directory-file (fileio.c). 302 303 + applied fix from eric krohn to fix uninitialized structure member 304 (tbuff.c). 305 306 + corrected "EGA" table entry (ibmpc.c) 307 308 + prevent 'flash' mode from being used until after 'TTopen()' (ibmpc.c) 309 310 + corrected a hole in 'swbuffer()' that tried to use a null value for 311 'curwp' (buffer.c). 312 313 + modified to allow "@" startup file to have errors w/o defaulting to 314 "vile.rc", by checking to see if a buffer was created (main.c) 315 316 + corrected logic of 'vtputc()' and 'vtset()' to make line-wrap display 317 properly when the line contains control characters (display.c). 318 319 + corrected limits of highlighting in 'change_selection()' (x11.c) 320 321Changes for vile 3.63: (released Wed Nov 10, 1993) 322(tom) 323 + corrected 'pathcat()', to avoid using autoincrement in 'slashc()' 324 macro (path.c). 325 326 + cleanup for gcc-2.4.5's -Wall warnings (estruct.h, display.c, exec.c, 327 finderr.c, glob.c, mktbls.c, modes.c, npopen.c, proto.h). 328 329 + compiled with CenterLine 'clcc' compiler (bind.c, buffer.c, 330 display.c, eval.c, file.c, filec.c, glob.c, globals.c, line.c, 331 tags.c). 332 333 + corrected 'backpage()' to update mode-line after "previous-page". 334 335 + modified ibmpc.c to make flash/mouse code more portable. 336 337 + corrected call on 'strncpy()' in 'kbd_reply()' where 'extbuf' may be 338 copied onto itself. On HP/UX, this causes the destination to be 339 cleared (input.c). 340 341 + modified initialization of IBMPC to make "flash" mode work better on 342 MSDOS (ibmpc.c). 343 344 + modified so that on MSDOS and VMS vile properly handles files that 345 are redirected to it via the standard input (main.c). 346 347 + corrected bug that caused ":e#" command to ignore the '#' character 348 (exec.c). 349 350 + corrected handling of ":tag" command so that if a tag's length is 351 shorter than the taglength setting, the shorter value is used 352 (tags.c). 353 354 + modified 'writereg()' to prevent inadvertent file-write using a 355 read-pipe expression (file.c). 356(pgf) 357 + fixed indenting bug in formatregion(). (word.c) 358 359 + added SHELL=/bin/sh to makefile 360 361Changes for vile 3.62: (released Mon Oct 11, 1993) 362(pgf) 363 + enable DOS mouse processing for Turbo-C only, since some code 364 uses Turbo-isms to get at registers (_AX, etc) (estruct.h) 365 366 + change references to x.ax, x.bx, x.di, etc to be x._AX_, x._BX_, etc. 367 to satisfy the Watcom 386 need for eax, ebx, edi, etc. 368 369 + improper automatic indent on brace insertion fixed (insert.c, 370 fmatch,c, proto.h) 371 372 + the ls -a output in imdying() was producing a line with a lone '.' 373 on it, which was terminating /bin/mail. use sort -r to rearrange 374 it. (file.c) 375 376 + re-ifdefed getscreensize, for machines without SIGWINCH 377 378 + guard against zero values for tabstop and shiftwidth (buffer.c) 379 380 + added global control variable to make it easy to turn off the 381 "working..." message. (display.c) 382 383 + don't let hst_append() do anything if clexec is set (history.c) 384 385 + click the mouse (with xterm-mouse set) no longer calls showcpos(). 386 if you want the mouse position, turn on "ruler-mode" (tcap.c) 387 388 + flash mode is now off by default. beeps should be beeps until 389 requested otherwise. (main.c) 390 391 + applied vms path fix in pathcat() (path.c) 392 393 + don't insert tabs during reformat if notabinsert is set (word.c) 394 395 + applied patches for djgpp from Jim Crigler. (estruct.h, ibmpc.c) 396 397(tom) 398 + TurboC compiler warnings (history.c, mktbls.c, oneliner.c, search.c). 399 400 + added TurboC compiler warning patterns (finderr.c). 401 402 + implemented mouse highlighting for MSDOS (display.c, ibmpc.c). 403 404 + made the table-driven combinations for $sres work properly (ibmpc.c). 405 406 + corrected 'repointstuff()', so that undo works properly for multiple 407 windows; other window's dot wasn't being updated (undo.c). 408 409 + modified 'execute_named_command()' to set dot-moved flag if the 410 range-computation moves it, fixes warning from 'updpos()' (exec.c). 411 412 + linted remaining size_t usage (basic.c bind.c display.c estruct.h 413 eval.c exec.c filec.c glob.c history.c isearch.c mktbls.c npopen.c 414 oneliner.c proto.h regexp.c search.c spawn.c vmsvt.c). 415 416 + guarded &left, &right, related functions against negative indices, 417 etc., (eval.c). 418 419 + changed sizes in regexp-struct to SIZE_T (from short, int) to support 420 lint (estruct.h). 421 422 + added command-line option "-wm" to set X11 window-manager title 423 (main.c, version.c, x11.c). 424 425 + modified prompts to make ^V echo until the character is followed by 426 what we want to see a la vi (input.c). 427 428 + modified treatment of '!' character (in shell prompts) to expand it 429 immediately, more like vi (main.c, history.c, input.c, spawn.c). 430 431 + corrected some ifdefs that broke !-commands when compiling small 432 configuration for testing (cmdtbl, bind.c, eval.c). 433 434 + whitespace spawn.c 435 436 + corrected redisplay logic in 'execute_named_command()' when repeated 437 backspace characters were received (exec.c). 438 439 + modified logic in 'imworking()' to be a little more conservative when 440 erasing leftover text in the message line, e.g., when it happens 441 during filename-completion on large directories (display.c). 442 443 + corrected a hole in 'hst_append()' that allowed non-interactive use 444 of the bind-key function to erroneously set the 'clexec' flag 445 breaking subsequent named-commands (history.c). 446 447 + trailing blank, e.g., "int<sp><nl>tgetc(quotec)<nl>" breaks apollo 448 ctags by making it generate a pattern only for the "int<sp>" (bind.c, 449 input.c, isearch.c, search.c). 450 451 + modified 'imply_buffer()' so that c-mode is set as in 'readin()' 452 (buffer.c). 453 454 + corrected 'getfile()' to treat names longer than NBUFN as filenames, 455 and 'unqname()' to assume its 'bname' argument can have a trailing 456 null (buffer.c, exec.c, file.c, main.c). (This fixes a bug I 457 introduced in 3.60 that prevented using ":e %+" properly, where "%" 458 expands to a long buffer name, because the buffer names are compared 459 with 'strncmp()'). 460 461 + modified 'getfile()' to suppress redundant prompt by using returned 462 state of 'unqname()' (file.c). 463 464 + modified 'mlreply_file()' to prompt if a wildcard expands to multiple 465 files (e.g., when reading a file) (filec.c). 466 467 + modified 'tokval()' to expand ~-paths so macros can refer to user's 468 home paths (eval.c). 469 470 + corrections to vms filename-completion (path.c). 471 472 With Purify demo 473 474 + corrected memory leak in 'FreeBuffer()' (buffer.c). 475 476 + corrected uninit-memory reference in 'kbd_show_response()' (input.c, 477 history.c), in 'dfputsn()' (display.c). 478 479 + corrected reference to freed memory in 'listmodes()' and modified 480 logic to use 'animated' logic, and variables 'relisting_b_vals' and 481 'relisting_w_vals'. As a side-effect, this allows local buffer and 482 window modes to be set in [Settings] (buffer.c, display.c, edef.h, 483 main.c, modes.c). 484 485 + corrected a null-pointer reference to 'fromline' when a ":0" command 486 was entered in an empty buffer (exec.c). 487 488Changes for vile 3.61: (released Thu Sep 16, 1993) 489(pgf) 490 + when files are saved in /tmp, and mail is sent, the list is now 491 created with "ls -a" to make all files visible. (file.c) 492 493 + when trying to get back to the current buffer in globber(), use 494 set_curwp() instead of swbuffer(), since swbuffer() may not take 495 us back to the same window we started in, if the buffer is 496 multiply displayed. (globals.c) 497 498 + moving the cursor with the mouse (xterm-mouse) causes showcpos() 499 to be called, as if a ^G had been typed. the message line needed 500 to be cleared in any case, to delete old ^G output, so i thought 501 i'd try updating it instead (should a similar change be made in 502 x11.c?). (tcap.c) 503 504 + in cmode, parentheses are treated like braces, in that if a line 505 ends with a left one, the next line is indented, and if it starts 506 with a right one, the line is aligned with the line containing the 507 match. this may be useful for parentheses-heavy languages like 508 509(tom) 510 + nits from 3.60 integration (file.c, mktbls.c, proto.h, glob.h) 511 512 + allow "number" mode to be set/unset in scratch buffers (modetbl, 513 display.c, random.c). 514 515 + use 'delay()' function in TurboC for 'catnap()' (random.c) 516 517 + ifdef'd "dirc" and "history" modes so that they don't appear in 518 [Settings] when not configured (modetbl, main.c). 519 520 + brought TurboC makefile up-to-date (makefile.tbc). 521 522 + corrected logic of 'makemodelist()' so that both buffer and window 523 local modes are shown (modes.c). 524 525 + corrected my last change to 'unqname()' to ensure that if the b_bname 526 field is short enough, it will have a null terminator (file.c). 527 528 + moved logic that reports lines-deleted from 'ldelete()' to common 529 logic of 'operdel()' and 'operlinedel()', so that using 'ldelete()' 530 internally won't generate spurious messages (line.c, opers.c). 531 532 + used 'doingopcmd' to modify return-status of motion commands (h,l) to 533 get rid of special-case handling so that when used internally they 534 don't fail; obsoleted 'forwchar_in_line()' (basic.c). 535 536 + use macro 'cmdBIT()' to clarify flags for CMDFUNC, added flag OPTREG 537 to simplify test in 'execute_named_command()', and make test for 538 optional register and/or line-count more explicit by allowing it only 539 when non-punctuation follows the command (fixes ":s/pattern") 540 (cmdtbl, estruct.h, exec.c, input.c). 541 542 + corrected my last change to make "2p work correctly, by using new 543 function 'index2ukb()' (line.c). 544 545 + modified 'mlreply_file()' so that filename completion works on the ^W 546 and ^R screen commands (filec.c). 547 548 + modified 'getregion()' to use line-number to simplify computation, 549 and to work with left-margin. Also whitespaced (region.c). 550 551 + corrected test in 'loop()' that caused j/k commands to go awry in the 552 [Registers] buffer at blank lines (main.c). 553 554 + corrected test in 'kbd_reply()' to avoid name-completion when the 555 current-response is a shell-command, e.g., "!foo -?" (input.c). 556 557 + corrected logic in 'forwchar_to_eol()' and 'ins_anytime()' that lets 558 arrow-keys to go past the end of the line while in insert (or 559 replace) mode (basic.c, insert.c). 560 561 + corrected logic that allowed a user to begin an insertion in one 562 buffer, then click the mouse to reposition into a readonly buffer 563 and continue inserting -- in the readonly buffer (basic.c, insert.c). 564 565 + added mode 'flash' (ibmpc.c, main.c, tcap.c, x11.c) 566 567 + added logic to support msdos-mouse, using defines OPT_MS_MOUSE and 568 OPT_MOUSE. This version only supports repositioning clicks (basic.c, 569 display.c, estruct.h, ibmpc.c, termio.c). 570 571 + use symbol ALLOC_T to clarify distinction between size_t/int/unsigned 572 (display.c, edef.h, estruct.h, eval.c, filec.c, fileio.c, finderr.c, 573 line.c, oneliner.c, proto.h, regexp.c, tbuff.c, undo.c, x11.c) 574 575Changes for vile 3.60: (unreleased) 576(pgf) 577 + added "stop" command (synonym for "suspend-vile", aka ^Z) (cmdtbl) 578 579 + ensure shiftwidth and tabstop are always set correctly after modes 580 are adjusted -- any of cmode, cts/ts, csw/sw can affect. (modes.c) 581 582 + added support to finderr() for OSF1 (DEC Alpha's, at least) compiler 583 errors, of the form: 584 /usr/lib/cmplrs/cc/cfe: Error: test.c, line 8: Syntax Error 585 586 + took out leftover dbwrite() call from rangespec() -- may fix errant 587 behavior on ":.$d" (exec.c) 588 589 + fixed helpfile note about X11 -name option -- it sets the name 590 used for resource lookups, not the window name. (vile.hlp) 591 how do we set the window name? 592 593 + under DOS, leave the cursor shape and the keyboard repeat rate 594 alone. if we get complaints, perhaps we should mode-ify these, 595 but in general, settings like that are personal, and we shouldn't 596 muck with them. (ibmpc.c) 597 598 + don't introduce extra path separators in pathcat() (path.c) 599 600 + protect against NULL returns from getcwd, in case the directory 601 we're in has been removed. (random.c) 602 603 + changed symbol "glob()" to "doglob()" to stop name conflict with 604 standard libraries (glob.c, eval.c, random.c, filec.c) 605 606 + added prototypes for glob.c to proto.h 607 608 + eliminated infinite loop when using goto-beginning-of-sentence from 609 end of buffer (basic.c) 610 611 + added mode "multibeep" to control the "one beep per failed motion" 612 logic -- if multibeep is on (default), then every failed motion 613 produces a beep. if it's off, then only the first (of a set of 614 identical) causes a beep. (modetbl, main.c) 615 616 + corrected possible use of uninited locals in file.c (was really 617 only a warning suppression) and display.c 618 619 + turned off beeping in search.c and csrch.c, now that all failed 620 motions cause beeps. 621 622 + change "Date" to "installed" in version.c, since modtime really 623 only reflects installation date. 624 625 + don't let vile use a screen dimension of less than 2 in either 626 direction (display.c, tcap.c) 627 628 + fixed bug that made all TERM types be thought of as xterms. (tcap.c) 629 630 + fixed documentation of the help commands. it's been wrong 631 for over three years now, and it's in the first screen of 632 help! (^X-^H and ^A-^H should be ^X-h and ^A-h) (vile.hlp) 633 634 + added AIX to the machines that need sys/ioctl.h, to pick up 635 TIOCGWINSIZE (display.c) 636 637 + reset the "calledbefore" flag in docmd(). fixes chris sherman's 638 problem where a second substitute-til in a macro would appear to 639 do nothing. (actually it was reusing its previous args, so there 640 was simply nothing to do) (exec.c) 641 642 + added '>' to the characters known to the reformatting code, so 643 you can reformat most email replies. (word.c) 644 645 + added automatic patchfile generation to the makefile. hopefully 646 i can generate patches for all future releases, in addition to 647 shar files. (makefile) 648 649(tom) 650 + made ansi.c work with TurboC (ansi.c, main.c, display.c, termio.c), 651 to use as test-case for COLOR. 652 653 + corrected highlighting code for ":%s" command with ibmpc display 654 (display.c, ibmpc.c). 655 656 + modified 'bfind()' to always return a buffer (unless it cannot create 657 the buffer), use 'find_b_name()' for the no-create mode (bind.c, 658 buffer.c, eval.c, exec.c, file.c, filec.c, finderr.c, history.c, 659 main.c, map.c, modes.c, oneliner.c, random.c, spawn.c, tags.c). 660 661 + use macros 'set_bname()' and 'eql_bname()' and function 'get_bname()' 662 to encapsulate buffer name, which does not necessarily have a 663 trailing null (bind.c, buffer.c, display.c, estruct.h, eval.c, 664 exec.c, file.c, finderr.c, input.c, main.c, modes.c, oneliner.c, 665 spawn.c, tags.c, tmp.c). 666 667 + removed nonstandard 'strncpy()' (main.c). 668 669 + corrected 'kbd_show_response()' to work with expand-chars mode 670 (input.c). 671 672 + corrected 'kbd_reply()' to make the number of characters shown have 673 the same limit as the caller's buffer-length, and to make it always 674 return the data with a trailing null (input.c). 675 676 + made 'animated' mode work for [Registers] buffer (line.c), and 677 modified the logic so that numbered-buffers are displayed in a 678 vi-compatible manner. 679 680 + make shift-commands work more like vi, allowing repeated '<' or '>' 681 characters in a :-command to imply a repeat count (bind.c, exec.c, 682 opers.c). 683 684 + corrected logic of 'dofile()' so that if an error is found in the 685 startup file, vile properly sets curbp and curwp (exec.c). 686 687 + simplified/corrected command-history logic of to fix error that 688 prevented scrolling past ":e!" command, and to allow scrolling of 689 '<', '>' command even when repeated (bind.c, exec.c, history.c, 690 spawn.c). 691 692 + added flag KBD_EXPCMD to handle the case (from rewrite of history) 693 where %,#,: expansion must be done for shell commands (estruct.h, 694 bind.c, input.c). 695 696 + added OPT_HISTORY to allow ifdef'ing of history.c code (estruct.h, 697 history.c) 698 699 + cache home-directories looked up in 'home_path()' to make it run 700 faster (path.c) 701 702 + modified glob-expansion to allow "~" expansion. This doesn't work 703 with wildcards in the user-portion (e.g., "~ab?"), but suffices for 704 most cases (glob.c). 705 706 + added a find-error case for apollo's C++ compiler (finderr.c). 707 708 + modified logic for 'displaying' vs 'imworking()' slightly, to get rid 709 of erroneous cursor movement (display.c). 710 711 + added function 'slowtime()' to force updates in 'slowreadf()' more 712 often (file.c). 713 714 + adjusted definitions for better lint checks on apollo sr10.2 715 (estruct.h, makefile). 716 717 + make piped-input also set error-buffer (main.c). 718 719 + revised logic that sets VAL-structs for modes to correct places where 720 buffer & window traits are saved without converting to local values. 721 Also removed code (e.g., copy_val) that checks reference counts, 722 since they aren't really necessary (buffer.c estruct.h main.c modes.c 723 proto.h) 724 725 + modified behavior of 'unsetl' command to delete local setting 726 (eval.c, modes.c). It was only modifying (toggling) boolean modes. 727 728 + corrected 'reframe()' to handle linewrapping case submitted by 729 alistair (display.c). 730 731 + corrected cursor-update in 'x_scroll()' that left stray cursor images 732 remaining after ^D/^U commands (x11.c). 733 734 + corrected logic that caused selection-text to be lost when keypress 735 was received (x11.c). 736 737 + modified X-windows pasting to trim unneeded whitespace when inserting 738 into cmode or autoindent buffer (bind.c, x11.c). 739 740 + corrected kill-buffer flag KAPPEND, which had the same value as 741 KLINES (estruct.h, line.c). 742 743 + corrected error in 'doindent()' that caused a "<nl>}" insertion to 744 delete nonwhite characters (insert.c). 745 746 + corrected ":tags" command for exact (taglen=0) lookups (tags.c) 747 748 + make failed motion-commands sound an alarm like vi (main.c). 749 750 + modified logic for h,j,k,l,^D,^U,^F,^B commands to return false when 751 they fail, so failed-motion alarm works (basic.c). 752 753 + corrected logic for b,B,w,W,e,E commands to return false only when 754 backing/forwarding past the buffer ends (word.c). 755 756 + modified alternate-window motions 'scrnextup()', 'scrnextdw()', 757 'mvdnnxtwind()', 'mvupnxtwind()' to also return failed-motion status, 758 for consistency (window.c) 759 760 + made new function 'forwchar_in_line()' to do the vi "l" command, 761 dissociating it from the internal motion-command (basic.c, cmdtbl). 762 763 + made 'backhpage()', 'forwhpage()' motion-commands (cmdtbl). 764 765 + make failed quit-commands return false (main.c). 766 767 + make version-command show UNIX or VMS executable's date (main.c) 768 769 + corrected behavior of 'histbuff()' when user simply toggles with the 770 "_" command. This did not handle the case in which the alternate 771 buffer was temporary, and thus had no number (buffer.c). 772 773 + introduced new buffer-attribute 'b_lim_left', macro 774 'w_left_margin()', ifdef'd with OPT_B_LIMITS, use this to control 775 cut/paste selection in [Registers] (basic.c, buffer.c, csrch.c, 776 display.c, random.c, region.c, window.c, x11.c). 777 778 + modified 'execute_named_command()' to recognize register name and 779 line-count for commands such as ":yank", making it handle cases such 780 as ":5>6", ":y a 6", ":10,20y b" (exec.c, input.c, line.c). 781 782 + modified ":put" command to report the number of lines added (line.c). 783 784 + split out 'version.c' because main.c got too large for apollo lint 785 (main.c, makefile*, vms_link.opt, link.msc). 786 787Changes for vile 3.59: (released Wed Aug 18, 1993) 788(pgf) 789 + added VIEWOK flag for functions that execute macros. it says 790 it's okay to execute them in view mode, even though they have the 791 UNDO bit set. this fixes not being able to run @, :map'ed, or 792 ^X-& macros in view-only buffers. 793 794 + made the xterm-mouse mode available in xvile as well as vile, to 795 make it easier to share .vilerc between the two versions. the 796 alternative is to insist that people put ~force set xterm-mouse 797 in .vilerc, to override the error they'll get in xvile from the 798 mode not being present. (input.c, modes.c, estruct.h) 799 800 + changed default value of "xterm-mouse" to off, to make vile behave 801 like it used to, and like other character applications, by default. 802 (main.c) 803 804 + turned off support for the "working..." message for builds that 805 define USG, since they probably have non-restartable system calls. 806 (estruct.h) 807 808 + accept any TERM variable that ends in "xterm" to be an xterm. 809 (tcap.c, vile.hlp) 810 811 + fixed "uninitialized variable 'req'" when compiling without REVSTA 812 defined. (display.c) 813 814 + fixed missing closing double quote in "make all" help output. 815 (makefile) 816 817 + bumped the maximum row count from 100 to 200. i personally can't 818 read more than about 70 lines on a 19" mono monitor, but maybe 819 i need glasses. (tcap.c, x11.c) 820 821 + took out extraneous trace.h include from x11.c 822 823 + corrected 'col2offs()' to make it easier to position the mouse on a 824 tab character (display.c). 825 826Changes for vile 3.58: (released Fri Aug 13, 1993) 827(pgf) 828 + added "sys$login:" to VMS file search path for vile.rc 829 830(tom) 831 + refined 'imworking()' to get rid of leftover working-message 832 (display.c, file.c). Make working-message show up only when 'terse' 833 mode is off (the default). 834 835 + added code to support xterm mouse-clicking (to move dot), with 836 additional code for later use with highlighted selections. Made this 837 a mode (xterm-mouse) because it does not implement cut & paste yet 838 (basic.c, display.c, input.c, main.c, modes.c, tcap.c). 839 840 + added calls to 'TTkopen()' and 'TTkclose()' to termio.c so that (for 841 all systems) we call these within 'ttclean()' and 'ttunclean()' 842 (termio.c, tcap.c). 843 844 + optimized display of 'ruler' (display.c) 845 846 + use 'displaying' as a semaphore rather than true/false flag, as a 847 guard against interrupt by 'imworking()' which modifies ttcol and 848 ttrow (bind.c, display.c, main.c, tcap.c, x11.c). 849 850 + make ":=" command accept address (like vi) to show arbitrary address 851 value (cmdtbl, estruct.h, exec.c, random.c). 852 853 + don't let 'write-til' move dot (cmdtbl). 854 855 + modified 'doindent()' to trim leading whitespace (like vi) from the 856 portion of the line after dot (insert.c). 857 858 + modified insert-code to treat the combination of repeat-count and 859 newline like vi, causing the repeat count to apply only to the 860 insertion-string before a newline. (edef.h, input.c, insert.c) 861 862 + corrected handling of '.' repeat-count for r,R commands (insert.c) 863 864 + modified user-variables to make them dynamically-allocated, and to 865 remove the restriction on the length of their names (mktbls.c, 866 estruct.h, eval.c, main.c). Also corrected treatment of newline in 867 prompt for user-variable name. 868 869 + used 'strncpy()' to copy return-values from 'kbd_reply()', just in 870 case macro-tokens are too long (input.c). 871 872 + don't expand '%' or '#' in 'kbd_reply()' if it would be the name of 873 an invisible buffer (input.c). 874 875 + added universal-modes 'expand-chars' to list the characters to expand 876 in 'kbd_reply()', and 'expand-path' to control whether %/# are shown 877 as full, or shortened paths (modetbl, input.c, main.c). 878 879 + modified X-windows config to allow processing of events when the 880 working-message code is executed (display.c, x11.c). This makes the 881 screen refresh and keyboard handling work better. 882 883 + added 'animated' buffer-mode to control whether vile updates 884 scratch buffers when their contents would change (e.g., the buffer 885 list), made this work for buffer-list (buffer.c, display.c, 886 estruct.h, modes.c, modetbl). 887 888 + revised the 'killbuffer()' code to work properly with the animated 889 mode (buffer.c). 890 891 + modified mktbls to check for illegal mode-names (mktbls.c). 892 893 + linted with SMALLER set (to get rid of unused functions), introduced 894 new ifdef with OPT_EVAL to simplify (basic.c bind.c buffer.c cmdtbl 895 estruct.h eval.c insert.c line.c lint.out modes.c npopen.c proto.h 896 window.c). 897 898Changes for vile 3.57: (released Fri Aug 06, 1993) 899(pgf) 900 + the bug check for b_ulinep pointing at a newly inserted line is 901 no longer valid, since we can now insert a line, make changes (which 902 will set b_ulinep), undo those changes, and then undo the insert. 903 we now just null out b_ulinep when we remove the line it references. 904 (undo.c) 905 906 + changed name of setmode() to avoid library conflict with djgpp, and 907 changed the other del/setg/delg versions as well. (cmdtbl, modes.c, 908 proto.h) 909 910 + took out #define USG 0 since djgpp uses an #ifdef on this in a header 911 (estruct.h) 912(tom) 913 + whitespace in basic.c 914 915 + corrected definition of ScratchName macro for apollo SR10.2 916 (estruct.h) and a compiler warning (in glob.c). 917 918 + corrected gcc warnings about 'signal()'-arguments for SunOs. 919 920 + use new macros ACTUAL_SIG_ARGS, etc., instead of ACTUAL_SIGNAL so 921 that the tag-file can find the signal-handling procedures (estruct.h, 922 display.c, file.c, main.c, proto.h, spawn.c, x11.c). 923 924 + customized the c-suffix default values for VMS, MSDOS and UNIX. 925 926 + VAX/VMS C does not allow continuation-lines in ifdefs (mktbls.c). 927 928 + VAX/VMS C may incorrectly set ferror() when feof() is true (fileio.c) 929 930 + VAX/VMS C 'rewind()' does not work correctly (fileio.c) 931 932 + added code to show "working..." message for time-consuming operations 933 (display.c, npopen.c, vmspipe.c), and to allow 'slowreadf()' to show 934 its progress (file.c, fileio.c). 935 936 + linted calls on 'signal()', (main.c, display.c, spawn.c, termio.c). 937 938 + linted calls on 'firstnonwhite()' (basic.c, exec.c, insert.c, line.c, 939 opers.c, region.c, spawn.c, word.c). 940 941 + use new functions 'end_named_cmd()', 'more_named_cmd()' for clarity 942 (exec.c, file.c, map.c, oneliner.c) 943 944 + added new mode 'ruler' (to display line+column in a window on the 945 modeline), and new window-flag WFSTAT to support it (by allowing 946 non-modal information to affect the modeline). (display.c) 947 948 + corrected error I introduced into 'reframe()', and in 'row2window()' 949 while adding 'linewrap' mode (display.c). 950 951 + corrected code that frees buffer's fname-field for the special case 952 of out-of-memory (buffer.c, random.c). 953 954 + added new command 'tagstack' to show the contents of the tag-stack. 955 Modified 'tags()' to use module-level 'tagname[]' rather than local 956 copy of tag-string. (tags.c) 957 958 + always update the modtime-at-warn buffer field when prompting 959 for the check-modtime mode (file.c). 960 961 + removed (obsolete) code for DEC Rainbow (estruct.h, display.c, 962 termio.c). 963 964 + modified 'line_no()' to return values in the range 1..MAX+1 965 instead of 0..MAX (random.c). 966 967 + corrections to make X11 version work with 'number', 'linewrap' modes, 968 to guard against selection extending outside a window, to highlight 969 only the actual text within a window, and to use 'yankregion()' to 970 save the paste-text. (basic.c, display.c, window.c, x11.c) 971 972 + modified 'typahead()' to know when X-windows is pasting, and the 973 paste-init code to supply an escape to end insert-mode, and to use 974 TBUFF's so that nulls can be inserted (termio.c, x11.c). 975 976 + put the repeat-count in 'map_proc()' back the way Otto Lind had it 977 (map.c). 978 979Changes for vile 3.56: (released Tue Jul 27, 1993) 980(pgf) 981 + after a confirm substitute operation, we now mlerase the confirm 982 prompt (oneliner.c) 983 984 + be sure the [vileinit] buffer is marked as scratch while doing the 985 bprintf into it, so undo record-keeping will be suppressed. (main.c) 986 987 + rearranged calls to chg_buff and ldelnewline in ldelete, so that 988 the buffer will still be marked clean on first toss/copy/tag to 989 undo. unmodified state is now restored correctly after a :g/^$/d is 990 undone. (line.c) 991 992 + In regular expressions, \s and \S are now true atoms. they both 993 must now be followed by * or + to match more than one. also, \s 994 no longer matches BOL or EOL (thanks to alistair and eric for 995 pointing out and fixing) (regexp.c) In practice this means that 996 one should use \s* or \s\+ where one used to use just \s. also, 997 if a match against ^ or $ is necessary, it must be done explicitly, 998 e.g. /\(^\s*\|\s\+\)word/ instead of /\sword/ 999 1000 + adjusted paragraph/section/comment/sentence regexps, with help 1001 from eric, to reflect change to \s and \S 1002 1003 + make the #ifdef USE_TERMIO version of ttclean() be a no-op under 1004 X11, as it is in the other cases. eric's right -- termio.c needs 1005 a rewrite. (termio.c) 1006 1007 + don't pass the (0) to getpgrp if we're POSIX and ANSI -- the 1008 library is probably the right one, and there's a high probability 1009 of a prototype conflict if we _do_ pass it. (spawn.c) 1010 1011 + When looking up X defaults, the old code checked the class first, 1012 then the specific program name. This is backwards since if the 1013 class value exists, there is no way to override it with the -name 1014 option. (x11.c) 1015 1016 + AIX and pyramid think we have non-constant case expressions (eval.c) 1017 1018 + There is no requirement in ANSI C for SCRTCH_LEFT and SCRTCH_RIGHT 1019 to be expanded before the ##. Some preprocessors do and some don't. 1020 However, the other #define using just #s and string concatenation 1021 seems to work everywhere. (estruct.h) 1022 1023 + clarified usage of &sin function, which searches its first argument 1024 for an occurrence of the second. (vile.hlp) 1025 1026(tom) 1027 + renamed UCHARAT to UCHAR_AT; added defs for UCHAR USHORT, UINT and 1028 ULONG for easier linting/reading (bind.c, dirstuff.h, estruct.h, 1029 file.c, history.c, ibmpc.c, input.c, isearch.c, line.c, oneliner.c, 1030 proto.h, tbuff.c, vmalloc.c, vmsvt.c, x11.c, z_ibmpc.c) 1031 1032 + make 'prc2kcod()' return an int again, some optimization of 'token()' 1033 (bind.c, file.c). 1034 1035 + clean-compiled/tested X11 + DEBUGM + OPT_MAP_MEMORY with gcc 1036 (basic.c, edef.h, exec.c). 1037 1038 + disable filename-completion when OPT_MAP_MEMORY is enabled. 1039 1040 + added mode 'newline', set to true when reading files that have a 1041 trailing newline (the normal vi-convention), modified (file.c, 1042 buffer.c, random.c). 1043 1044 + fixed place where ":ww" garbages the screen before reporting 1045 "wrote 0 buffers" (buffer.c). 1046 1047 + simplified 'writereg()' and 'ffputline()' (fileio.c, file.c) to allow 1048 'newline' mode to control whether a trailing newline is written to 1049 output files. 1050 1051 + modified 'kifile()' so that it does not insert the trailing newline 1052 if it wasn't present in the file. 1053 1054 + made 'ldelete()' return from one point (line.c) to simplify 'report' 1055 mode. 1056 1057 + added mode 'report', to specify the number of changes before a 1058 message is emitted: 1059 NN lines deleted 6dd 1060 NN more lines u 1061 NN fewer lines u 1062 NN fewer lines :g/^$/d 1063 NN lines yanked "a8yy 1064 NN substitutions on MM lines :%s/x/XX/g 1065 NN substitutions :%s/x/X/ 1066 (globals.c, line.c, undo.c, oneliner.c, random.c, region.c) 1067 1068 + corrected unnecessary screen-update in 'substline()' (oneliner.c) 1069 introduced in confirm-changes. 1070 1071 + added 'linewrap' mode (basic.c, buffer.c, display.c, windows.c). 1072 1073 + corrected cursor movement for large repeat counts with 'H' command 1074 (basic.c). 1075 1076 + ifdef'd 'screen_string()' to handle apollo compiler warning when 1077 testing SMALLER configuration. 1078 1079 + added stubs for modes 'popup-msgs', 'popup-choices'. 1080 1081Changes for vile 3.55: (released Mon Jul 19, 1993) 1082(pgf) 1083 + new routine, mlquickask(), which prompts for and returns a single 1084 key answer from a user. use this when getting a confirm from a 1085 user for a substitute command. (input.c, oneliner.c, proto.h) 1086 1087 + documented the 'c' for confirm (vile.hlp) 1088 1089 + the token() routine now expands numeric escape codes, like \nnn and 1090 \xNNN where nnn are octal and NNN are hex digits. this may affect 1091 vilerc files that have \ sequences in them. support for mapping 1092 to key-sequences like 0xNN is gone -- use \xNN instead. this will 1093 make it easier to do multi-char maps in the future. 1094 1095 note that \000 will cause internal problems, since things are null- 1096 terminated, and the sequences "<sp>", "<tab>", and "^C" are all 1097 problematic when multi-char sequences come around. 1098 1099(alistair) 1100 + added highlighted confirm to ":s" command. (oneliner.c, display.c) 1101 1102(tom) 1103 + modified 'makebindlist()' (in bind.c) to format using tabs rather 1104 than spaces. 1105 1106 + many mods to map.c (and bind.c) to eliminate redundancy between it 1107 and bind.c 1108 1109 + modified 'prc2kcod()' to look for only one prefix, but allow 1110 hexadecimal code in form 0xff. 1111 1112 + corrected a recursion bug in 'install_map()' (file map.c) 1113 1114 + modified ":map" (file map.c) to show show mappings if no values are 1115 given. 1116 1117 + fix strict gcc warnings in x11.c, consolidated some initialization 1118 code and corrected font-ascent value (so 9x15 works properly). 1119 1120 + added "on" and "off" to literals in 'stol()' (file eval.c) to use 1121 this in x11.c 1122 1123 + modified 'killbuffer()' in buffer.c to recognize a repeat-count 1124 (e.g., allows ^X-k within the buffer list to remove a succession of 1125 buffers). 1126 1127 + fix strict gcc warnings in ansi.c 1128 1129 + make command-history record properly for bind-key and map commands 1130 (files bind.c and map.c). 1131 1132 + modified 'engl2fnc()' (in bind.c) to allow unique abbreviation (so 1133 that scripts don't have to be spelled out), added "se" symbol to 1134 cmdtbl for vi-compatibility. 1135 1136 + modified 'docmd()' (file exec.c) to allow leading ':' in scripts 1137 for vi-compatibility. 1138 1139 + corrected logic in modes.c to (re)allow trailing whitespace on 1140 the end of set-commands. 1141 1142 + merged files makmktbl.tbc and makvile.tbc into makefile.tbc 1143 1144 + eliminated 'VIDEO *' arguments from 'updateline()' in file display.c 1145 because the 'row' argument already provides this information. 1146 1147 + added 'offs2col()' to correct position of highlighting when 1148 confirming substitutions. 1149 1150Changes for vile 3.54: (released Fri Jul 09, 1993) 1151(pgf) 1152 + will now call setvbuf instead of setbuffer if USG defined in the 1153 POSIX version of ttopen. this to support SVR4 (well, solaris) 1154 (termio.c) 1155 1156 + took out the more stringent prototype warnings (-Wstuff) from the 1157 gcc OPTFLAGS, since we don't pass them yet (someday, alistair). 1158 (makefile) 1159 1160 + mode and variable symbol names generated by mktbls are now of the 1161 form "s_name__" instead of "s_name", to be more unique. (there 1162 was a conflict with a (naturally named) typedef of signed char to 1163 "s_char".) (mktbls.c) 1164 1165 + upped the max number of screen columns for x11.c. was 150, now is 1166 200. reduced the max rows number from 200 to 100. the screen 1167 buffers should be made re-allocatable, so we wouldn't eat the space 1168 unless necessary. made the normal (tcap.c) maximums match these. 1169 (tcap.c x11.c) 1170 1171 + applied Tuan Dang's fixes for my merging of his watcom and djgcc 1172 patches. Thanks Tuan! (makefile.wat, ibmpc.c, estruct.h, path.c, 1173 mktbls.c) 1174 1175 + turn DOS mode on by default for DOS versions of vile. (main.c, 1176 vile.hlp) 1177 1178Changes for vile 3.53: (released Thu Jul 07, 1993) 1179(pgf) 1180 + stop core dump on file completion (":e fi<tab>") by making sure 1181 BFSIZES bit is cleared when building MyBuff 1182 1183 + in rtfrmshell(), there was a "curwp->w_flag = WFHARD" statement, 1184 with a comment asking if it was needed. in fact, it's wrong, so 1185 i took it out. it was tromping other flags, like WFMODE, for that 1186 window only (spawn.c). 1187 1188 + in update(), don't add nu_width to screencol if the buffer is empty, 1189 since there is no line number in that case. (display.c) 1190 1191 + fixed bug when undoing the first insertion into an empty buffer. 1192 the value of dot was being restored to the inserted (and now gone) 1193 line. (line.c) 1194 1195Changes for vile 3.52: 1196(pgf) 1197 + added a couple of tweaks to tom's check-modtime changes -- prompts 1198 are not suppressed if you're writing the buffer out, and running 1199 a shell only checks visible buffers for modtime changes, rather 1200 than all buffers. (mostly file.c, estruct.h, random.c) 1201 1202 + changed name of "timeout-value" to "timeoutlen", to match some 1203 versions of vi. (modetbl, vile.hlp) 1204 1205 + applied patches from Tuan DANG (dang@cogit.ign.fr) to support 1206 DJGCC v1.09 (display.c, estruct.h fileio.c ibmpc.c main.c mktbls.c 1207 modes.c path.c random.c spawn.c termio.c) 1208 1209 + consolidated TURBO, WATCOM, MSC, ZTC, and GO32 under a new, 1210 presumptuous #define, called NEWDOSCC. (mostly same files as djgpp 1211 changes) 1212 1213 + fixed calloc macro (estruct.h) in RAMSIZE ifdef 1214 1215 + added map.c/map.obj source file for VMS (descrip.mms, vms_link.opt) 1216 1217 + removed bogus dbgwrite in exec.c, where linespec returns a value 1218 for "toline" which can be null. 1219 1220Changes for vile 3.51: 1221(pgf) 1222 + added a couple of tweaks to tom's check-modtime changes -- prompts 1223 are not suppressed if you're writing the buffer out, and running 1224 a shell only checks visible buffers for modtime changes, rather 1225 than all buffers. 1226 1227 + added regexp metacharacter "index" in margin of vile.hlp. 1228 1229 + renested some limit setting in scanner(), so I can understand it 1230 again. (search.c) 1231 1232 + changed name of ABS macro to ABSM to avoid namespace conflict 1233 on OSF/1. (cmdtbl, exec.c estruct.h) 1234 1235 + made :map to SPEC key-sequences work (map.c insert.c) 1236 1237 + undo now preserves current column as well as row (undo.c estruct.h) 1238 1239 + changed name of "naptime" to "timeout-value" (main.c modetbl 1240 vile.hlp input.c) 1241 1242 + added new variable $mode, which is the name of the user-mode we 1243 e're in: "command", "insert", "overwrite". the value is set 1244 when we enter insertmode, and restored when we leave. this lets 1245 macros invoked from within insert mode find out if they should 1246 enter insertmode. (eval.c, modetbl, insert.c, proto.h, vile.hlp) 1247 1248 + prc2kcod will now accept literal control chars, and also will 1249 accept hex specifications. so now key-sequences can be specified 1250 as follows: (bind.c map.c vile.hlp) 1251 an optional prefix: 1252 ^A (one char) 1253 ^A- (three chars) 1254 ^X (one char) 1255 ^X- (three chars) 1256 1257 followed by an optional "function" prefix: 1258 FN- (three chars) 1259 M- (two chars) 1260 (these two are synonymous) 1261 1262 followed by a character: 1263 C (one char) 1264 ^C (one char) 1265 ^C (two chars) 1266 0xNN (four chars) 1267 0XNN (four chars) 1268 <tab> (five chars) 1269 <sp> (four chars) 1270 1271 1272 + removed old BEFORE ifdefs (input.c insert.c) 1273 1274 + better error checking on parsing of key-sequences in exec'ed files. 1275 (bind.c) 1276 1277 + if dobuf() encounters an error, it switches to that buffer. but 1278 until now, this error propagated back through nested dobuf()'s, 1279 and we ended up looking at the 'source "filename"' line in the 1280 outermost buffer. now we only switch on the most deeply nested 1281 dobuf(). also, we no longer set file buffers that we're executing 1282 to view-mode. (exec.c) 1283 1284 + if we get an error on startup, we skip right to the editing loop, 1285 so the user gets confronted with the error right away. (main.c) 1286 1287 + gave adjustmode a real return value -- used to always return TRUE. 1288 (modes.c) 1289 1290 + when looping backwards backspacing, check if the input char was 1291 killc or wkillc before checking isbackspace(c), since otherwise 1292 if killc is DEL, we'll treat it as backspace first. (this is 1293 because ^H and DEL are both assumed to be backspacers initially) 1294 (insert.c input.c) 1295 1296 + implemented new universal mode, "naptime", which is the number of 1297 milliseconds to delay before accepting a lone ESC character, 1298 rather than as the start of a function key sequence. also added 1299 boolean arg to catnap(), which controls whether detection of user 1300 input will abort the catnap delay. the default for this mode is 1301 500 milliseconds. the old value was 50, which was fine for fast 1302 local displays, but didn't work well for serial terminals or 1303 rlogin sessions. (which surprises me somewhat -- 9600 baud 1304 translates to roughly 1 character per millisecond -- why is a 1305 delay of 50 ms not enough for the second character of a function 1306 key generated by a terminal?) (proto.h fences.c input.c random.c 1307 modetbl vile.hlp main.c) 1308 1309 + applied patches for Watcom C/386, from Tuan DANG (dang@cogit.ign.fr). 1310 I haven't had a chance to try them yet. ( mktbls.c cmdtbl estruct.h 1311 dirstuff.h ibmpc.c main.c fileio.c random.c termio.c display.c 1312 glob.c npopen.c path.c proto.h spawn.c makefile) 1313 1314 + renamed turbo makefiles, to be more similar to the watcom makefiles. 1315 1316 + fixed insert-string to really insert instead of overwrite. 1317 1318(tom (3.51)) 1319 + added buffer-mode 'check-modtime' to check if the disk-file is newer 1320 than the buffer when reading, writing or popping a window (adapted 1321 from a patch by Randy Winney, modifies (files file.c, fileio.c, 1322 buffer.c, random.c, spawn.c). Note that moving the cursor between 1323 buffers does not perform this check. 1324 1325 + use macro 'for_each_line()' in some more places (files: buffer.c, 1326 globals.c, random.c, spawn.c, vmalloc.c). 1327 1328 + use new function 'SetCurrentWindow()' in file window.c. 1329 1330 + added checking in 'SetVarValue()' (file eval.c) to guard readonly 1331 buffers from modification. 1332 1333 + added checks in file mode.c to prevent major-mode changes to scratch 1334 buffers (and corrected the settings of WFMODE in file modetbl). 1335 1336 + tested/augmented RAMSIZE configuration option (files main.c, 1337 display.c), made a mode 'showram' to control it. 1338 1339 + merged field that shows major-modes in the modeline (e.g., 1340 "view-only"), and added "cmode" when it is active. 1341 1342 + added buffer-flag BFSIZES; use it in 'bsizes()' to compute byte/line 1343 counts only when buffer has been changed. Also, added function 1344 'add_line_at()' to merge file-reading logic which initializes the 1345 byte/line counts (files: buffer.c, file.c). 1346 1347 + if dos-mode is set on a buffer, trim carriage-returns from files that 1348 are inserted into it (file file.c). 1349 1350 + renamed macros in file buffer.c that test BUFFER.b_flags, added 1351 macros for setting/clearing these flags, moved the macros to 1352 estruct.h to use in files bind.c, buffer.c, file.c, history.c, 1353 modes.c, random.c, spawn.c, tags.c, undo.c. 1354 1355 + corrected size shown for buffer-list within the buffer-list display 1356 (file buffer.c). 1357 1358 + use window-colors for modelines rather than global values (file 1359 display.c). 1360 1361 + disable ":p" command from within buffer-list display (oneliner.c) 1362 1363Changes for vile 3.50: 1364(pgf) 1365 + finished (yeah, right) the changes for infinite undo. implemented 1366 mode to control how many changes are stored (called "undolimit"). 1367 the modified bit (BFCHG) now gets reset if the right number of 1368 undos is done. (estruct.h main.c modetbl undo.c buffer.c vile.hlp) 1369 1370 + rearranged calls to copy_for/tag_for/toss_to_undo and chg_buff 1371 so that the BFCHG flag is unmodified before the first call to 1372 preundocleanup(). this gives undo the true state of BFCHG. 1373 (line.c region.c) 1374 1375Changes for vile 3.49: 1376(pgf) 1377 + implemented infinite undo, on keys ^X-u (undo) and ^X-r (redo). 1378 probably affected location of cursor after some undo operations -- 1379 don't if this will be significant or not -- i doubt we matched 1380 vi before in this regard anyway. (undo.c, cmdtbl, buffer.c, proto.h 1381 estruct.h, vile.hlp) 1382 1383 + use an explicit %s when printing lone filename, to protect against 1384 filenames with % in name. (display.c) (eric krohn) 1385 1386 + don't allow kbd_putc to print to last column of display, since if 1387 the terminal autowraps, this causes a scroll. this should check 1388 the :am: capability, but we're at the wrong layer to do that, and 1389 it doesn't seem worth adding to the TERM struct to make that info 1390 available (unix-pc behavior pointed out by eric krohn). 1391 1392 + added Otto Lind's initial :map implementation (map.c, main.c, 1393 cmdtbl, makefile, proto.h) This is a good start, but has the 1394 following limitations: 1) no string to string maps. only simple 1395 keysequences are mappable. 2) not integrated with the keyboard 1396 macro routines -- this would make sense, and allow for recursion 1397 to be detected more properly. but the keyboard macros are pretty 1398 tied into the named registers, which are stored in KILLREGS, 1399 which doesn't seem right for the :map'ed things. perhaps we could 1400 dispense with the KILLREGS, and replace them with tbufs. then some 1401 small changes the layering of start/finish_kbm and kbm_started 1402 could allow the :map code to share those routines. 1403 1404 + added alistair crooks' lint stuff and change for the NeXT. (proto.h, 1405 mktbls.c) 1406 1407(tom) 1408 + modified file undo.c so that changes to scratch buffers can be 1409 undone. 1410 1411 + modified 'imply_alt()' in file buffer.c so that the top/current line 1412 numbers are propagated into the alternate buffer. 1413 1414 + changed environment variable 'directory' to 'cwd' so that 'directory' 1415 can be used for vi-compatible directory variable (used to control 1416 where the temp-file is written). 1417 1418 + implemented environment variable 'directory' (files modetbl, eval.c) 1419 and used it to control temp-file location (npopen.c, tmp.c). This is 1420 set by the environment variable TMP. 1421 1422 + changed logic that opens/closes temp-file in tmp.c to use 'tempnam()' 1423 to derive the filename; added entrypoint 'tmp_cleanup()' to remove 1424 the temp-file on exit, and 'exit_program()' to file main.c to make a 1425 single exit-point from which to call 'tmp_cleanup()'. 1426 1427 + Use macro 'ExitProgram()' to hide whether we call 'exit_program()' or 1428 'exit()' (files main.c, display.c, ibmpc.c, spawn.c, vmsvt.c, vt52.c, 1429 termio.c, termcap.c, file.c, window.c, x11.c). 1430 1431 + modified 'mktbls.c' to generate definitions for 'nemode.h' in a 1432 form that allows modes to be conditionally compiled. 1433 1434 + added a column to 'modetbl' to ifdef out modes that are not used. 1435 1436 + made 'crypt', 'fcolor' and 'bcolor' modes ifdef-able (files main.c, 1437 modes.c, modetbl). 1438 1439 + simplified 'promptpattern()' and 'expandp()' in file isearch.c 1440 1441 + corrected USE_D_NAMLEN ifdef in 'expand_pattern()' (file glob.c) 1442 1443 + corrected behavior when user inserts a newline into an empty buffer 1444 (file line.c). 1445 1446 + moved environment variable definitions from cmdtbl to modetbl to 1447 ensure that name-completion table for modes+vars is updated in one 1448 place. Sorted the environment variable names in modetbl and vile.hlp 1449 1450 + include "nevars.h" within main.c to allow common name-completion 1451 table (without introducing lots of extra string-pointer variables). 1452 1453 + modified mktbls.c to put the environment-variable names into the 1454 'all_modes[]' array in nemode.h (to support common name-completion). 1455 1456 + modified 'listvars()' in file eval.c to optionally show all modes 1457 and environment variables in one list (if the user supplies a numeric 1458 argument before the "show-variables" command). 1459 1460 + modified 'gtenv()' in file eval.c to recognize mode-names as well as 1461 environment names, and logic in file modes.c to recognize environment 1462 names. Thus, for example, the commands 1463 ":setl dos" and 1464 ":setv $dos=true". 1465 are equivalent. 1466 1467 + changed use of 'sprintf()' to 'lsprintf()' (files buffer.c, modes.c) 1468 1469 + use macros 'FreeAndNull()' and 'FreeIfNeeded()' to simplify code 1470 (buffer.c, eval.c, file.c, filec.c, main.c, modes.c, 1471 npopen.c, oneliner.c, search.c, random.c, x11.c) 1472 1473 + changed case-statements for EV-variables to if-then-else-if in 1474 file eval.c because VAX-C cannot handle constant-expression 1475 OFFSETOF as case-values. 1476 1477 + added 'tempnam()' to file vms2unix.c (to support testing of 1478 mapped-data configuration). 1479 1480Changes for vile 3.48: 1481(pgf) 1482 + added FILEC_PROMPT flag to mlreply_file call in writeregion, to 1483 make ^W file-writing operator work. 1484 1485 + folded some long lines (opers.c filec.c file.c) 1486(tom) 1487 + corrections to make undo work properly with mapped-memory option 1488 (files buffer.c and tmp.c). 1489 1490 + use symbol 'null_ptr' to tidy up references to '(LINE *)0' 1491 (files buffer.c fences.c line.c main.c undo.c) 1492 1493 + changed LINE.l_size to SIZE_T (to make it lintable) 1494 1495 + corrected "poison" code in 'lfree()' (file line.c) 1496 1497 + added logic to finderr.c to handle lint output on apollo. 1498 1499 + added logic to handle line truncation (files buffer.c, file.c, 1500 line.c, tmp.c) 1501 1502 + added function 'l_region()' to file tmp.c; use this (with some 1503 reorganization) in files file.c, oneliner.c, region.c, word.c to 1504 track LINEPTR adjustments in REGION structs. (Converted most of the 1505 calling procedures to single-return to clarify this). 1506 1507 + moved options-logic in 'substreg1()' (file oneliner.c) down to make 1508 this simpler (and avoid unnecessary goto). (This procedure has too 1509 much logic to convert to single-return). Also fixed a place that 1510 should have used 'end_string()'. 1511 1512 + used macro 'same_ptr()' to compare LINEPTR's directly (a bit more 1513 efficient). 1514 1515 + implemented page-swapping logic in file tmp.c 1516 1517 + modified ifdefs in files bind.c, eval.c, finderr.c to get rid of 1518 compiler warnings when SMALLER, REBIND and APROP ifdefs are turned 1519 off. 1520 1521 + used 'memcpy()' and 'memset()' in files buffer.c, line.c to simplify 1522 loops copying text into LINE's. 1523 1524 + modified interfaces of functions that may modify 'LINE *' pointers 1525 (or, equivalently, cause swapping of a LINE to a different address) 1526 to use LINEPTR arguments (for example, 'line_no()' can iterate over 1527 all lines, causing swapping). Also modified functions (especially in 1528 files line.c and undo.c) to use LINEPTR variables where they call 1529 lower-level functions that may page-swapping. Affects files 1530 buffer.c, display.c, exec.c, file.c, filec.c, input.c, line.c, 1531 oneliner.c, random.c, region.c, search.c, vmalloc.c, word.c 1532 1533 + replaced call on 'lalloc()' in file exec.c with 'addline()' (only 1534 difference is that the latter also sets b_dot). 1535 1536 + converted several functions in file undo.c to static (to simplify 1537 tinkering with LINE/LINEPTR tradeoffs). 1538 1539 + modified calls on 'lalloc()' in file undo.c to use special codes for 1540 l_used member directly. 1541 1542 + added options -Wconversion -Wstrict-prototypes -Wmissing-prototypes 1543 to gcc flags in makefile; addressed these warnings (except for 1544 'signal()' arguments, which cannot be fixed) on sunos. Modified 1545 files bind.c, file.c, filec.c, fileio.c, glob.c, insert.c, line.c, 1546 path.c, random.c, region.c, spawn.c, tcap.c. 1547 1548 + corrected ifdef in 'string_has_wildcards()' (file glob.c) for VMS. 1549 1550Changes for vile 3.47: 1551(tom) 1552 1553 (part a) 1554 + introduced 'l_ref()' and 'l_ptr()' functions, rippled-through changes 1555 to support mapped data (files basic.c buffer.c csrch.c display.c 1556 estruct.h eval.c exec.c fences.c file.c filec.c finderr.c globals.c 1557 history.c insert.c line.c oneliner.c path.c proto.h random.c region.c 1558 search.c spawn.c tags.c tmp.c undo.c window.c word.c) 1559 1560 + added logic to file tmp.c to allocate LINE structs from a pool of 1561 pages (note that deallocation isn't done, nor is swapping to a 1562 tmp-file as yet). 1563 1564 (part b) 1565 + added code to test return-value of 'glob()' in file eval.c 1566 1567 + corrected 'get_recorded_char()' (file input.c) to reset 'buffer' 1568 variable after 'finish_kbm()' makes it obsolete. 1569 1570 + provided more useful defaults for TERMCAP, IBMPC and COLOR 1571 definitions in file estruct.h 1572 1573 + corrected value of MK in 'FreeBuffer()' (file buffer.c), which caused 1574 multiple frees of the same LINE struct. 1575 1576 + supplied initialization for wp->w_dot.l and wp->w_line.l in 1577 'reframe()' (file display.c) to handle the case when vile is invoked 1578 with no filename parameters. 1579 1580Changes for vile 3.46: 1581(pgf) 1582 + suppress attempts at reading a null file into the [vileinit] 1583 buffer (main.c) 1584 1585 + don't require the d_namlen field in a DIRENT struct -- some systems 1586 don't have it, and most of those that do null terminate the name 1587 anyway. (dirstuff.h, filec.c, glob.c, path.c) 1588 1589 + changed compile flags for uts, on user suggestion (makefile) 1590 1591 + in ffread(), after doing read(), do an fseek to sync up. this 1592 keeps some stdio implementations from not bothering to seek back 1593 to the start in case we have to discard the read and resort to 1594 slowreadf() due to long lines. (fileio.c) 1595 1596 + avoid realloc(ptr,0) when long lines are encountered in quickreadf() 1597 (file.c) 1598 1599 + make M and L commands take account of too few lines in window (i.e. 1600 do the right thing when end of file is on screen). (basic.c) 1601 1602 + even if the global dos-mode is on, empty (new) buffers should come 1603 up as non-dos. (file.c) 1604 1605 + fnc2engl() now tries to return a longer, meaningful name for a 1606 function (i.e. "exit" rather than "Q"). (bind.c) 1607 1608(tom) 1609 + test-compiled VMALLOC, DEBUGM options on apollo. 1610 1611 + introduced 'set_lforw()' and 'set_lback()' macros to use in mapped 1612 memory option. Added stubs in new file 'tmp.c'. Modified files 1613 buffer.c exec.c file.c filec.c line.c undo.c, verified mechanically. 1614 1615 + added definition of LINEPTR and 'lsync()' to files estruct.h, proto.h 1616 1617 + fixed a memory leak in 'glob()', and changed interface to 1618 'glob_free()' (files filec.c, glob.c, glob.h). 1619 1620 + revised logic in ibmpc.c that sets screen resolution ($sres) to 1621 make it more table-driven. 1622 1623 + corrected 'forwline()' in file basic.c (repeated movement down 1624 sometimes reset the cursor to column 1 unlike vi). 1625 1626 + added prototypes to 'mktbls.c'. 1627 1628 + modified file main.c so that if the standard input isn't a terminal 1629 then vile reads it into a buffer and reopens /dev/tty (unix only). 1630 1631 + modified files main.c and epath.h to allow (for unix systems) vile 1632 to find vile.hlp even if vile isn't in the path. 1633 1634Changes for vile 3.45: 1635(pgf) 1636 + got rid of LOOKTAGS mode, and all of its ifdefs (filec.c, main.c, 1637 modetbl, proto.h, tags.c) 1638 1639 + got rid of NeWS ifdefs (basic.c, bind.c, buffer.c, edef.h, 1640 estruct.h, exec.c, file.c, input.c, isearch.c, main.c, modes.c, 1641 spawn.c, termio.c) 1642 1643 + resolved vile.hlp modes documentation and modetbl (vile.hlp) 1644 1645 + added missing mlreply call in goto-named-mark processing, to 1646 allow "goto-named-mark a" to be used in a command file. (basic.c, 1647 proto.h) 1648 1649 + added man page (don't get excited -- it's short), and turbo makefiles 1650 vile.mak, mktbls.mak. (makefile) 1651 1652 + fix to ins/inschar/istring to correct for bad backspace limiting 1653 (insert.c) 1654 1655 + fixed off-by-one bug for column count under X. (x11.c) 1656 1657 + turned off typahead detection for X11. updates were being held 1658 off incorrectly. (termio.c) related change, possibly unnecessary: 1659 reordered initial mlforce() and initial update() in main, because 1660 xvile was not starting up properly. 1661 1662 + no longer set _bspace bit in _chartypes[backspc], and isbackspace() 1663 macro tests backspc directly. will make rebinding of backspace 1664 simpler. (estruct.h, termio.c) 1665 1666 + some changes to set-terminal stuff -- took out the keys that can 1667 be rebound with bind-key, i.e. those that have effect only in 1668 command mode. added help. (bind.c, vile.hlp) 1669 1670 + no longer strip the SPEC bit in ttgetc, so a meta key can be used 1671 to generate "function keys" (termio.c, vile.hlp) 1672 1673 + updated README 1674 1675Changes for vile 3.45: 1676(tom) 1677 1678 + more fixes for long/int complaints from TurboC (files tags.c spawn.c 1679 random.c main.c display.c bind.c). 1680 1681 + added logic to fileio.c so that (MSDOS only) overwriting a file 1682 saves the old version renamed to ".bak" suffix. 1683 1684 + simplified argument processing in file main.c; reduced size a little. 1685 1686 + reorganized code that uses tungetc so that it isn't used as often. 1687 This also makes 'tpeekc()' obsolete. Moved extern-defs for 'tungotc' 1688 to edef.h (files input.c, exec.c, globals.c, oneliner.c, termio.c). 1689 1690 + modified 'setvar()' in eval.c to show warning message if attempt is 1691 made to modify a readonly variable, or if for some other 1692 reason an environment variable cannot be set. 1693 1694 + modified 'ibmcres()' in ibmpc.c to allow user to reset using value of 1695 CDSENSE as argument. 1696 1697 + corrected inequality-test in 'newscreensize()' (file display.c) that 1698 prevented user from correctly setting $sres back to VGA in IBMPC 1699 config. 1700 1701 + renamed entrypoints in file crypt.c to 'ue_setkey()' and 'ue_crypt()' 1702 to avoid confusion with unix crypt(3) (files fileio.c, file.c 1703 crypt.c, main.c, cmdtbl). 1704 1705 + corrected core dump when using encryption from command line by 1706 splitting out 'ue_makekey()' from 'ue_setkey()'; used this from 1707 'resetkey()' in file.c 1708 1709 + corrected handling of -k (crypt option); added a global 'cryptkey' 1710 which is used to set the encryption key only in files listed as 1711 command arguments (files edef.h, main.c, buffer.c). 1712 1713 + overwrite -k parameter value in main.c (for those systems where this 1714 has an effect, it changes the value shown in a "ps" command). 1715 1716 + made 'quickreadf()' decrypt file. 1717 1718 + corrected 'resetkey()' so that it doesn't automatically use crypt key 1719 for files that aren't the same as the buffer. 1720 1721 + The prompt added to 'resetkey()' also required moving some calls on 1722 'ttclean()' (file.c). Simplified some of the ttclean code using 1723 CleanToPipe and CleanAfterPipe macros. 1724 1725 + corrected 'resetkey()' so that if no password is provided (at least 1726 for pipes), the operation will proceed properly (i.e., read/write 1727 without encryption). 1728 1729 + modified 'modeline()' in display.c to show if the current buffer is 1730 encrypted. 1731 1732 + made NAMEC and TESTC define to variables name_cmpl and test_cmpl, 1733 which can be modified at run-time (files estruct.h, edef.h). 1734 1735 + added commands "set-terminal" and "show-terminal" to set/show special 1736 characters (including NAMEC/TESTC values!). Put this into file 1737 bind.c (reusing pieces of 'bindkey()'). 1738 1739 + make '#' (special prefix-key) rebindable, like cntl_a-prefix. 1740 1741 + make display-routines in bind.c show the actual characters to which 1742 CTLA and CTLX are bound (function 'kcod2str()'). Note that 1743 'prc2kcod()' still assumes that CTLA and CTLX are bound to control 1744 characters. 1745 1746 + changed argument type of TERM.t_cres to 'char *' to allow consistent 1747 usage of variable 'sres[]' (files tcap.c, ibmpc.c, z_ibmpc.c). 1748 1749 + changed values recognized by ibmpc.c for "$sres" to be the names 1750 that it returns (e.g., "VGA") and the number-of-lines (from main.c's 1751 arguments). 1752 1753 + finished off 'npopen()' for MSDOS (allows write-pipes) and 1754 implemented 'inout_popen()'; used in file spawn.c for filter-region 1755 command. 1756 1757Changes for vile 3.44: (pgf) 1758 + fixed indentation if openup used in cmode, with a single word on 1759 the current line -- indentation was coming from the _next_ line, 1760 instead (insert.c). 1761 1762 + finderrbuf() now remembers its last argument (finderr.c) 1763 1764Changes for vile 3.44: 1765(tom) 1766 + corrected file descrip.mms; the vms_link.opt file no longer applies 1767 to mktbls.exe; also fixed 'clobber' rule. 1768 1769 + corrected file glob.c (don't treat '$' as a wildcard on vms). 1770 1771 + correction: moved call on 'global_val_init()' before 1772 'expand_wild_args()', to make wildcard globbing work on vms and 1773 ms-dos (file main.c). 1774 1775 + corrected logic of 'kbd_reply()'; last_eolchar was not being set 1776 properly when NAMEC wasn't space (file input.c). 1777 1778 + modified 'kbd_engl_stat()' in file bind.c so that if NAMEC is not 1779 bound to space, then name-completion for :-commands is turned on. 1780 1781 + added option KBD_NULLOK to 'kbd_reply()' and used it in function 1782 'kbd_engl_stat()' to re-allow commands to be empty (files bind.c, 1783 input.c, estruct.h), needed after decoupling NAMEC and space. 1784 1785 + corrected 'slowreadf()' in file file.c so that dos-mode files are 1786 read properly. (The code stripped CR's even when dos-mode wasn't 1787 set). 1788 1789 + implemented 'npopen()' and 'npclose()' for MSDOS; used this to make 1790 MSDOS logic for ^X-! the same as on UNIX (modified files fileio.c, 1791 npopen.c, spawn.c). 1792 1793 + modified 'makename()' to yield essentially the same result for 1794 MSDOS as for UNIX (in file.c), because 'npopen()' works similarly. 1795 1796 + added tests in 'ffropen()' and 'ffwopen()' to prevent accidentally 1797 opening a directory-file. 1798 1799 + corrected handling of FIOFNF in 'readin()'; made this work on MSDOS 1800 as well as UNIX (files file.c, fileio.c, display.c). The value of 1801 'errno' was not being saved to report in the error message. Added 1802 'mlerror()' to display.c to encapsulate the error reporting better. 1803 1804 + moved 'errno' declarations into 'estruct.h' (files display.c, file.c, 1805 npopen.c, termio.c). 1806 1807 + added function 'set_febuff()' to encapsulate the 'febuff[]' and 1808 'newfebuff' variables; moved these to finderr.c (files file.c, 1809 finderr.c, spawn.c). 1810 1811 + corrected test in 'filename()' (file.c) for ":f" command. 1812 1813 + corrected test in filec.c for pre-existing file (don't prompt if it 1814 is a pipe-command). 1815 1816 + corrected tests in filec.c for prompt for re-read (didn't look for 1817 abort-status). 1818 1819 + test-compiled CRYPT, VMALLOC configuration flags on TurboC. Modified 1820 files crypt.c, estruct.h, vmalloc.c 1821 1822 + began addressing TurboC warnings for conversion between long/int. 1823 1824 + deleted obsolete defines in file estruct.h (CLRMSG, CTRLZ). 1825 1826 + added 'set_rdonly()' to encapsulate the places where an automatically 1827 created buffer is made read-only. This makes them more consistent. 1828 Files: bind.c, exec.c, main.c, oneliner.c, random.c, spawn.c 1829 1830 + modified 'update()' in file display.c so that '.' commands don't 1831 redisplay if VISMAC is configured (previously, only keyboard macro 1832 redisplay was suppressed). 1833 1834Changes for vile 3.43: 1835(pgf) 1836 + changed NAMEC from SPACE to TAB (estruct.h). changed eolchar arg 1837 passed to kbd_reply in kbd_engl_stat from NAMEC to ' ', to 1838 compensate. added check against command term'ed with ' ' in 1839 execute_named_cmd() (exec.c). 1840 1841 + added check for iswild() when scanning for wildcard chars in glob.c 1842 1843 + allow nulls as well as newlines to separate filenames in glob-pipe 1844 output. 1845 1846 + added finderrbuf() routine (command is "error-buffer" or "find-next- 1847 error-buffer-name"), to set the name of the buffer to scan for errors. 1848 (finderr.c, proto.h, cmdtbl, vile.hlp) 1849 1850 + fixed pathname bug when scanning output that contains Entering/ 1851 Leaving pairs. We no longer just keep a pointer to where we 1852 found the directory name, but now malloc space for it. 1853 1854 + horizontal scrolling moves by half screens by default (window.c, 1855 display.c) 1856 1857 + added AIX to machines that need sys/ioctl.h (termio.c, display.c) 1858 1859 + further fix to repeat counts and the '.' command, so that all cases 1860 ( 6dw , 3d2w , etc.) work. 1861 1862 + support for letting a named register on a '.' command override 1863 what was originally typed: "adw"b. will put one word in register 1864 a and the nex in register b. (input.c line.c exec.c) 1865 1866(tom) 1867 + corrected define in dirstuff.h to make TurboC compile again. 1868 1869 + corrected logic of 'makename()' in file.c for MS-DOS. 1870 1871 + added type CMASK to correct use of _chartypes[] array on MS-DOS 1872 (e.g., in 'screen_string()' in input.c). 1873 1874 + deleted VMS-DCL file 'vile.com', since this causes conflict on 1875 MS-DOS. 1876 1877 + lowercased color names in file modes.c 1878 1879 + modified ibmpc.c to get true white and yellow colors (had gray and 1880 brown). 1881 1882 + modified files ibmpc.c and display.c to allow MS-DOS version to do 1883 scrolling. 1884 1885 + removed unused assignments from file insert.c 1886 1887 + substituted all l_fp references to lforw macro, l_bp references to 1888 lback macro, verified mechanically. 1889 1890 + make special case in 'dotcmdplay()' to allow (like vi) the repeat 1891 count on '.' command to replace that on the replayed command. 1892 1893 + modified logic of 'writereg()' to allow its call on 'imply_alt()' to 1894 correctly set the 'copy' parameter (only if a whole file is written). 1895 1896 + introduced new function 'same_fname()' to correct places where 1897 matches between a filename and the buffer's filename broke (either 1898 because it was not in canonical form, or because VMS version numbers 1899 were not stripped). 1900 1901 + modified fileio.c to read/write binary files on MS-DOS to avoid 1902 truncating files at ^Z. This does not make ^M visible however. 1903 1904 + ifdefd out contents of 'dot_replays_macro()' in input.c to avoid 1905 side-effects 1906 1907 + corrected logic of 'tungetc()' in file input.c; this had broken 1908 replay of keyboard macro "iX<esc>/Y^MaZ<esc>". 1909 1910 + split out 'expand_wild_args()' from main.c into a new file glob.c, 1911 which contains globbing code. Moved 'glob()' from path.c to glob.c 1912 also. 1913 1914 + moved function 'is_directory()' from filec.c to path.c; made it 1915 public. 1916 1917 + added function 'no_memory()' to encapsulate the more common places 1918 that vile/msdos runs out of memory; use this in several places to 1919 simplify error reporting. 1920 1921 + added universal-mode "history", to allow turning that function off, 1922 and instrumented history.c to automatically turn logging off if vile 1923 runs out of memory. (It is annoying to get out-of-memory errors on 1924 _every_ command). 1925 1926 + modified display.c to fill in the long space before program & version 1927 identifier for the scratch buffer (on the mode line). 1928 1929 + added option to 'mlreply_file()' to allow expansion of wildcard to 1930 multiple files. Use this in file.c (for ":e" and ":view" commands). 1931 1932 + modified files descrip.mms and vms_link.opt because (with new module 1933 glob.c) the link-command line got too long. Other mods to file 1934 descrip.mms to make file vile.com generated (to avoid leaving it 1935 around for ms-dos configuration), and the 'clean' and '.last' rules 1936 (to make them less noisy). 1937 1938 + corrected 'ffronly()' in fileio.c; on VMS this caused some files to 1939 be touched. 1940 1941 + implemented scrolling in file vmsvt.c 1942 1943 + implemented 'glob' mode to control how wildcards are expanded 1944 (affects files main.c, modes.c, glob.c) and the corresponding piped 1945 commands for glob-mode. 1946 1947 + added logic to 'makename()' to handle embedded blanks in filenames. 1948 1949Changes for vile 3.42: 1950(pgf) 1951 + added routine tb_stuff() (tbuff.c), which is roughly the 1952 converse of tb_peek(), to allow simple replacement of a character 1953 in a tbuff. 1954 1955 + used tb_stuff() to increment the buffer number when referencing 1956 the numbered buffers -- i.e. "1p becomes "2p in a '.' command. 1957 (input.c) 1958 1959 + backed out change to 'get_recorded_char()' (input.c) that caused 1960 dd..."1P... to continue deleting lines after the P operation. 1961 1962 + added horizontal scrolling mode, to cause whole screen to shift 1963 instead of just one line when cursor goes "off screen". this 1964 mode ("set hs", or "set horizscroll" is now the default. (display.c, 1965 vile.hlp, main.c, modetbl, proto.h) 1966 1967 + allow cursor to rest in last column, if line is just that long, to 1968 prevent extra horizontal scrolling. (display.c) 1969 1970 + split up the ins() function, to provide an inschar() function that 1971 istring could use. istring() now called by insstring() and 1972 overwstring(), which are bound to "insert-string" and new 1973 "overwrite-string" commands. all this to allow "insert-string" 1974 to take advantage of autoindent, cmode, wordwrap, etc. will 1975 need tweaks later when tty chars are rebindable (^U, ^W, etc.) 1976 1977 + compiled with "-Wmissing-prototypes", which turned up a bunch of 'em. 1978 (proto.h) 1979 1980 + some linux gcc cleanup, mostly just including some more headers 1981 (display.c file.c main.c) 1982 1983 + ifdefed out the onamedcmd() function, and it's binding (cmdtbl, 1984 exec.c) 1985 1986 + took out the extern declarations of getpwnam and getpwuid that i 1987 put in recently. they seem to be causing more problems than they 1988 were fixing. in general, providing prototypes for system routines 1989 is a real pain. i wish there were an "ifnprototype" construct. 1990 1991Changes for vile 3.41: 1992(tom) 1993 + ifdef ioctl.h for APOLLO (note: you shouldn't use '"'-form for system 1994 includes, since that could pick up files in the current directory, 1995 and also because it does weird things to the include-path). 1996 1997 + moved code to support USE_LS_FOR_DIRS from filec.c to path.c, making 1998 it look like unix-style directory routines. Added ifdef for 1999 OLD_STYLE_DIRS just in case... 2000 2001 + modified 'slowreadf()' in file.c so that piped input scrolls from the 2002 bottom of the window, rather than the middle. 2003 2004Changes for vile 3.40: 2005(pgf) 2006 2007 + the makefile no longer supplies any -I options. this will cause some 2008 machines to not find "ioctl.h" where it's in the sys subdirectory, 2009 but I just spent a day tracking a bug caused by picking up the wrong 2010 system headers (i needed the gcc "fixincludes", and they had moved). 2011 2012 + now honor LINES and COLUMNS in getscreensize (display.c) 2013 2014 + now handle searching multiple tags files specified in "set tags" 2015 2016 + bugfix to fences.c, which fixes indentation when inserting '}' 2017 2018 + added firstnonwhite() calls to godotplus, so we can publish it as 2019 "whole-lines" (files basic.c, cmdtbl). 2020 2021 + added 'setjmp()' code to files main.c, input.c to handle ^C with 2022 BSD-style signals. 2023 2024 + added define USE_LS_FOR_DIRS to files dirstuff.h and filec.c to 2025 accommodate systems w/o a 'readdir()' function. 2026 2027 + corrected $pagewid (was returning length instead of width) in file 2028 eval.c 2029 2030 + use lsprintf to form [Macro nn] names (file exec.c) 2031 2032(tom) 2033 + corrected 'ffwopen()' in fileio.c so that write of current buffer on 2034 VMS works properly (forgot to strip version number). 2035 2036 + made 'flook()' work properly for vms (file bind.c) 2037 2038 + moved 'dname[]' table into file exec.c and 'cname[]' table into file 2039 modes.c; did this to get rid of 'comma' macro, which does not work as 2040 intended on Turbo-C (the comma got evaluated too soon). 2041 2042 + to prevent redefinition error in Turbo-C, removed redundant includes 2043 for <stdio.h>, <string.h> and <signal.h> (already in file estruct.h) 2044 from the ".c" files: ansi.c at386.c basic.c bind.c buffer.c crypt.c 2045 dg10.c display.c eval.c exec.c file.c globals.c hp110.c hp150.c 2046 ibmpc.c input.c isearch.c line.c main.c modes.c npopen.c oneliner.c 2047 regexp.c region.c search.c spawn.c st520.c tcap.c termio.c tipc.c 2048 vmsvt.c vt52.c window.c word.c wordmov.c x11.c z309.c z_ibmpc.c 2049 2050 + moved macro 'P' from file proto.h to estruct.h, adjusted definitions 2051 in file 'estruct.h' to allow use of 'P' macro in CMDFUNC definition. 2052 Added definition of type 'CmdFunc' for the actual pointer-type. 2053 2054 + use P-macro for TERM struct definitions (and added TTscroll), 2055 modified files estruct.h and display.c 2056 2057 + corrected logic of 'dot_replays_macro()' in file input.c (for the 2058 special case of macro "@w" followed by "dd" command, I noticed that 2059 '.' replayed both commands). 2060 2061 + compiled with Turbo-C, turned on warning if function was called w/o a 2062 prototype. Added prototypes (including those for static procedures) 2063 to get rid of these and other compiler warnings. Doing this found an 2064 error in eval.c and one in history.c (files modified: bind.c buffer.c 2065 display.c eval.c exec.c fences.c file.c fileio.c history.c ibmpc.c 2066 input.c insert.c main.c mktbls.c modes.c npopen.c opers.c path.c 2067 random.c regexp.c region.c spawn.c tbuff.c window.c). 2068 2069 + corrected MSDOS-specific pathname translation in files path.c and 2070 random.c 2071 2072 + corrected d_namlen value supplied in readdir function for VMS (file 2073 vms2unix.c) 2074 2075 + implemented first version of filename completion for VMS. (Directory 2076 names are not completed; there are still some ambiguities between 2077 scratch buffer names and VMS directory paths). 2078 2079 + added option KBD_UPPERC to input.c; use this to force prompts for VMS 2080 filenames to uppercase. 2081 2082 + removed redundant declarations for 'getenv()'; it is already in file 2083 estruct.h 2084 2085 + added new file 'vmspipe.c' which provides a piped-read facility 2086 'vms_rpipe()'. 2087 2088 + modified file finderr.c to recognize lint output on SUNOS; also 2089 corrected it to ensure that sscanf doesn't scan past the string 2090 limits (no EOS was formerly on each line). 2091 2092 + added/used new functions 'pathleaf()' and 'pathcat()' to file path.c 2093 to hide vms/unix pathname differences. 2094 2095Changes for vile 3.39 (from Tom Dickey): 2096 2097 + corrected error in 'get_recorded_char()' (file input.c) that caused 2098 command "ix^[j.j.j.j." to not repeat properly. 2099 2100 + corrected prompt-string in 'ShellPrompt()' (file spawn.c) 2101 2102 + corrected behavior of filename completion (file filec.c) so that 2103 internal names and shell names can have blanks in them. 2104 2105 + provided a last-replay value for 'execfile()' in file exec.c (it was 2106 defaulting to the current buffer, which is wrong). 2107 2108 + corrected pointer test in 'tb_sappend()', which was null in the 2109 special case of a ":w" command before any ":e" or other read. 2110 2111 + simplified MSDOS-drive translation (untested) in file random.c to 2112 accommodate changes made for VMS in other files. 2113 2114 + modified 'cd()' procedure in file random.c to chdir to home directory 2115 on systems that have one. 2116 2117 The following are changes to support VMS: 2118 2119 + added new files (shown in makefile and descrip.mms): dirstuff.h, 2120 vms2unix.c, vile.com 2121 2122 + use new file 'dirstuff.h' for definitions in filec.c and path.c 2123 2124 + corrected some dependencies in descrip.mms 2125 2126 + corrected logic in 'imply_alt()' (file buffer.c) that lost the 2127 original filename argument (replaced it with the lengthen-path). 2128 2129 + corrected logic in 'getfile()2' (file file.c) to account for the 2130 distinction between buffer-names and file-names. Simplified 2131 'getfile()' and 'getfile2()' because of modifications to 2132 'shorten_path()' and 'lengthen_path()'. 2133 2134 + corrected logic of 'ffread()' (file fileio.c); on VMS a single read 2135 does not necessarily read an entire file. 2136 2137 + corrected definition of macro 'isready_c()' for VMS. 2138 2139 + modified 'shorten_path()' (file path.c) to provide the "./" prefix 2140 that was added in files buffer.c and display.c; also absorbed the 2141 test for MSDOS device prefix (e.g., "c:") there. This was needed to 2142 allow VMS port to show native pathnames. The equivalent of "./" on 2143 VMS is "[]". 2144 2145 + use VMS function 'fgetname()' and 'getname()' to determine the 2146 fully-resolved path in 3 cases: after writing a file, after reading a 2147 file, and in 'lengthen_path()' (files file.c and path.c). This makes 2148 it know the current version number of each file. 2149 2150 + modified 'makename()' (file file.c) to account for VMS pathnames. 2151 Note that DecShell names (which the C runtime library accepts as 2152 arguments to fopen, etc.) look much like unix filenames. 2153 2154 + added new function 'is_internalname()' to file path.c; this serves 2155 the same purpose as the (now obsolete) macro isScratchName. This 2156 makes a better check (to keep VMS paths distinct from scratch buffer 2157 names) than the macro. 2158 2159 + deleted macro isScratchName from file estruct.h; changed macro 2160 isInternalName to use function 'is_internalname()'. Adjusted other 2161 macros in estruct.h and display.c to make VMS port work properly. 2162 2163 + added new function 'non_filename()' to file path.c; use this in files 2164 bind.c and random.c to encapsulate the program+version string. Use 2165 'non_filename()' in 'is_internalname()'. 2166 2167 + corrected logic of 'screen_string()' (file input.c) to handle the 2168 distinction between "[" and "]" used to delimit pathnames on VMS, and 2169 to indicate scratch-buffer names. 2170 2171 + corrected wildcard, path and scratch-buffer characters for VMS (file 2172 main.c). 2173 2174 + corrected/modified file path.c so that the functions therein support 2175 VMS filenames. Added several new functions to do this. 2176 2177 + corrected code for 'catnap()' (file random.c) for VMS. 2178 2179 + corrected several 'exit()' arguments (file termio.c) 2180 2181 + corrected VMS's ttgetc function (its interaction with 'typahead()' 2182 was wrong; also 'typahead()' was not really implemented (file 2183 termio.c). 2184 2185 + ifdef'd out a redundant 'ttclean()' call (which caused the output on 2186 VMS to be closed more than once, which is really an error). 2187 2188 + guard 'vtinit()' (file vmsvt.c) against t_mcol or t_mrow too small 2189 2190Changes for vile 3.38: 2191(pgf) 2192 + cleaned up internal naming and help for alt-tabpos mode. 2193 alt-tabpos on implies emacs-style, and it's off by default 2194 2195(tom) 2196 + corrected status-check in 'ffclose()' (in fileio.c) that generated 2197 spurious 'Error on close' message, visible when nothing was read from 2198 a pipe. (Also eliminated redundant defs for 'npopen.c' in fileio.c 2199 and proto.h). 2200 2201 + corrected place in 'globals.c' where (if the buffer was readonly), 2202 the '/' delimiter after an s-command was not eaten. 2203 2204 + modified loop-limit in "show-registers" command to display the 2205 numbered registers. 2206 2207 + corrected file fences.c, allowing C preprocessor lines to have 2208 leading whitespace before '#'. The cursor may be on any character 2209 from the first column through the '#'. 2210 2211 + rewrote procedure 'cpp_fence()' in file fences.c, allowing it to 2212 recognize "elif" keyword. Added 'nextchar()' to file basic.c to 2213 support this. 2214 2215 + modified procedure 'ShellPrompt()' in file spawn.c to eliminate the 2216 ": " before prompts for ^X-!. 2217 2218 + corrected 'kbd_reply()' in file input.c to invoke 'tgetc()' directly 2219 when ^V is used to escape a character. 2220 2221 + corrected 'kbd_kill_response()' in file input.c; ^W is not supposed 2222 to trim blanks before a word. 2223 2224 + corrected 'update()' in file display.c; the VISMAC define does not 2225 apply to "." command. This fix allows showmatch to work with "." 2226 command. Also, in 'fmatch()' in file fences.c; test return-value of 2227 'update()' to avoid catnap when update fails. 2228 2229 + corrected 'insert()' and 'insertbol()' in file insert.c; the cursor 2230 was not being advanced after repeated insertions like vi. 2231 2232 + corrected file input.c so that it can handle a "." command within a 2233 keyboard macro. The macro was "iA^[l2." (for testing). 2234 2235 + modified file input.c (new procedure 'dot_replays_macro()' so that 2236 the "." command after defining or executing a keyboard macro causes 2237 the macro to be (re)invoked. 2238 2239 + split 'kcod2prc()' in file bind.c into 2 parts; the new one (i.e., 2240 'kcod2str()') is used to support 'dot_replays_macro()'. Also use new 2241 function 'fnc2kcod()'. 2242 2243 + added new function 'kbm_started()' to file input.c to get rid of then 2244 non-recursive variable 'kbdplayreg'. 2245 2246 + save/restore "." repeat counts in 'start_kbm()' and 'finish_kbm()' so 2247 that repeat works properly for keyboard macros. 2248 2249Changes for vile 3.37: 2250(pgf) 2251 + works on osf/1 alpha now, with hacks applied to termio.c and 2252 display.c 2253(tom) 2254 + added files 'descrip.mms' and 'vms_link.opt'; compiled on VAX/VMS 2255 (but did not make it run) (tom dickey) 2256 2257 + pathname tracking fixes (calling shorten_path() correctly everywhere) 2258 2259Changes for vile 3.36 (from Tom Dickey): 2260 2261 + supplied initial value for dirc-mode 2262 2263 + guarded 'mlreply_file()' against missing curbp->b_fname (for use in 2264 .vilerc startup). 2265 2266 + corrected logic in 'kbd_reply()' (file input.c) that caused backspace 2267 to be treated as a command-delimiter. 2268 2269 + corrected logic in 'kbd_reply()' (file input.c) that caused '/' 2270 character in complex substitutions to be eaten, e.g., 2271 :g/pattern/s//newpattern/g 2272 broke after the 's'. 2273 2274 + corrected calls (broke in 3.35) on 'mlreply_file()' from 'insfile()' 2275 and 'operwrite()' (mods to files estruct.h, filec.c, file.c and 2276 opers.c). The ^R and ^W commands always prompt for name, rather than 2277 taking it from the screen. 2278 2279 + corrected end-of-line logic in 'do_a_mode()' (file modes.c). This 2280 had allowed history scrolling to display keywords that were separated 2281 by blanks; fixed this by testing for both space and "=" characters. 2282 2283 + added calls to 'hst_glue()' in 'unqname()' and 'getfile2()' to add 2284 blank in command history before the responses these functions solicit 2285 from 'mlreply()' 2286 2287 + added macro 'char2int()' to file estruct.h, use this in fileio.c and 2288 tbuff.c to hide byte-masking. 2289 2290 + changed data in TBUFF to 'char' (unsigned char does not buy that much 2291 conciseness); absorbed macros 'tb_values()' and 'tb_length()' into 2292 file tbuff.c as functions. 2293 2294 + corrected logic of 'tb_leaks()' (file tbuff.c); I had only exercised 2295 this at the end of execution. 2296 2297 + removed unused define for TMPSTOP 2298 2299 + recoded handling of keyboard macros in file input.c to use TBUFF 2300 structs (so there is no limit on length of keyboard macros). 2301 2302 + modified 'execkreg()' to remove length-limit on macros there as well 2303 (file line.c) 2304 2305 + modified 'execkreg()' to allow invoking registers 0-9 (file line.c) 2306 2307 + modified files input.c and line.c so that "." and @-commands can be 2308 invoked from within a keyboard-macro (i.e., ^X-&). 2309 2310 + modified files insert.c and input.c so that repeated "." command 2311 works properly for i,I,R commands (the cursor must appear at the end 2312 of the insertion). 2313 2314 + modified so that ^Z (job suspension) works properly on apollo sr10.3 2315 (files termio.c and spawn.c). 2316 2317 + modified 'ttgetc()' in file termio.c so that (for apollo) it reads in 2318 raw-mode. 2319 2320 + added flag to 'tgetc()', allowing it to suppress the conversion of 2321 intrc to abortc (files basic.c csrch.c eval.c exec.c input.c 2322 insert.c). This change also lets users quote ESC characters. 2323 2324 + corrected unused args in 'globber()' (file globals.c) 2325 2326 + corrected special case in use of 'canonpath()' on apollo (user could 2327 type in path beginning with "/", which was not getting "//" portion 2328 of pathname prepended. 2329 2330 + renamed "vitabpos" mode to "alt-tabpos" mode, avoiding conflict with 2331 "view" mode. 2332 2333 + added "implybuffer" (ib) mode to use in splitting out vi-style 2334 buffer-implication from 'autobuffer' mode (files modetbl and main.c). 2335 2336 + added "samebangs" (sb) mode to allow the ^X-!! and :!! commands to 2337 be optionally the same. 2338 2339 + Corrected logic of 'imply_alt()' so that it works with files read, as 2340 well as written (files buffer.c and file.c). 2341 2342 + split out the pathname functions into file path.c 2343 2344 + added function 'is_appendname()' to path.c to better encapsulate the 2345 isAppendToName macro's knowledge of the ">>" length (files path.c, 2346 filec.c, fileio.c, random.c). Used this to make functions 2347 'canonpath()', 'lengthen_path()', 'shorten_path()' and 2348 'is_pathname()' work properly with ">>" prefix. 2349 2350 + added code to 'path.c' to resolve "~" as user's home-directory. 2351 2352 + corrected code in 'makebufflist()' that caused b_bfname member to 2353 be modified (file buffer.c). 2354 2355 + moved MSDOS drive-logic from 'ch_fname()' into 'lengthen_path()' 2356 (files random.c and path.c) 2357 2358 + added procedure 'copy_val()' to modes.c to encapsulate the make-local 2359 and make-global macros. This fixes a case in which memory could be 2360 freed more than once: if the user had done 'setl' commands for two 2361 different buffers. 2362 2363 + made variables 'doslines' and 'unixlines' local to the procedures 2364 'slowreadf()' 'readin()' in file.c; initialized these so that 2365 successive reads of a set of files will treat the dos/unix line 2366 counts separately. 2367 2368 + added command "set-dos-mode" to force the current buffer to be 2369 in DOS-mode (trimming CR's). 2370 2371Changes for vile 3.35 (from Tom Dickey): 2372 2373 + addressed compiler warnings from gcc 1.36 on apollo sr10.3. (I know 2374 it is old, but it gives useful warnings). This required some minor 2375 adjustments to defines/includes in files estruct.h, proto.h, main.c, 2376 fileio.c, npopen.c, random.c to accommodate order-of-definition 2377 problems in stdio.h and signal.h 2378 2379 + tested with gcc 1.40 on sunos 4.1.1 2380 2381 + tested compiling with SMALLER=1; fixes to files eval.c, input.c, 2382 mktbls.c, npopen.c, proto.h, random.c (On my machine, this only cuts 2383 about 10% from the binary). 2384 2385 + added EOS at mismatch-point in 'fill_partial()' in file bind.c, fixes 2386 bug that caused incorrect display after repeated name completion and 2387 query operations. 2388 2389 + guarded 'kbd_complete()' against embedded nulls in its buf-argument, 2390 by testing for nulls before completion logic in file input.c 2391 2392 + added a flag 'kbd_expand' to make calls on 'kbd_putc()' via 2393 'mlforce()' and related functions show tabs as a space. This 2394 modifies files bind.c, edef.h, display.c to fix a problem I 2395 introduced in 3.32 2396 2397 + use 'kbd_expand' flag in file input.c to fix non-displaying ^M; other 2398 fixes include quoting and backslash fixes, as well as correction to 2399 wkillc handling. 2400 2401 + modified finderr.c to make the embedded tabs as "\t" digraphs, so 2402 they are visible. Added pattern to use with apollo C compiler. 2403 2404 + corrected logic in 'updpos()' (file display.c) so that vile displays 2405 cursor location just-like-vi for tabs and control characters. 2406 2407 + made 'wordcount()' code (file word.c) work properly. 2408 2409 + corrected 'join()' (file word.c) so that blanks are not inserted when 2410 joining after a space, or joining a blank line. Also (like 'vi'), if 2411 there is trailing whitespace on the first line, don't modify it. 2412 2413 + corrected flags for join-lines in file cmdtbl so that the region- 2414 oriented code can work. 2415 2416 + made join-lines work with regions (files opers.c, word.c). 2417 2418 + restored GLOBOK flag for join-lines-til (regions work now). 2419 2420 + interchanged order of calls on 'toss_to_undo()' and 'lremove()' in 2421 'ldelnewline()', since this was causing incorrect cursor placement 2422 after an undo. (The particular case arose in the rewritten 2423 join-lines, when joining a blank line to a non-blank line). 2424 2425 + modified 'edithistory()' in file history.c to ifdef out the ESC code 2426 (with new symbol KSH_HISTORY), merge the loops to use 'escaped' flag 2427 to avoid redundant logic, and pick up control chars (e.g., ^N and ^P) 2428 for scrolling. This also modified files input.c and exec.c 2429 2430 + corrected logic in history.c (from 3.34) that uses the function 2431 'WillExtend()' to modify/macroize !-commands. The code did not 2432 provide for the case in which the user would modify the text after 2433 scrolling to it. 2434 2435 + corrected call on 'hst_flush()' in file pipecmd.c (it was not called 2436 if the pipe-command failed). 2437 2438 + revised 'tgetc()' in file input.c to make it use a single return 2439 point (simplifies testing and debugging). 2440 2441 + corrected file modes.c so that user can abort from a set command. 2442 2443 + deleted code for unused global 'lineinput' (files bind.c, input.c, 2444 edef.h). 2445 2446 + renamed ifdef for LAZINESS to (global mode) TAGSLOOK, added an entry 2447 to modetbl for "looktags" to test/update this code. Note that this 2448 is turned off by commenting out the "LookTags" line in modetbl. This 2449 affects also files main.c, file.c modes.c and tags.c 2450 2451 + added file 'filec.c' to perform filename completion. Moved code that 2452 was ifdef'd LAZINESS there, and recoded so that it stores paths 2453 normally (not reversed!). 2454 2455 + created function 'mlreply_file()' in filec.c, used this to 2456 consolidate prompting for filenames in file.c (Note that now all 2457 filename prompts can get data from the screen). 2458 2459 + made most of the calls on 'mlreply_file()' default to the current 2460 filename; this is simpler than the last name given to the command. 2461 2462 + moved check for writing view-only buffer from 'filewrite()' as new 2463 local function 'writable()', before calls on 'writereg()' This 2464 affects 'filewrite()', 'filesave()', 'imdying()' and 'writeregion()' 2465 implicitly. 2466 2467 + use 'mlreply_file()' in 'execfile()' (file exec.c) 2468 2469 + use 'mlreply_file()' in 'operwrite()' (file opers.c) 2470 2471 + added 'no_such_file()' to file.c; use this in 'execfile()' so that 2472 ":source" will report an error if the file is not found. 2473 2474 + created function 'mkreply_dir()' modeled after 'mlreply_file()' in 2475 filec.c, used this to allow pathname completion in 'cd()' in random.c 2476 2477 + added mode "dirc" to file modetbl, to support directory name 2478 completion. 2479 2480 + added l_number to LINE struct, b_bytecount to BUFFER struct (file 2481 estruct.h) to use in caches for # of bytes and lines displays. 2482 2483 + added macro 'for_each_line' to file estruct.h 2484 2485 + added procedure 'bsizes()' to buffer.c to compute values for l_number 2486 and b_numchars, b_numlines values. Will later get this to cache 2487 results to speed up 'line_no()' and related code. 2488 2489 + corrected column-splitting in file modes.c (error in 3.34 changes) 2490 which caused dos-mode to not be shown. 2491 2492 + corrected flag in 'modetbl' for dos-mode: this makes dos-mode show in 2493 the status-line. 2494 2495 + added new entrypoints to tbuff.c: tb_copy, tb_scopy, tb_bappend 2496 2497 + merged code in 'spawn1()' and 'pipecmd()' (file spawn.c) so that 2498 !-commands and !!-commands work consistently. 2499 2500Changes for vile 3.34 (from Tom Dickey): 2501 2502 + modified mktbls.c to use 3rd column of modetbl (window-flags). Moved 2503 window-flag defines in estruct.h to allow their use in nemode.h 2504 2505 + in modes.c, moved the code that updates window hints-flags from the 2506 'adjustmode()' to 'adjvalueset()' procedure so that it can use the 2507 new window-flags entry in nemode.h 2508 2509 + modified mktbls.c (and estruct.h, edef.h) to support global modes. 2510 2511 + added to modes.c: 'new_regexval()', 'free_regexval()', and 2512 'free_val()'. Use these in main.c and modes.c to simplify 2513 leak-testing. 2514 2515 + added to estruct.h defines to use in testing memory leaks using both 2516 dbmalloc as well as apollo-specific traces. 2517 2518 + added to main.c ifdef for NO_LEAKS; used this in testing for 2519 permanent memory leaks (freeing data also finds specific types of 2520 allocator corruption). Added test-code for this purpose to: 2521 buffer.c, display.c, line.c, regexp.c, tbuff.c, window.c 2522 2523 + plugged memory-leak in 'getfile()' in file.c by splitting it after 2524 the temporary-buffer allocation, making tbp a static value, and 2525 deleting the line that set the tbp.b_fname pointer to null. 2526 2527 + revised the value-checking in 'adjvalset()' (file modes.c) so that 2528 unnecessary changes are ignored. 2529 2530 + further modified file modes.c so that typing ' ' (except after string 2531 or pattern values) will continue the prompting for further set-modes, 2532 as in noninteractive use. 2533 2534 + put the TTputc for '\r' back into 'kbd_putc()'; omitted this when 2535 taking code for 'mlmsg()' from display.c 2536 2537 + added new function 'GetEnv()' to eval.c to guard against 2538 null-return from 'getenv()'. 2539 2540 + added new command (to file line.c) "show-registers" to show the 2541 contents of kill-buffers and registers. 2542 2543 + added new module 'history.c'. This implements up/down scrolling in 2544 an invisible buffer "[History]", which logs all :-commands. 2545 2546 + coded-around apollo sr10.3 optimizer-bug in 'execkreg()': 2547 kbdend = &kp->d_chunk[i]; 2548 resulted in kbdend == kp->d_chunk. 2549 2550 + moved autobuffer and c-suffixes modes to global-table. Deleted 'cwd' 2551 mode. 2552 2553 + modified mktbls.c so that each table will be sorted by name (not by 2554 type&name). Modified modes.c to take advantage of this and display 2555 the modes sorted in columns (more like 'vi'), except for long strings 2556 (which are deferred to the bottom of the display, still). 2557 2558 + make modes.c show the actual color name in addition to the index. 2559 2560 + rewrote 'kbd_string()' to interface it with 'edithistory()'. Split 2561 out entrypoint 'kbd_reply()' to support integration of history with 2562 'namedcmd()'. 2563 2564 + redefined 'kcod2key()' in terms of N_chars; added macro 'isspecial()' 2565 to estruct.h 2566 2567 + revised 'kbd_engl_stat()' and 'namedcmd()' to use the 'kbd_reply()' 2568 entrypoint so that user can scroll through history of any portion of 2569 commands. 2570 2571 + modified 'search.c' to log history for '/' and '?' commands. 2572 2573 + modified x11.c to use memcpy rather than bcopy (for consistency). 2574 2575 + made x11.c compile properly on apollo sr10.3 (there is a conflict 2576 between prototypes in <string.h> and <strings.h>). 2577 2578Changes for vile 3.33: 2579 2580 * many: cleanup for gcc-2.3's -Wall warnings 2581 2582 * bind.c: added new function, insertion_cmd(), which returns char 2583 that gives us simple insert mode. used in x11.c and input.c, for 2584 pasting and for insert-mode arrow keys 2585 2586 * estruct.h: don't redefine "const" on linux 2587 2588 * makefile: added aix warnings, changed name of ENV to ENVIR, due 2589 to name conflict with linux make 2590 2591 * random.c: add include of sys/select.h for AIX 2592 2593 * x11.c: added code to support arrow keys and function keys from 2594 Phil Rubini 2595 2596Changes for vile 3.32 (from Tom Dickey): 2597 2598 * modified estruct.h, proto.h and display.c to compile vile on HP/Apollo 2599 SR10.2 (CC 6.7). Added new definitions ANSI_PROTOS and ANSI_VARARGS 2600 to simplify this. 2601 2602 * modified 'mktbls.c' to produce nemode.h; use these definitions 2603 to replace buffer/window mode definitions in estruct.h and edef.h 2604 (note that this obsoletes symbol MAX_STRING_W_VALUE, reordered 2605 window int-modes). Further modified 'mktbls.c' to only create 2606 ".h" files for the cases where it has data (so that I can split 2607 modetbl off from cmdtbl, avoiding unnecessary recompiles). 2608 2609 * supplied an ifdef (at least for APOLLO!) in termio.c so that ^C 2610 and ^U work properly. 2611 2612 * added buffer-mode 'wrapmargin' to file insert.c (which overrides 2613 wrapwords iff it is set to nonzero). 2614 2615 * added new module 'tbuff.c' to manage dynamic buffers in places 2616 where local static buffers exist now. 2617 2618 * modified 'ins()' in insert.c so that it reallocates 'insbuff[]', 2619 allowing arbitrarily-large re-inserts. 2620 2621 * modified 'input.c' to dynamically allocate 'tmpcmd' and 'dotcmd' 2622 buffers. This allows arbitrarily-large commands to be repeated 2623 with '.'. 2624 2625 * guard 'lengthen_path()' in file.c against shell/pipe/internal names. 2626 2627 * added variable "$shell" (files cmdtbl and eval.c) to override 2628 environment-variable "SHELL" in pipe-commands. 2629 2630 * made 'show-vars' (file eval.c) show leading '$' or '%' to be 2631 consistent with the way the user must type them. 2632 2633 * suppress 'show-vars' (file eval.c) ERROR values (these correspond to 2634 unimplemented variables) 2635 2636 * corrected error in nextbuffer/swbuffer (file buffer.c) that allowed 2637 vile to crash if "set noautobuffer" was specified in .vilerc 2638 2639 * corrected display in 'show-vars' (file eval.c) of "$kill" (reference 2640 to volatile data). 2641 2642 * made new function 'kbd_complete()' (file bind.c) to allow keyboard 2643 completion in tables other than NTAB. 2644 2645 * modified logic in new function 'kbd_complete()' to show permissible 2646 completions in response to '?'. 2647 2648 * consolidated logic in exec.c, display.c, bind.c, input.c with new 2649 procedures 'kbd_putc()', 'kbd_puts()', 'kbd_erase()', 'kbd_alarm()' 2650 These hide random use of 'ttcol'. 2651 2652 * make 'kbd_engl_stat()' (file bind.c) recognize word-delete character. 2653 2654 * eliminated redundant unget/get (files bind.c, exec.c) in the interface 2655 of 'kbd_engl_stat()'; this caused an infinite loop in the call from 2656 'namedcmd()'. 2657 2658 * modified bug-test in 'updpos()' (file display.c); I had a process hang 2659 in that loop for some reason. 2660 2661 * collapsed expand/dobackslashes args of 'kbd_string' (file input.c) 2662 into one mask. 2663 2664 * modified 'mktbls.c' further to produce table 'all_modes[]', to use 2665 this for name-completion of mode. 2666 2667 * modified 'mktbls.c' to recognize color-types so I could get rid of 2668 upper/lower case kludge in modes.c 2669 2670 * modified 'modes.c' to use color-types. The interactive behavior now 2671 uses 'kbd_string()' to split the input at the '=' mark (if given). 2672 2673 * added option-flag KBD_LOWERC to 'kbd_string()' (file input.c) so that 2674 things that are forced to lowercase will be shown in that way on 2675 input. 2676 2677 * modified 'token()' (file exec.c) to handle the 'eolchar' for 2678 non-interactive calls on 'kbd_string()'. 2679 2680 - modified 'eval.c' to recognize '=' as a separator between 2681 variable-name and value, as in 'modes.c'. 2682 2683 - modified 'eval.c' to perform name-completion for environment 2684 variables (i.e., those beginning with '$'). 2685 2686 - modified 'modes.c' to accept vi-style multiple assignments in a ":set" 2687 command (this works non-interactively). 2688 2689 - corrected 'imply_alt()' in buffer.c; ensure that the fname-argument is 2690 non-null. If called via 'filterregion()', it will be null. 2691 2692Changes in 3.31: (Tom Dickey) 2693 2694 * corrected test in 'find_alt()', which caused the %/# toggle to work 2695 incorrectly in noautobuffer mode. 2696 2697 * updatelistbuffers after 'cd' command 2698 2699 * added 'chg_buff()' & 'unchg_buff()' to encapsulate logic to update 2700 buffer-list after buffers are modified. The function 'lchange()' 2701 is replaced by 'chg_buff()'. 2702 2703 * modified 'histbuffer' to toggle according to 'find_alt()' 2704 2705 * make the filename/buffer/number change for 'killbuffer' apply to 2706 'usebuffer()' 2707 2708 * corrected handling of repeat-count in 'C' command. 2709 2710 * updated vile.hlp 2711 2712 * revised 'mktbls.c': 2713 2714 * filter out redundant ifdef's 2715 * tab-align data items for readability 2716 * modify 'nefunc.h' to use prototypes rather than K&R style 2717 definition, also split the extern-definitions from the 2718 data items for readability. 2719 * make procedures static, linted 2720 * modified so that 'evar.h' definitions are automatically 2721 generated, so that "show-variables" can show a sorted 2722 list of variables. The new filename is "nevars.h". 2723 2724 * corrected window refresh flag for 'U' (lineundo) command. 2725 2726 * added an apollo-specific code in 'imdying()' to generate a walkback 2727 for debugging. 2728 2729 * corrected an error in 'zotwp()': reference to data that had been 2730 deleted. 2731 2732 * corrected an error in 'onlywind()': it did not delink window-pointer 2733 after freeing it. 2734 2735 * noticed that references to 'dfoutfn' weren't reentrant: I did a 2736 ":show-var" from the buffer-list and got only part of the heading. 2737 Reorganized display.c to ensure that it is reentrant by using a 2738 local copy of 'dfoutfn'. Note that I didn't add 'dfoutfn' as an 2739 argument to 'dofmt()' to avoid complications with varargs. 2740 2741 * corrected 'dfputli()': it didn't do hexadecimal. 2742 2743 * corrected 'updateline()': it sometimes failed to highlight the ends 2744 of the mode-line. 2745 2746 * corrected (my last change) to 'vtset()' so that "^J" is shown in 2747 list-mode. 2748 2749 * moved 'writeall()' from main.c to buffer.c; it belonged there, and 2750 I used local macros for simplifying it. 2751 2752 * remove SIGHUP handler before normal call on 'exit()' to avoid 2753 vile-died messages when running it in an xterm. 2754 2755 * corrected VMS definition of exit codes; added def of BAD-macro. 2756 modified main.c, display.c, window.c accordingly. 2757 2758Changes in 3.30, mostly from Tom Dickey: 2759 2760This is lots of changes, mostly in buffer.c: 2761 2762 * lint-clean: buffer.c 2763 2764 * linted also: file.c, modes.c (though I left size_t alone for now). 2765 2766 * added "list-vars" & "show-vars" to show the current variables 2767 2768 * modified 'killbuffer' so I could add binding ^X-k to point to 2769 a buffer-name in the buffer-list and kill it. 2770 2771 * also modified 'killbuffer' to recognize filename if buffer-name is 2772 not found, also buffer-number. 2773 2774 * modify buffer.c so that the number shown by '_' and '*' is consistent 2775 2776 * fixed ^X-o and ^X-O so they update buffer-list, as well as some 2777 other places I missed before. 2778 2779 * make some functions static (where they are really private), because 2780 my per-module lint library got too large. (I believe there are 2781 too many externals). In modes.c, this involved reordering, since 2782 my practice is not to have forward-refs on static functions, to 2783 make this work with some awful compilers. This meant that I 2784 deleted lines from 'proto.h'. 2785 2786 * introduced new macro 'isreturn()', used this in correction in 2787 'histbuff()'. I used it in one bug fix & also where I could find 2788 explicit compare for \r, \n. 2789 2790 * added mode 'autobuffer': 2791 2792 * the default is 'autobuffer' (the vile lru buffering) 2793 * curbp no longer is necessarily equal to bheadp 2794 * added members b_created, b_last_used, b_relink to support 2795 the autobuffer/noautobuffer mode. 2796 * if "noautobuffer" is set, ":rewind" and ":n" apply only 2797 to the original command-line files. 2798 2799 * added macros SCRTCH_LEFT, SCRTCH_RIGHT, ScratchName, IsInternalName 2800 to encapsulate use of '[' in names. 2801 2802 * added macros SHPIPE_LEFT, isShellOrPipe to encapsulate use of '!' in 2803 names. 2804 2805 * added function is_pathname to encapsulate tests for pathnames 2806 beginning with '.'. This fixes the display of ".vilerc" from the current 2807 directory as "./.vilerc". 2808 2809 * added new char-types _scrtch and _shpipe to support killbuffer from 2810 screen. Use these types in new macro 'screen_to_bname()' which uses 2811 modification of 'screen_string()'. Used 'screen_to_bname()' to 2812 make ^X-e and ^X-k "correctly" parse the bname, fname columns from 2813 buffer-list. 2814 2815 * fixed the error you mentioned in modeline (the position of col-80 mark 2816 taking into account sideways and number modes). 2817 2818 * supplied a missing TTflush in input.c 2819 2820 * modified 'makebufflist()' to show only the flags actually used in the 2821 footnote. 2822 2823 * modified 'makebufflist()' to show '%' and '#' by the corresponding 2824 buffer/filename. 2825 2826 * added macros 'for_each_buffer()' and 'for_each_window()' to simplify 2827 code as well as to keep visible references to bheadp & wheadp 2828 confined to buffer.c and window.c respectively. 2829 2830 * added/used macro SIZEOF 2831 2832------------------------------------------------------------------------------- 2833 2834Changes in 3.29: 2835----------------- 2836 2837(fixes supplied by tom dickey, eric krohn, and willem kasdorp) 2838 2839buffer.c: changes for keeping the buffer list more up to date when 2840 on screen 2841fences.c: allow match of fence that is first char. in buffer 2842file.c: avoid inf. loop when choosing unique name for buffers that have names 2843 containing "x" in the NBUFN-1 position and allow ":e!" with no file 2844 to default to current file 2845globals.c: implemented 'v' command 2846isearch.c, line.c, display.c: ifdef of some unused code 2847main.c: added .C, .i to cmode suffixes, for C++ and cpp output files 2848makefile, install target: test for presence of vile in destdir before 2849 trying to move it to ovile 2850oneliner.c: don't allow pregion to be used if the plines buffer is current, 2851 and set the WINDOW list mode, not the BUFFER list mode, so :l works 2852 again, and fix for s/.//g bug 2853regexp.c: fixes for interaction of BOL and \s etc. 2854spawn.c: lint cleanup mostly casting strcXX() to void. 2855tcap.c: hack to supply CS or SR for scrolling region control, missing 2856 from some xterms 2857termio.c: added missing fflush in two of the ttclean() routines 2858word.c: fix for counts on 'J' command 2859 2860------------------------------------------ 2861 2862The rest of the changes lister here are grouped only roughly, and represent 2863the delta of version 3.28 from vile version three. -pgf Dec 30 1992 2864 2865------------------------------------------------------ 2866 2867VI COMPLIANCE: 2868=============== 2869 2870- made ^N, ^P, and ^T do exactly what they do in vi. (next line, 2871 previous-line, and tag-pop) Use ^X-o to switch windows, and ^X-2 to 2872 split them. 2873 2874- ANSI style arrow keys now work from either command or insert mode. Any 2875 ANSI function key of the form ESC [ c can be used as a command 2876 key -- the binding is FN-c 2877 2878- the '#' key may now be used to force the following character to be treated 2879 as a function key. Thus #1 is now equivalent to FN-1. 2880 2881- some modes/values have changed names: aindent is now autoindent, swrap is 2882 now wrapscan, exact is now noignorecase, and they all have the vi 2883 shorthands (e.g. tabstop is the same as ts, ic is the same as 2884 ignorecase). 2885 2886- the "paragraphs" and "sections" values are now implemented, but as 2887 regular expressions -- they look pretty ugly, but I think they 2888 do what vi does. 2889 2890- the sentence motions ')' and '(' now work. they may not do exactly what 2891 vi does, but they're close. they're controlled by regular 2892 expressions that find the ends of sentences -- then they move 2893 forward to the start of the next one. The regular expressions are 2894 set in the new "sentences" value setting. 2895 2896- "showmatch" mode now works, and momentarily shows the previous matching '(' 2897 or '{'. 2898 2899- "magic" mode, or rather "nomagic" mode, now works more like vi: special 2900 characters are still available by escaping them in nomagic mode. 2901 2902- there is a new mode, settable as "set terse" and "set noterse", which will 2903 suppress some of the extra messages that vile prints, reducing 2904 traffic for slow terminals. 2905 2906- the '%' command now scans forward for a fence character if you're not on 2907 one to begin with (thanks to Dave Lemke). I also added '^X-%', which 2908 scans backward instead. 2909 2910- the ":&" command now works, and repeats the last ":s" or '^X-s' 2911 substitution. it re-uses trailing p and l options, which vi does 2912 not. 2913 2914- the '&' now works, and repeats the last ":s" or '^X-s' substitution. 2915 2916- replacement sub-expressions work (\( and \), \1, etc.), as do \U \L \u \l 2917 2918- there is a new operator, '^A-&', which is similar to '&' but acts on a 2919 region. I expect that if you want it, you'll probably rebind it to 2920 something else (like '&') since typing it is awkward, to say the least. 2921 2922- ^W and ^U are now both read from the tty settings, and they work in both 2923 insert mode and on the : line. There is a "backspacelimit" setting 2924 that controls whether these (and regular backspacing (^H or DEL) 2925 will backspace past the insert point in insert mode. 2926 2927- The '@' command can now be used to execute the contents of a named register, 2928 as if it were entered at the keyboard. Thus @k executes register k. 2929 2930- The "keyboard macro" obtained with ^X-( and ^X-) can be saved into a named 2931 register with the ^X-^ command. This lets you record a keyboard 2932 macro and save it for use with the new '@' command. 2933 2934- And, along to further complement the '@' command, it is possible to pre-load 2935 the named registers with the "load-register" command. In a .vilerc 2936 you can say: 2937 use-register a load-register ihello^[ 2938 (where ^[ is really an ESC entered with ^V-ESC), and then from 2939 within vile you can execute '@a', and the word "hello" will be 2940 inserted. 2941 2942- the H, M, and L commands are now absolute motions 2943 2944- insert mode now takes a repeat count, so '80i=ESC' inserts 80 '=' chars 2945 2946- two new functions, to make normal motions more vi compliant -- 2947 forward-character-to-eol and backward-character-to-bol, which won't 2948 move past the boundaries of the current line. 2949 2950- you can no longer backspace from the beginning of a line to the end of 2951 the previous. (rebind 'h' and '^h' from "backward-character-to-bol" 2952 to "backward-character" 2953 2954- a motion caused by an undo is considered absolute, and the "last dot" 2955 mark is reset. 2956 2957- added 'vi +/searchstring file.c' invocation syntax 2958 2959- you can now specify a count to the ~ command. 2960 2961- backslashes now have a protective effect on the : line -- they guard 2962 against expansion of #, %, :, and \. 2963 2964- a lone ":f" without filename now gives same info as ^G 2965 2966- 'x', 's', 'r' will no longer delete a line if used on an empty line. 2967 2968- after a ":e!" command, the buffer name changes to match the filename, as 2969 if this were a new file read. It used to just suck a new file into 2970 an old buffer, and the names didn't match. 2971 2972- there is now a "taglength" setting, and the name of the tags file is in 2973 the "tags" setting. 2974 2975- the "cd" and "pwd" commands now work 2976 2977- shiftwidth has been implemented, so ^T, ^D, '<', and '>' all do pretty 2978 much what they do in vi 2979 2980- there is a separate c-shiftwidth, used when in cmode, much as c-tabstop 2981 replaces tabstop when in cmode. 2982 2983- ": args" is now similar in spirit to the vi command of that name 2984 2985 2986MISCELLANEOUS 2987=============== 2988 2989- reading files in general is _much_ faster, unless the file contains lines 2990 longer than 255 characters, in which case things slow down again. 2991 2992- regular expressions are more powerful and much, much faster than they 2993 were. vile now uses Henry Spencer's regexp code. This has the 2994 side effect of making '\|' a new metacharacter, for alternation 2995 of expressions. '\+' and '\?' are also new, and stand for "one 2996 or more" and "zero or one" occurrences. they can be used from 2997 the I-search commands as well. 2998 2999- in addition, \< and \> find beginnings and ends of words, and \w, \s, 3000 and \d find "word" characters, "space" characters, and digits. 3001 \W, \S, and \D find the converse 3002 3003- related to the above change, replacement metacharacters now work, so you 3004 can use '&' and '\1' through '\9' in the replacement string, and 3005 you'll get the right thing. 3006 3007- Dave Lemke contributed code to support vile under X windows -- including 3008 support for cutting/pasting, etc. Thanks Dave! 3009 3010- the '%' command will now find matching #if/#else/#endif sets. 3011 3012- the '%' command will now find matching C comment sets. Yes, it does 3013 the (non-)nesting correctly. 3014 3015- tabstops can now be set to any value, and there is a separate value for 3016 tabstops in C mode. (c-tabstop) 3017 3018- there is now some support for horizontal scrolling, using ^X-^R and ^X-^L 3019 3020- the ! filter command for running text through an external filter now 3021 works 3022 3023- quite a bit of code cleanup, at least I think so -- it has ported pretty 3024 easily to a R6000, linux, 386bsd, Sony NeWS, NeXT, and the UNIXPC. 3025 it's close to lint-free, and Saber has very few problems with the 3026 code. it'll now use prototypes if __STDC__ is defined, and it 3027 passes gcc -Wall -Wshadow with no warnings, if you ignore implicit 3028 declarations of system calls and lib routines. the code should now 3029 be more portable, to various compilers and systems. there are new 3030 targets in the makefile to make building on various platforms 3031 easier. the makefile even supports microsoft C. 3032 3033- the code now builds and runs under DOS, using (at least) Microsoft C 6.0. 3034 Peter Ruczynski has done a great job porting vile to DOS -- he 3035 calls that version "pcvile". He has used the Zortech compiler in 3036 the past -- I didn't try to break that, but you never know. 3037 NOTE THAT THE DOS CODE IS KNOWN TO BE MUCH BUGGIER THAN THE UNIX CODE! 3038 3039- quite a few bug fixes, including all (I think) of those reported by users 3040 3041- the "last dot" mark, accessed with the names ' and ` doesn't get reset 3042 needlessly as often -- that is, if an absolute motion results in no 3043 move (e.g. a failed search or tags operation, or an undo) then the 3044 "last dot" mark is unchanged. 3045 3046- the "source" ("execfile") command now does globbing on the file being run 3047 -- be sure to put it in quotes, as in :source "$HOME/.vilestuff" 3048 3049- entab, detab, and line-trim are now all operators (^A-tab, ^A-space, and 3050 ^A-t) 3051 3052- "make install" installs to /usr/local/bin or $HOME/bin, whichever is 3053 writable 3054 3055- the english names of functions, particularly new ones, have been 3056 "rationalized", hopefully making it easier to remember their names. 3057 3058- if you invoke a substitute command with ^X-s, it will always act globally 3059 across lines. (i.e. it behaves like "s/s1/s2/g", not like 3060 "s/s1/s2/") 3061 3062- a QUIT signal will no longer cause core dump unless built with DEBUG on 3063 3064- the display optimizes scrolling if possible when the window scroll 3065 commands ^E and ^Y are used. 3066 3067- values/modes have been reworked. Some are now attached to buffers, some 3068 to windows. By default, all values use the global settings of 3069 those values, and will track changes to the global settings. If a 3070 local setting is specified, it breaks the link between the local 3071 and global value, and the local value will no longer track the 3072 global value. ":set all" is now more informative. 3073 3074- the "set list" value is now attached to a window, not a buffer, so a 3075 single buffer can be displayed in two windows, "list"ed in one but 3076 not the other. 3077 3078- reading from other processes into a buffer is now _much_ faster 3079 3080- it is no longer legal to write out the contents of a buffer that has view 3081 mode set. 3082 3083- the format region command (^A-f) now restarts with each fresh paragraph, 3084 so you can format an entire file at once, without collapsing it all 3085 into a single paragraph. It also knows a little bit about C and 3086 shell comments, so you can now reformat blocks of commentary text. 3087 (There can't be any non-commentary stuff in front of the comments.) 3088 3089- the position of the cursor within a window (the framing) is now preserved 3090 while the window if "off-screen" -- it no longer reframes when made 3091 visible again. 3092 3093- there is now a mode indicator on the modeline: I for insert, O for 3094 overwrite, and R for replace-char. 3095 3096- a line starting with '#' won't shift-right if the buffer is in C mode. 3097 3098- :s/s1/s2/5 now works, to change the 5th occurrence on a line 3099 3100- there are new commands to write all buffers: :ww is a synonym for 3101 "write-changed-buffers", and :wwq is now a synonym for 3102 "write-changed-buffers-and-quit" 3103 3104- it is now legal to "kill-buffer" a displayed buffer 3105 3106- there are new variables, $word, $pathname, and $identifier, which return 3107 the appropriate type of string from the cursor's location 3108 3109- all of the variables, and the functions and directives of the extension 3110 language have been documented, and most have been tried, if not 3111 tested 3112 3113- two new functions: &rd and &wr, return whether a file is readable or writable 3114 3115- a new mode, "tabinsert", has been created to fill the needs of the 3116 "I hate tabs" camp. 3117 3118- filenames are now put into canonical form -- this keeps "junk", "./junk", 3119 "./somedir/../junk" from appearing as different files to the editor. 3120 3121- there is a new mode, "tagsrelative", which, when set, causes filenames 3122 looked up via tags to have the directory name of the tags file 3123 prepended to them before being accessed. This allows one to cd into 3124 a build tree from within the editor, to facilitate a grep or a local 3125 build, and have tags lookups continue to work. 3126 3127- the find-next-error code now honors the "Entering/Leaving directory" 3128 messages that GNU make (and others?) puts out. 3129 3130- job control now works right 3131 3132IMPLEMENTORS NOTES: 3133=================== 3134 3135- internally, most pointers into the buffer, consisting of a LINE * and an 3136 int offset are now represented with a MARK structure -- in the 3137 nineties, it's time to start using structure assignment. 3138 3139- the set of values that are frequently handed about between buffers and 3140 windows, or windows and their "children" are now grouped into 3141 B_TRAITS and W_TRAITS structures, for easier bookkeeping. There 3142 are lots of macros to hide the added data structure depth. 3143 3144- if you add a new setting that should be inherited by and selectable 3145 on a per-buffer or per-window basis, add it to the W_VALUES or 3146 B_VALUES structs. Otherwise, if its just a global value, like the 3147 X font, make it a variable. I intend to merge the setting of 3148 variables in with the other values one of these days. 3149 3150- there is now a generic printf facility built in, which is layered under 3151 mlwrite() for the message line, bprintf() to print into a buffer, 3152 and lsprintf() to print into a string 3153 3154- LINE structures can now have NULL l_text pointers -- empty lines don't 3155 have memory associated with them (except for the LINE struct 3156 itself) 3157 3158- line text is now "block malloc"ed -- now for most files there is are two 3159 mallocs and a single read, no copies. previously there were two 3160 mallocs per line, and two copies (stdio's and ours). This change 3161 implies that LINE structures and their text should not be moved 3162 between buffers -- the space they occupy may have come from the big 3163 chunks attached to the buffer structure, and not from the malloc 3164 pool directly. So lfree() and lalloc() now take a buffer pointer 3165 argument. 3166 3167- there is "line poisoning" code, in line.c, which trashes the contents of 3168 freed lines and LINE structs, to make it easier to find bad usage. 3169 3170- do_fl_region() is a convenient wrapper for writing operator commands that 3171 work on full lines -- there isn't yet a similar wrapper for partial 3172 line operators. 3173 3174- use mlwrite() for informative messages that terse mode will suppress, 3175 mlforce() for messages that _must_ be seen, and mlprompt() for 3176 messages that need a response from the user unless they're in a 3177 command file. 3178 3179