home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 365_03 / 14to15.txt < prev    next >
Text File  |  1992-04-06  |  7KB  |  132 lines

  1. Here's a quick list of features in 1.5 that aren't in 1.4
  2.  
  3. - Under MS-DOS, no system variables are accessed directly.
  4. - Elvis now works under VMS.
  5. - The "file is busy" limitation has been removed.
  6. - Control-V quoting is more compatible with the real vi.
  7. - The ":set warn" warning is only output on a ":!" or ":sh" command that isn't
  8.   being used as a filter.
  9. - Function keys can be easily mapped in a terminal-independent way.  The
  10.   ":mkexrc" command will then save the mappings in a terminal-independent way.
  11. - The `ctags` program has been modified to support ANSI C (somewhat).
  12. - The `ref` program has been modified.  It no longer needs a "refs" file
  13. - A new ":color" command allows you to control which colors elvis uses.
  14.   (This only works right on PCs... running any operating system, though!)
  15. - The ":set remap" option is now supported.  Elvis allows recursive macros!
  16. - A new option, ":set ruler", has been added.  It causes elvis to constantly
  17.   display the current line/column numbers.
  18. - Many small changes have been made to bring elvis a little closed to POSIX.
  19. - In visual commannd mode, the new 'v' and 'V' commands let you *visibly*
  20.   mark the text that you want to apply a c/d/y/</=/>/\ command to.
  21. - The \ key is a new operator command.  It brings up a small menu.
  22. - The = key is now an operator command that sends the selected text through
  23.   a predefined filter program.  The default filter is "fmt", but you can change
  24.   it via ":set equalprg=indent" or whatever.
  25. - A clone of "fmt" is included.
  26. - You can now move directly to a given percentage of the way through the file,
  27.   via a command such as "50%".  (The numberless % command still works, too.)
  28. - Regular expressions now support the \{n\} and \{n,m\} closure operators.
  29. - File preservation and recovery is now handled in a more vi-like way.
  30. - Keyboard timeouts are now handled in a better way on SysV and BSD unices.
  31.  
  32.  
  33. The main goals of 1.5 have been to fix bugs, improve portability,
  34. increase compatibility with the real vi, and add a few useful
  35. extensions.  Most of the extensions can be individually disabled by
  36. compile-time options, if you like.
  37.  
  38. My favorite extension is a new *visible* way to select text to delete,
  39. yank, or whatever.  In visual command mode, if you hit 'v', then the
  40. character under the cursor is hilighted.  As you move the cursor around,
  41. all text from the 'v' spot to the current cursor position is hilighted.
  42. When you've moved the cursor to the end of the text you want to act on,
  43. you just need to hit one of the operator keys once.  For example,
  44. "vwwwd" is approximately the same as "3dw".  To cancel the selection
  45. without doing anything to the text, hit 'v' a second time.
  46.  
  47. The uppercase 'V' key does the same thing with whole lines, instead of
  48. characters.  E.g., "Vjjjjj>" is a lot like ">5j" or "6>>".
  49.  
  50. The '\' key is a new operator which pops up a menu from which you can
  51. choose any of the most common operations.
  52.  
  53. All three of these can be mapped using the "visual" hack.  This allows
  54. them to be used while you're in input mode.  Also, I've experimented
  55. with using them in conjunction with a mouse, with the mouse configured
  56. like this: mouse movement simulates repeated pressings of the arrow
  57. keys, and the buttons send unique escape codes when pressed and when
  58. released.  I mapped the left and right buttons to send 'v' and 'V'
  59. (respectively) when pressed, and '\' when released.  This gives elvis a
  60. reasonably nice mouse interface, since the '\' pop-up menu is clever
  61. enough allow selection via arrow keys (mouse movement) and the '\' key
  62. (mouse button).
  63.  
  64. The '%' movement command can now accept a "count" argument.  A plain "%"
  65. still moves to the matching parenthesis, as always, but "50%" moves the
  66. cursor to approximately half way through the file.  I figured this might
  67. provide a nice hook for adding support for a slider bar in a windowing
  68. system, but I haven't actually tried it.  For a similar reason,
  69. control-X now moves the cursor to a given screen column (taking
  70. side-ways scrolling into account), which I figured might be useful in
  71. conjuction with the 'H' command for adding simple cursor positioning in
  72. a windowing system.  If the user clicks on row 5 column 27, then you
  73. could stuff "5H27^X" into the type-ahead queue, and elvis would move the
  74. cursor there.
  75.  
  76. The '=' key is a new operator which filters the affected text through an
  77. external program.  It is similar to the '!' command, except that '='
  78. uses a predefined command instead of asking you each time.  The default
  79. program is "fmt", and you can change it via ":set ep=foo".  A version of
  80. "fmt" is included.  (In case you didn't know: fmt performs simple paragraph
  81. reformatting and word wrap.)
  82.  
  83. There is a new ":color" command.  Its usage should be fairly intuitive.
  84. Try ":color light cyan on blue" first, and then ":color" with no arguments.
  85.  
  86. There are several new :set options.  Most of them are SysV compatible.
  87. One nice extension is ":set ruler", which causes the row and column
  88. number to be continuously displayed on the bottom line of the screen.
  89.  
  90. The ctags command has been modified to work better with "new style"
  91. function definitions.  Also, it has been extended to allow typedefs and
  92. static (local) definitions to be included.
  93.  
  94. The ref command has also been improved.  Also, it has been extended to
  95. work well with the "static tags" option of the new ctags program.  You
  96. are no longer forced to have a separate "refs" file (although you can if
  97. you want) because ref now reads the "tags" file and then looks up the
  98. function header.  Elvis can be configured to call the "ref" program to
  99. perform tag lookup, so elvis can benefit from the more sophisticated
  100. lookup that "ref" offers.
  101.  
  102. Regular expressions can now handle \{m\} and \{m,n\} notation.  The
  103. \{m\} operator means "the preceding single-character expression must be
  104. repeated exactly m times."  The \{m,n\} notation means "the preceding
  105. single-character expression must be repeated at least m times, but no
  106. more than n times."  If m is missing, it defaults to 0.  If n is
  107. missing, it defaults to infinity.  So "^-\{80\}$" matches a line of
  108. exactly 80 hyphens, and "[A-Za-z]\{10,\}" matches any word that has 10
  109. or more characters.
  110.  
  111. The ttyread() function has been modified.  It is now passed a "timeout"
  112. argument.  This argument should be 0 to never timeout, or the amount of
  113. time to allow for a keystroke, expressed in tenths of a second.  For
  114. SysV UNIX, this is implemented via VMIN/VTIME.  For BSD, it uses
  115. select().  For other UNIX flavors, it uses the old SIGALRM trick and has
  116. poorer time resolution.  All three UNIX versions are in the file
  117. "unix.c".
  118.  
  119. File preservation and recovery is now handled in a more vi-like way.  A
  120. program called elvprsv extracts the text from a temp file and stores it
  121. in the /usr/preserve directory.  A separate program called "elvrec" is
  122. used to recover the file -- move it from /usr/preserve to the current
  123. directory.  Sadly, this makes installation more complex.
  124.  
  125. The tinytcap.c file has been completely rewritten, to make it smaller and
  126. more maintainable.  More terminal descriptions are included in it now.
  127.  
  128. The ":set remap" option is now supported.  Many of the more complex macro
  129. packages depend on this option.  Also, support for maps and abbreviations
  130. has been merged into a single, more cohesive package.  Abbreviations work
  131. a little better now than they did before.
  132.