home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / wwed034b.zip / fte-0.34 / fte.ipf < prev    next >
Text File  |  1995-10-15  |  51KB  |  1,395 lines

  1. .*! html2ipf 0.2
  2.  
  3. :userdoc.:title.fte Manual
  4.  
  5. :h1.About 
  6. :i1 id=about.About
  7.  
  8. :lines align=center.
  9. fte
  10. .br
  11. Version :hp2.0.32b:ehp2.
  12. .br
  13. (c) Copyright 1995 Marko Macek
  14. .br
  15. :elines.
  16. :p.
  17. :hp1.fte:ehp1. is an OS/2 text mode editor, with a lot of features&colon.
  18. :ul compact.
  19.  :li.Powerful Color Syntax Highlighting for&colon.
  20.   :ul compact.
  21.    :li.C/C++
  22.    :li.REXX
  23.    :li.HTML
  24.    :li.IPF
  25.    :li.Perl
  26.    :li.Ada
  27.    :li.Pascal
  28.    :li.Java
  29.    :li.and various other files...
  30.   :eul.
  31.  :li.Smart Indentation for C/C++ and REXX
  32.  :li.Multiple files/windows
  33.  :li.File limited only by virtual memory
  34.  :li.Configurable keyboard/menus/colors
  35.  :li.Undo/Redo of any number of commands
  36.  :li.Stream/Line/Column blocks
  37.  :li.Ability to edit binary files
  38.  :li.Regular expression search and replace
  39.  :li.Background compilation and compiler error parsing support
  40.  :li.Mouse support
  41.  :li.Automatic word wrap.
  42.  :li.Incremental search.
  43.  :li.Folding
  44. :eul.
  45. :p.
  46. :lines align=center.
  47. The latest version can be always downloaded from&colon.
  48. .br
  49. :hp2.http&colon.//ixtas.fer.uni-lj.si/~markom/fte:ehp2.
  50. .br
  51. :p.
  52. Please send comments/suggestions/bug reports to&colon.
  53. .br
  54. :hp2.Marko.Macek@snet.fer.uni-lj.si:ehp2.
  55. .br
  56. or
  57. .br
  58. :hp2.mark@hermes.si:ehp2.
  59. .br
  60. :elines.
  61.  
  62.  
  63. .br
  64. :h1.Configuration 
  65. :i1 id=config.Configuration
  66.  
  67. :p.
  68. This section covers installation and configuration of editor.
  69.  
  70. .br
  71. :h2.Installation 
  72. :i1 id=install.Installation
  73.  
  74. :p.
  75. The following files are included in the archive&colon.
  76. :dl compact tsize=8 break=all.
  77. :dt.:hp2.README:ehp2.
  78. :dd.Release notes, read first
  79. :dt.:hp2.fte.exe:ehp2.
  80. :dd.Main executable (:hp2.REQUIRED:ehp2.)
  81. :dt.:hp2.fte.cfg:ehp2.
  82. :dd.Main configuration file
  83. :dt.:hp2.fte.inf:ehp2.
  84. :dd.This file.
  85. :dt.:hp2.config\*.fte:ehp2.
  86. :dt.Configuration files
  87. :dt.:hp2.clipserv.exe:ehp2.
  88. :dd.Clipboard server (required for PM clipboard support).
  89. :dt.:hp2.cliputil.exe:ehp2.
  90. :dd.Utility to manage clipboard from command line.
  91. :dt.:hp2.file_id.diz:ehp2.
  92. :dd.Program description for BBS upload.
  93. :edl.
  94. :p.
  95. To install, copy :hp1.FTE.EXE:ehp1., :hp1.CLIPSERV.EXE:ehp1., :hp1.CLIPUTIL.EXE:ehp1., 
  96. :hp1.FTE.CFG:ehp1., :hp1.FTE.INF:ehp1. into one directory and and :hp1.*.FTE:ehp1. files
  97. into the other. Then change :hp1.FTE.CFG:ehp1. to point to the :hp1.MAIN.FTE:ehp1. 
  98. file. Then, make sure that :hp1.PATH:ehp1. environment variable points to 
  99. the directory containing the executable.
  100.  
  101. :hp2.fte.exe:ehp2.
  102.  
  103. .br
  104. :h2.Command line options 
  105. :i1 id=cmdarg.Command line options
  106.  
  107. :p.
  108. The command syntax is&colon.
  109. :p.
  110. :hp2.fte [[options] [files] ...]:ehp2.
  111. :p.
  112. Options&colon.
  113. :dl compact tsize=8 break=all.
  114. :dt.:hp2.-!:ehp2.
  115. :dd.Ignore any external configuration file.
  116. :dt.:hp2.-c<file>:ehp2.
  117. :dd.Use specified configuration file.
  118. :dt.:hp2.-#<line>[,<column>]:ehp2.
  119. :dd.Go to line (and column) in next file on command line
  120. :dt.:hp2.-m<MODE>:ehp2.
  121. :dd.Set mode for next files to <MODE>
  122. :dt.:hp2.-m:ehp2.
  123. :dd.Reset to default mode
  124. :dt.:hp2.--:ehp2.
  125. :dd.The rest of the arguments are not options
  126. :dt.:hp2.-+:ehp2.
  127. :dd.The next argument is not an option even if starting with a '-'.
  128. :edl.
  129. :p.
  130. Examples&colon.
  131. :dl compact tsize=8 break=all.
  132. :dt.:hp2.fte -mBIN fte.exe:ehp2.
  133. :dd.load fte.exe in BIN mode
  134. :dt.:hp2.fte -#100,30 win.c:ehp2.
  135. :dd.go to (100,30) in win.c
  136. :dt.:hp2.fte window.cpp:ehp2.
  137. :dd.load file window.cpp
  138. :dt.:hp2.fte -mBIN fte.exe -m fte.cpp:ehp2.
  139. :dd.load fte.exe in binary mode, window.cpp in default mode (C/C++)
  140. :dt.:hp2.fte -mBIN -+ -bla-:ehp2.
  141. :dd.load file -bla- in BIN mode
  142. :dt.:hp2.fte -- -1 -2 -3 -4 -5 -6:ehp2.
  143. :dd..load files -1, -2, -3, -4, -5, -6
  144. :edl.
  145.  
  146. .br
  147. :h2.Configuration file 
  148. :i1 id=cfgfile.Configuration file
  149.  
  150. :p.
  151. If the command line option :hp2.-!:ehp2. is used, editor will not attemp to load
  152. a configuration file and will use default settings built into the
  153. editor executable.
  154. :p.
  155. All configuration is done in :hp2.fte.cfg:ehp2.. file which must reside
  156. in the same directory as the :hp2.fte.Exe:ehp2. executable. Most of
  157. the settings in configuration file are :hp2.CASE SENSITIVE:ehp2..
  158. :hp2.'#':ehp2.. is used to start a comment to the end of line.
  159.  
  160. .br
  161. :h2.Global Settings 
  162. :i1 id=global.Global Settings
  163.  
  164.  
  165. The following settings can be used in the :hp2.GLOBAL:ehp2. section of
  166. the configuration file.
  167. :dl compact tsize=8 break=all.
  168. :dt.:hp2.ScreenSizeX:ehp2.
  169. :dd.Number of columns visible on screen or window
  170. :dt.:hp2.ScreenSizeY:ehp2.
  171. :dd.Number of lines visible on screen or window
  172. :dt.:hp2.CursorInsertStart:ehp2.
  173. :dd.Starting percentage of cursor size (from top) when in insert mode.
  174. :dt.:hp2.CursorInsertEnd:ehp2.
  175. :dd.Ending percentage of cursor size when in insert mode.
  176. :dt.:hp2.CursorOverStart:ehp2.
  177. :dd.Starting percentage of cursor size when in overstrike mode
  178. :dt.:hp2.CursorOverEnd:ehp2.
  179. :dd.Ending percentage of cursor size when in overstrike mode.
  180. :dt.:hp2.SysClipboard:ehp2.
  181. :dd.When set to 1, editor will use external (PM) clipboard instead of internal one.
  182. :dt.:hp2.SelectPathname:ehp2.
  183. :dd.If set to 1, pathname will be selected by default when prompting for a file.
  184. :dt.:hp2.LoadAfterQuit:ehp2.
  185. :dd.If set to 1, editor will prompt for another file when all are closed.
  186. :dt.:hp2.ShowMenuBar:ehp2.
  187. :dd.If set to 1, main menu bar will be visible by default.
  188. :dt.:hp2.ShowScrollBar:ehp2.
  189. :dd.If set to 1, scroll bar will be visible by default.
  190. :dt.:hp2.ScrollBarWidth:ehp2.
  191. :dd.Scroll bar width in characters
  192. :dt.:hp2.DefaultModeName:ehp2.
  193. :dd.Default mode name for loading files. If not set or invalid, first mode 
  194. in the configuration file will be used instead.
  195. :dt.:hp2.CompletionFilter:ehp2.
  196. :dd.Files matching this regexp are ignored when doing filename completion.
  197. :dt.:hp2.WSStyleSearch:ehp2.
  198. :dd.If set to 1, editor will use WordStar style prompts with separate prompts 
  199. for search, replace string and options instead of the default search/replace/options
  200. style.
  201. :dt.:hp2.CompileRx:ehp2.
  202. :dd.Defines regexp and subpatterns to match when searching for errors/warnings
  203. in compilation output. First number is a number of the subpattern that matches 
  204. filename. The second must match the line number, the third parameter is 
  205. the regular expression to match to each line of the compiler output.
  206. :dt.:hp2.C_:ehp2.:hp1.*:ehp1.
  207. :dd.Define the C mode smart indentation parameters
  208. :dt.:hp2.REXX_Indent:ehp2.
  209. :dd.Defines the REXX basic indentation level
  210. :edl.
  211.  
  212.  
  213. .br
  214. :h2.Editing Modes 
  215. :i1 id=editmode.Editing Modes
  216.  
  217. :p.
  218. fte allows each file extension to have a different editing mode. Mode
  219. is a collection of editor settings such as keybindings, tab settings,
  220. autoindent settings, syntax highlighting,...
  221. :p.
  222. Syntax of :hp2.mode:ehp2. command is
  223. :p.
  224. :xmp.
  225. mode NAME { mode settings }
  226. mode NAME&colon. PARENT { mode settings }
  227. mode NAME&colon. PARENT, :hp1."filename regexp":ehp1. { mode settings }
  228. mode NAME&colon. PARENT, :hp1."filename regexp":ehp1., :hp1."first line regexp":ehp1. { mode settings }
  229. :exmp.
  230. :p.
  231. Mode with name :hp1.NAME:ehp1.inherits settings from mode :hp1.PARENT:ehp1. if 
  232. parent mode is specified at mode declaration.
  233. :p.
  234. When editor is searching for a mode to use for a file it will first check 
  235. if the mode has been overriden by a :hp2.FileLoadInMode:ehp2. command or a
  236. command line option (:hp2.-m:ehp2.).
  237. :p.
  238. Then it will check if the file name matches any of the :hp1."filename regexps":ehp1.
  239. listed with mode declarations. 
  240. :p.
  241. If the mode has still not been found, it will read the first line
  242. (max 80 chars) of the file, and attempt to match the :hp1."first line regexp":ehp1.
  243. with the first line. 
  244. :p.
  245. If this fails, editor will use mode specified by :hp2.DefaultModeName:ehp2. 
  246. setting to load a file. If that mode does not exist, first mode defined
  247. in the configuration file will be used.
  248.  
  249.  
  250. .br
  251. :h2.Mode Settings 
  252. :i1 id=modesetup.Mode Settings
  253.  
  254. :p.
  255. The following settings can be specified for each mode&colon.
  256. :dl compact tsize=8 break=all.
  257. :dt.:hp2.ExpandTabs:ehp2. {0,1}
  258. :dd.Should be set to 1 if tabs are to be expanded when displayed.
  259. :dt.:hp2.TabSize:ehp2. {1-32}
  260. :dd.Tab size when tabs are shown expanded on display.
  261. :dt.:hp2.AutoIndent:ehp2. {0,1}
  262. :dd.Should be set to 1 if autoindent is to be used.
  263. :dt.:hp2.Insert:ehp2. {0,1}
  264. :dd.If set to :hp2.1:ehp2., Insert mode is active by default. 
  265. If set to :hp2.0:ehp2., Overwrite mode is activated.
  266. :dt.:hp2.StripChar:ehp2. {ASCII code}
  267. :dd.This characted will be stripped if at the end of line when the 
  268. file is being loaded. If it is set to :hp2.-1:ehp2., no characted will 
  269. be stripped.
  270. :dt.:hp2.LineChar:ehp2. {ASCII code}
  271. :dd.This character is used as a line separator when loading a file.
  272. If set to :hp2.-1:ehp2., there is no line separator. (:hp2.WARNING&colon. File will
  273. be loaded as one line if LineChar is set to -1:ehp2.). 
  274. :dt.:hp2.AddCR:ehp2. {0,1}
  275. :dd.If set to :hp2.1:ehp2., CR (13, \r) character will be added to end of line when saving.
  276. :dt.:hp2.AddLF:ehp2. {0,1}
  277. :dd.If set to :hp2.1:ehp2., LF (10, \n) characted will be added to end if line when saving.
  278. :dt.:hp2.ForceNewLine:ehp2. {0,1}
  279. :dd.Normally, when saving, the last line is saved without any CR/LF characters. This setting will override that behaviour.
  280. :dt.:hp2.Hilit:ehp2. {0,1}
  281. :dd.If set to :hp2.1:ehp2., syntax highliting will be active
  282. :dt.:hp2.ShowTab:ehp2. {0,1}
  283. :dd.If set to :hp2.1:ehp2., tabs will be visible as circles (EPM-like).
  284. :dt.:hp2.IndentMode:ehp2. {PLAIN,C,REXX}
  285. :dd.Activates the specified smart indent mode. (PLAIN is not really smart &colon.))
  286. :dt.:hp2.HilitMode:ehp2. {PLAIN,C,HTML,MAKE,REXX,DIFF,IPF,PERL,MERGE,Ada}
  287. :dd.Activates the specified coloring mode. :hp2.PLAIN:ehp2. specifies no coloring.
  288. :dt.:hp2.UndoLimit:ehp2. {Number}
  289. :dd.Limit undo to this many recent commands (-1 = unlimited)
  290. :dt.:hp2.KeepBackups:ehp2. {0,1}
  291. :dd.If set to :hp2.0:ehp2., backup files will be deleted after a successful save operation.
  292. :dt.:hp2.MatchCase:ehp2. {0,1}
  293. :dd.If set to :hp2.0:ehp2., searches will be case insensitive. This
  294. can be toggled via :hp2.ToggleMatchCase:ehp2.(:hp2.C-O_C-C:ehp2.) command when editor is running.
  295. :dt.:hp2.BackSpKillTab:ehp2. {0,1}
  296. :dd.If set to 1, :hp2.BackSpace:ehp2. will kill entire tabs instead of converting them to spaces.
  297. :dt.:hp2.DeleteKillTab:ehp2. {0,1}
  298. :dd.If set to 1, :hp2.Delete:ehp2. will kill entire tabs instead of converting them to spaces.
  299. :dt.:hp2.BackSpUnindents:ehp2. {0,1}
  300. :dd.If set to 1, :hp2.BackSpace:ehp2. will inindent to previous indentation level if issued on beginning of line.
  301. :dt.:hp2.SpaceTabs:ehp2. {0,1}
  302. :dd.If set to 1, :hp2.InsertTab:ehp2. command will insert spaces instead of tabs.
  303. :dt.:hp2.IndentWithTabs:ehp2. {0,1}
  304. :dd.If set to 1, indentation will be done using tabs instead of spaces.
  305. :dt.:hp2.WordWrap:ehp2. {0,1,2}
  306. :dd.If set to 1, editor wrap current line when right margin is reached. If set to 2, editor will wrap current paragraph continously.
  307. :dt.:hp2.LeftMargin:ehp2. {1-xx}
  308. :dd.Left margin for word wrap.
  309. :dt.:hp2.RightMargin:ehp2. {1-xx}
  310. :dd.Right margin for word wrap.
  311. :dt.:hp2.Trim:ehp2. {0,1}
  312. :dd.If set to 1, spaces on the end of line will be trimmed when editing.
  313. :dt.:hp2.ShowMarkers:ehp2. {0,1}
  314. :dd.If set to 1, end of line and end of file markers will be shown.
  315. :dt.:hp2.CursorTroughTabs:ehp2. {0,1}
  316. :dd.If set to 1, editor will allow cursor position inside tabs.
  317. :dt.:hp2.DefFindOpt:ehp2. 'options'
  318. :dd.Default search options for :hp2.Find:ehp2. command.
  319. :dt.:hp2.DefFindReplaceOpt:ehp2. 'options'
  320. :dd.Default search/replace options for :hp2.FindReplace:ehp2. command.
  321. :dt.:hp2.MainMenu:ehp2. "menu"
  322. :dd.Main menu displayed when editing in this mode.
  323. :dt.:hp2.LocalMenu:ehp2. "menu"
  324. :dd.Local menu used when editing in this mode.
  325. :dt.:hp2.SaveFolds:ehp2. {0,1,2}
  326. :dd.If 0, folds are not saved. If 1, folds are saved at BOL, if 2 folds are saved at EOL.
  327. :dt.:hp2.CommentStart:ehp2. "comment-start-string"
  328. :dd.String that starts comments (for saving folds)
  329. :dt.:hp2.CommentEnd:ehp2. "comment-ent-string"
  330. :dd.String that ends comments
  331. :edl.
  332.  
  333. .br
  334. :h3.Loading files in various formats 
  335. :i1 id=loading.Loading files in various formats
  336.  
  337. :p.
  338. Here are settings for loading files in various formats&colon.
  339. :p.
  340. :dl compact tsize=8 break=all.
  341. :dt.DOS/Win/OS2/NT text files (CR/LF delimited)&colon.
  342. :dd.
  343. :xmp.
  344.           StripChar      13
  345.           LineChar       10
  346.           AddCR          1
  347.           AddLF          1
  348. :exmp.
  349.  
  350. .br
  351. :dt.UNIX text files (LF delimited)&colon.
  352. :dd.
  353. :xmp.
  354.           StripChar      -1
  355.           LineChar       10
  356.           AddCR          0
  357.           AddLF          1
  358. :exmp.
  359. :dt.MAC text files (CR delimited)&colon.
  360. :dd.
  361. :xmp.
  362.           StripChar      -1
  363.           LineChar       13
  364.           AddCR          1
  365.           AddLF          0
  366. :exmp.
  367. :dt.Binary files (fixed record length)&colon.
  368. :dd.
  369. :xmp.
  370.           StripChar      -1
  371.           LineChar       -1
  372.           AddCR          0
  373.           AddLF          0
  374.           LoadMargin     64
  375.           ForceNewLine   0
  376. :exmp.          
  377. :edl.
  378.  
  379. .br
  380. :h2.Mode Keyboard Mappings 
  381. :i1 id=modekeys.Mode Keyboard Mappings
  382.  
  383. :p.
  384. Keybindings are inherited from parent modes unless overriden.
  385. :p.
  386. Here are some examples of key specifiactions&colon.
  387. :dl compact tsize=8 break=all.
  388. :dt.[A]:dd.Uppercase a
  389. :dt.[a]:dd.Lowercase a 
  390. :dt.[;]:dd.Semicolon
  391. :dt.[A-A]:dd.Alt+A
  392. :dt.[C-B]:dd.Ctrl+B
  393. :dt.[A-C-F1]:dd.Alt+Ctrl+F1
  394. :dt.[A-C-S-F1]:dd.Alt+Ctrl+Shift+F1
  395. :dt.[A-Space]:dd.Alt+Space
  396. :dt.[C-K_C-B]:dd.Ctrl+K and then Ctrl+B (two keys)
  397. :dt.[C-A_C-B_C-C]:dd.Ctrl+A Ctrl+B Ctrl+C must be pressed in sequence.
  398. :dt.[G--]:dd.Gray -
  399. :dt.[G-+]:dd.Gray +
  400. :dt.[C-\\]:dd.Ctrl+Backslash
  401. :dt.[C-\[]:dd.Ctrl+[
  402. :edl.
  403. :p.The following special keys are available (case sensitive)&colon.
  404. :p.:hp2.F1-F12 Home End PgUp PgDn Insert Delete Up Down Left Right 
  405. Enter Esc BackSp Space Tab:ehp2.
  406. :p.Keys are bound using the :hp2.key:ehp2. command&colon.
  407. :p.:hp2.key:ehp2. :hp2.[keyspec]:ehp2. { :hp1.editor commands:ehp1. }
  408. :p.ASCII characters >= 32 are bound to SelfInsert by default.
  409. :p.See fte.Cfg for examples and default configuration.
  410.  
  411. .br
  412. :h2.Colors 
  413. :i1 id=colors.Colors
  414.  
  415. Colors are configured in COLOR.FTE file.
  416. :p.
  417. Syntax for color settings is&colon.
  418. :p.:hp2.color:ehp2. { { 'name', 'value' } ... } 
  419. :p.Value is the PC character attribute first char is background color, the second is foreground color.
  420. :p.Colors are as follows&colon.
  421. :xmp.
  422.         0        Black
  423.         1        Dark Blue
  424.         2        Dark Green 
  425.         3        Dark Cyan
  426.         4        Dark Red
  427.         5        Dark Magenta
  428.         6        Orange
  429.         7        Pale Gray
  430.         8        Dark Gray
  431.         9        Blue
  432.         A        Green
  433.         B        Cyan
  434.         C        Red
  435.         D        Magenta
  436.         E        Yellow
  437.         F        White
  438. :exmp.
  439.  
  440. .br
  441. :h1.Status Line 
  442. :i1 id=status.Status Line
  443.  
  444. :p.Status line displays the following status information&colon.
  445. :p.:hp2.position flags modename [curchar] mod? filename:ehp2.
  446. :p.:hp2.position:ehp2. = visible_line, actual_line&colon. column, character_number
  447. :p.:hp2.flags:ehp2.
  448. :dl compact tsize=8 break=all.
  449. :dt.I:dd.Insert
  450. :dt.A:dd.Autoindent
  451. :dt.T:dd.Tabs Expanded (only on display, not file)
  452. :dt.C:dd.Matches are case sensitive
  453. :dt.wW:dd.Automatic word wrap active (w = line, W = paragraph).
  454. :dt.U:dd.Undo/Redo active
  455. :dt.E:dd.Trim active (spaces at EOL trimmed)
  456. :dt.SLC:dd.Stream, Line, Column block-mode
  457. :dt.X:dd.AutoExtend block-mode
  458. :edl.
  459. :p.:hp2.mode:ehp2.      = Mode name as specified in configuration file
  460. :p.:hp2.curchar:ehp2.   = Dec,Hex ASCII code of current character
  461. :p.:hp2.mod?:ehp2.      = :hp2.*:ehp2. if file was modified, :hp2.%:ehp2. if file is read-only
  462.  
  463.  
  464. .br
  465. :h1.Editor Commands 
  466. :i1 id=editcmds.Editor Commands
  467.  
  468. :p.These commands can be bound to keys in configuration file&colon.
  469.  
  470. .br
  471. :h2.Cursor Movement 
  472. :i1 id=cmdcursor.Cursor Movement
  473.  
  474. :dl compact tsize=8 break=all.
  475. :dt.:hp2.MoveLeft:ehp2.:dd.Move cursor left one character
  476. :dt.:hp2.MoveRight:ehp2.:dd.Move cursor right one character
  477. :dt.:hp2.MoveUp:ehp2.:dd.Move cursor up one line
  478. :dt.:hp2.MoveDown:ehp2.:dd.Move cursor down one line
  479. :dt.:hp2.MovePrev:ehp2.:dd.Move cursor to previous character
  480. :dt.:hp2.MoveNext:ehp2.:dd.Move cursor to next character
  481. :dt.:hp2.MoveWordLeft:ehp2.:dd.Move cursor one word left
  482. :dt.:hp2.MoveWordRight:ehp2.:dd.Move cursor one word right
  483. :dt.:hp2.MoveWordPrev:ehp2.:dd.Move cursor to start of previous word
  484. :dt.:hp2.MoveWordNext:ehp2.:dd.Move cursor to start of next word
  485. :dt.:hp2.MoveLineStart:ehp2.:dd.Move cursor to beginning of line
  486. :dt.:hp2.MoveLineEnd:ehp2.:dd.Move cursor to end of line
  487. :dt.:hp2.MovePageUp:ehp2.:dd.Move cursor to previous page
  488. :dt.:hp2.MovePageDown:ehp2.:dd.Move cursor to next page
  489. :dt.:hp2.MovePageLeft:ehp2.:dd.Move cursor one page left
  490. :dt.:hp2.MovePageRight:ehp2.:dd.Move cursor one page right
  491. :dt.:hp2.MovePageStart:ehp2.:dd.Move cursor to top of page
  492. :dt.:hp2.MovePageEnd:ehp2.:dd.Move cursor top bottom of page
  493. :dt.:hp2.MoveFileStart:ehp2.:dd.Move cursor to start of buffer
  494. :dt.:hp2.MoveFileEnd:ehp2.:dd.Move cursor to end of buffer
  495. :dt.:hp2.MoveBlockStart:ehp2.:dd.Move cursor to beginning of block
  496. :dt.:hp2.MoveBlockEnd:ehp2.:dd.Move cursor to end of block
  497. :dt.:hp2.ScrollLeft:ehp2.:dd.Scroll screen left 8 characters
  498. :dt.:hp2.ScrollRight:ehp2.:dd.Scroll screen right 8 characters
  499. :dt.:hp2.ScrollDown:ehp2.:dd.Scroll screen down 1 line
  500. :dt.:hp2.ScrollUp:ehp2.:dd.Scroll screen up 1 line
  501. :dt.:hp2.MoveFirstNonWhite:ehp2.:dd.Move to first non whitespace character on line
  502. :dt.:hp2.MoveLastNonWhite:ehp2.:dd.Move after last non whitespace character on line
  503. :dt.:hp2.MovePrevEqualIndent:ehp2.:dd.Move to previous line with indentation equal to current.
  504. :dt.:hp2.MoveNextEqualIndent:ehp2.:dd.Move to next line with indentation equal to current.
  505. :dt.:hp2.MovePrevTab:ehp2.:dd.Move cursor to previous tab stop.
  506. :dt.:hp2.MoveNextTab:ehp2.:dd.Move cursor to next tab stop.
  507. :dt.:hp2.MovePrevPos:ehp2.:dd.Move to previous position
  508. :dt.:hp2.SavePos:ehp2.:dd.Save current position
  509. :dt.:hp2.MoveSavedPos:ehp2.:dd.Restore saved position
  510. :dt.:hp2.MoveSavedPosCol:ehp2.:dd.Restore saved position column
  511. :dt.:hp2.MoveSavedPosRow:ehp2.:dd.Restore saved position row
  512. :dt.:hp2.MoveLineTop:ehp2.:dd.Move current line to top of window
  513. :dt.:hp2.MoveLineCenter:ehp2.:dd.Move current line to center of window
  514. :dt.:hp2.MoveLineBottom:ehp2.:dd.Move current line to bottom of window
  515. :edl.
  516.  
  517. .br
  518. :h2.Text deleting 
  519. :i1 id=cmddelete.Text deleting
  520.  
  521. :dl compact tsize=8 break=all.
  522. :dt.:hp2.KillLine:ehp2.:dd.Delete current line
  523. :dt.:hp2.KillChar:ehp2.:dd.Delete character under cursor
  524. :dt.:hp2.KillCharPrev:ehp2.:dd.Delete character before cursor
  525. :dt.:hp2.KillWord:ehp2.:dd.Delete next word
  526. :dt.:hp2.KillWordPrev:ehp2.:dd.Delete previous word
  527. :dt.:hp2.KillToLineStart:ehp2.:dd.Delete text to line start
  528. :dt.:hp2.KillToLineEnd:ehp2.:dd.Delete text to line end
  529. :dt.:hp2.KillBlock:ehp2.:dd.Kill text in block
  530. :dt.:hp2.BackSpace:ehp2.:dd.Delete character before cursor (configurable)
  531. :dt.:hp2.Delete:ehp2.:dd.Delete character under cursor (configurable)
  532. :edl.
  533.  
  534. .br
  535. :h2.Line commands 
  536. :i1 id=cmdsline.Line commands
  537.  
  538. :dl compact tsize=8 break=all.
  539. :dt.:hp2.LineInsert:ehp2.:dd.Insert empty line before current line
  540. :dt.:hp2.LineAdd:ehp2.:dd.Add line after current
  541. :dt.:hp2.LineSplit:ehp2.:dd.Split line at current cursor position
  542. :dt.:hp2.LineJoin:ehp2.:dd.Join line with next one
  543. :dt.:hp2.LineNew:ehp2.:dd.Add new line after current one, move to next line and autoindent
  544. :dt.:hp2.LineIndent:ehp2.:dd.Reindent current line
  545. :dt.:hp2.LineTrim:ehp2.:dd.Trim spaces at the end of current line
  546. :edl.
  547.  
  548. .br
  549. :h2.Text insertion 
  550. :i1 id=cmdinsert.Text insertion
  551.  
  552. :dl compact tsize=8 break=all.
  553. :dt.:hp2.InsertTab:ehp2.:dd.Insert Tab character
  554. :dt.:hp2.SelfInsert:ehp2.:dd.Insert character defined by last key
  555. :dt.:hp2.WrapPara:ehp2.:dd.Word wrap paragraph (to next blank line).
  556. :dt.:hp2.LineDuplicate:ehp2.:dd.Duplicate current line.
  557. :dt.:hp2.InsPrevLineChar:ehp2.:dd.Insert character above current character.
  558. :dt.:hp2.InsPrevLineToEol:ehp2.:dd.Insert previous line from current char to eol.
  559. :dt.:hp2.CompleteWord:ehp2.:dd.Complete word to previous word starting with text before cursor.
  560. :edl.
  561.  
  562. .br
  563. :h2.Blocks 
  564. :i1 id=cmdblock.Blocks
  565.  
  566. :dl compact tsize=8 break=all.
  567. :dt.:hp2.BlockBegin:ehp2.:dd.Set block beginning to current position
  568. :dt.:hp2.BlockEnd:ehp2.:dd.Set block end to current position
  569. :dt.:hp2.BlockUnmark:ehp2.:dd.Unmark selected block
  570. :dt.:hp2.BlockCut:ehp2.:dd.Cut selected block to clipboard
  571. :dt.:hp2.BlockCopy:ehp2.:dd.Copy selected block to clipboard
  572. :dt.:hp2.BlockPaste:ehp2.:dd.Paste clipboard to current position
  573. :dt.:hp2.BlockPasteStream:ehp2.:dd.Paste clipboard to current position as stream block.
  574. :dt.:hp2.BlockPasteLine:ehp2.:dd.Paste clipboard to current position as line block.
  575. :dt.:hp2.BlockPasteColumn:ehp2.:dd.Paste clipboard to current position as column block.
  576. :dt.:hp2.BlockKill:ehp2.:dd.Delete selected text
  577. :dt.:hp2.BlockIndent:ehp2.:dd.Indent block by 1 character
  578. :dt.:hp2.BlockUnindent:ehp2.:dd.Unindent block by 1 character
  579. :dt.:hp2.BlockMarkStream:ehp2.:dd.Begin/end marking stream block
  580. :dt.:hp2.BlockMarkLine:ehp2.:dd.Begin/end marking line block
  581. :dt.:hp2.BlockMarkColumn:ehp2.:dd.Begin/end marking column block
  582. :dt.:hp2.BlockExtendBegin:ehp2.:dd.Begin extending selected block
  583. :dt.:hp2.BlockExtendEnd:ehp2.:dd.End extending selected block
  584. :dt.:hp2.BlockReIndent:ehp2.:dd.Reindent entire block (C/REXX mode)
  585. :dt.:hp2.BlockRead:ehp2.:dd.Read block from file
  586. :dt.:hp2.BlockWrite:ehp2.:dd.Write marked block to file
  587. :edl.
  588.  
  589. .br
  590. :h2.File commands 
  591. :i1 id=cmdfile.File commands
  592.  
  593. :dl compact tsize=8 break=all.
  594. :dt.:hp2.FileSave:ehp2.:dd.Save current file
  595. :dt.:hp2.FileSaveAll:ehp2.:dd.Save all loaded files
  596. :dt.:hp2.FileSaveAs:ehp2.:dd.Save current file under a new name
  597. :dt.:hp2.FileQuit:ehp2.:dd.Close current file
  598. :dt.:hp2.FileQuitAll:ehp2.:dd.Close all files
  599. :dt.:hp2.FileLoad:ehp2.:dd.Load a file
  600. :dt.:hp2.FileLoadInMode:ehp2.:dd.Load a file in a specified mode.
  601. :dt.:hp2.FileReload:ehp2.:dd.Reload current file
  602. :dt.:hp2.FileNext:ehp2.:dd.Select next file in buffer ring
  603. :dt.:hp2.FilePrev:ehp2.:dd.Select previous file in buffer ring
  604. :edl.
  605.  
  606. .br
  607. :h2.Window commands 
  608. :i1 id=cmdwin.Window commands
  609.  
  610. :dl compact tsize=8 break=all.
  611. :dt.:hp2.WinHSplit:ehp2.:dd.Split window horizontally
  612. :dt.:hp2.WinNext:ehp2.:dd.Activate next window
  613. :dt.:hp2.WinPrev:ehp2.:dd.Activate previous window
  614. :dt.:hp2.WinZoom:ehp2.:dd.Make current window the only one (close all others)
  615. :dt.:hp2.WinRefresh:ehp2.:dd.Repaint entire screen.
  616. :edl.
  617.  
  618. .br
  619. :h2.Undo/Redo 
  620. :i1 id=cmdundo.Undo/Redo
  621.  
  622. :dl compact tsize=8 break=all.
  623. :dt.:hp2.Undo:ehp2.:dd.Undo last operation
  624. :dt.:hp2.Redo:ehp2.:dd.Redo last undone operation
  625. :edl.
  626.  
  627. .br
  628. :h2.Case conversion 
  629. :i1 id=cmdcase.Case conversion
  630.  
  631. :dl compact tsize=8 break=all.
  632. :dt.:hp2.CharCaseUp:ehp2.:dd.Convert current character to uppercase
  633. :dt.:hp2.CharCaseDown:ehp2.:dd.Convert current character to lowercase
  634. :dt.:hp2.CharCaseToggle:ehp2.:dd.Toggle case of current characters
  635. :dt.:hp2.LineCaseUp:ehp2.:dd.Convert characters on current line to uppercase
  636. :dt.:hp2.LineCaseDown:ehp2.:dd.Convert characters on current line to lowercase
  637. :dt.:hp2.LineCaseToggle:ehp2.:dd.Toggle case of characters on current line
  638. :dt.:hp2.BlockCaseUp:ehp2.:dd.Convert characters in selected block to uppercase
  639. :dt.:hp2.BlockCaseDown:ehp2.:dd.Convert characters in selected block to lowercase
  640. :dt.:hp2.BlockCaseToggle:ehp2.:dd.Toggle case of characters in selected block
  641. :edl.
  642.  
  643. .br
  644. :h2.Searching 
  645. :i1 id=cmdfind.Searching
  646.  
  647. :dl compact tsize=8 break=all.
  648. :dt.:hp2.Find:ehp2.:dd.Search for text, w/options
  649. :dt.:hp2.FindReplace:ehp2.:dd.Search and replace text w/options. 
  650. :dt.:hp2.FindRepeat:ehp2.:dd.Repeat last search/replace operation
  651. :dt.:hp2.FindRepeatReverse:ehp2.:dd.Repeat last search/replace operation in opposite direction
  652. :dt.:hp2.FindRepeatOnce:ehp2.:dd.Repeat last search/replace operation only once.
  653. :dt.:hp2.MatchBracket:ehp2.:dd.Search for matching bracket
  654. :dt.:hp2.IncrementalSearch:ehp2.:dd.Search incrementally for text.
  655. :dt.:hp2.Search:ehp2.:dd.Search for text
  656. :dt.:hp2.SearchB:ehp2.:dd.Search for text backwards
  657. :dt.:hp2.SearchRx:ehp2.:dd.Search for regexp
  658. :dt.:hp2.SearchReplaceRx:ehp2.:dd.Search and replace using regexp
  659. :dt.:hp2.SearchAgain:ehp2.:dd.Search for text again
  660. :dt.:hp2.SearchAgainB:ehp2.:dd.Search for text again backwards
  661. :dt.:hp2.SearchReplace:ehp2.:dd.Search for text and replace
  662. :dt.:hp2.SearchReplaceB:ehp2.:dd.Search and replace backwards
  663. :edl.
  664.  
  665. .br
  666. :h2.Folding 
  667. :i1 id=cmdfold.Folding
  668.  
  669. :dl compact tsize=8 break=all.
  670. :dt.:hp2.FoldCreate:ehp2.:dd.Create fold
  671. :dt.:hp2.FoldCreateByRegexp:ehp2.:dd.Create folds at lines matching regexp
  672. :dt.:hp2.FoldDestroy:ehp2.:dd.Destroy fold at current line
  673. :dt.:hp2.FoldDestroyAll:ehp2.:dd.Destroy all folds in file
  674. :dt.:hp2.FoldOpen:ehp2.:dd.Open fold at current line
  675. :dt.:hp2.FoldOpenAll:ehp2.:dd.Open all folds in file
  676. :dt.:hp2.FoldOpenNested:ehp2.:dd.Open current fold and all nested folds
  677. :dt.:hp2.FoldClose:ehp2.:dd.Close current fold
  678. :dt.:hp2.FoldCloseAll:ehp2.:dd.Close all folds in file
  679. :dt.:hp2.FoldToggleOpenClose:ehp2.:dd.Toggle open/close fold.
  680. :dt.:hp2.FoldPromote:ehp2.:dd.Make fold a higher level fold
  681. :dt.:hp2.FoldDemote:ehp2.:dd.Make fold a lower level fold
  682. :edl.
  683.  
  684. .br
  685. :h2.Compile commands 
  686. :i1 id=cmdcompile.Compile commands
  687.  
  688. :dl compact tsize=8 break=all.
  689. :dt.:hp2.Compile:ehp2.:dd.Run compile command in background
  690. :dt.:hp2.CompileViewErrors:ehp2.:dd.View compiler output
  691. :dt.:hp2.CompilePrevError:ehp2.:dd.Jump to previous compiler error
  692. :dt.:hp2.CompileNextError:ehp2.:dd.Jump to next compiler error
  693. :edl.
  694.  
  695. .br
  696. :h2.Settings 
  697. :i1 id=cmdsets.Settings
  698.  
  699. :dl compact tsize=8 break=all.
  700. :dt.:hp2.ToggleAutoIndent:ehp2.:dd.Toggle automatic indentation
  701. :dt.:hp2.ToggleInsert:ehp2.:dd.Toggle insert/overwrite mode
  702. :dt.:hp2.ToggleExpandTabs:ehp2.:dd.Toggle tab expansion on display
  703. :dt.:hp2.ToggleShowTabs:ehp2.:dd.Toggle tab visibility (as circles).
  704. :dt.:hp2.ToggleUndo:ehp2.:dd.Toggle undo/redo information saving.
  705. :dt.:hp2.ToggleReadOnly:ehp2.:dd.Toggle read only file.
  706. :dt.:hp2.ToggleKeepBackups:ehp2.:dd.Toggle backup files.
  707. :dt.:hp2.ToggleMatchCase:ehp2.:dd.Toggle case sensitivity for searches
  708. :dt.:hp2.ToggleBackSpKillTab:ehp2.:dd.Enable/disable BackSp killing entire tabs.
  709. :dt.:hp2.ToggleDeleteKillTab:ehp2.:dd.Enable/disable Delete killing entire tabs.
  710. :dt.:hp2.ToggleSpaceTabs:ehp2.:dd.Toggle insertion of spaces instead of tabs on Tab key.
  711. :dt.:hp2.ToggleIndentWithTabs:ehp2.:dd.Toggle indentation with tabs.
  712. :dt.:hp2.ToggleBackSpUnindents:ehp2.:dd.Toggle unindentation on previous indent level on BackSp.
  713. :dt.:hp2.ToggleWordWrap:ehp2.:dd.Toggle automatic word wrap.
  714. :dt.:hp2.ToggleTrim:ehp2.:dd.Toggle trimming of spaces at end of line.
  715. :dt.:hp2.ToggleShowMarkers:ehp2.:dd.Toggle EOL/EOF marker visibility.
  716. :dt.:hp2.ToggleSysClipboard:ehp2.:dd.Toggle usage of system clipboard.
  717. :dt.:hp2.SetLeftMargin:ehp2.:dd.Set left margin to current cursor column.
  718. :dt.:hp2.SetRightMargin:ehp2.:dd.Set right margin to current cursor column.
  719. :dt.:hp2.ChangeTabSize:ehp2.:dd.Prompt for tab size.
  720. :dt.:hp2.ChangeCIndent:ehp2.:dd.Prompt for indentation level for CMode smart indentation.
  721. :dt.:hp2.ChangeCBraceOfs:ehp2.:dd.Change brace offset for CMode smart indentation.
  722. :dt.:hp2.ChangeREXXIndent:ehp2.:dd.Prompt for indentation level for REXX smart indentation
  723. :dt.:hp2.ChangeLeftMargin:ehp2.:dd.Prompt for left margin for word wrap.
  724. :dt.:hp2.ChangeRightMargin:ehp2.:dd.Prompt for right margin for word wrap.
  725. :edl.
  726.  
  727. .br
  728. :h2.Other 
  729. :i1 id=cmdother.Other
  730.  
  731. :dl compact tsize=8 break=all.
  732. :dt.:hp2.ExitEditor:ehp2.:dd.Close all files and exit editor
  733. :dt.:hp2.RunCommand:ehp2.:dd.Run command in foreground.
  734. :dt.:hp2.ViewBuffers:ehp2.:dd.View buffer list
  735. :dt.:hp2.ViewModeMap:ehp2.:dd.View keyboard mappings for current mode
  736. :dt.:hp2.ChangeMode:ehp2.:dd.Activate another mode
  737. :dt.:hp2.GetPMClip:ehp2.:dd.Copy PM clipboard to editor clipboard
  738. :dt.:hp2.PutPMClip:ehp2.:dd.Copy editor clipboard to PM clipboard
  739. :dt.:hp2.ShowEntryScreen:ehp2.:dd.Show saved shell screen.
  740. :dt.:hp2.SwitchTo:ehp2.:dd.Switch to buffer with a number.
  741. :dt.:hp2.ChangeKeys:ehp2.:dd.Change current keymap to keymap of another mode.
  742. :dt.:hp2.ChangeFlags:ehp2.:dd.Change current flags to flags of another mode.
  743. :dt.:hp2.ShowMenu:ehp2.:dd.Show and select from menu.
  744. :dt.:hp2.MainMenu:ehp2.:dd.Activate menu bar.
  745. :dt.:hp2.LocalMenu:ehp2.:dd.Activate local popup menu.
  746. :dt.:hp2.ASCIITable:ehp2.:dd.Show a popup ASCII table.
  747. :dt.:hp2.PlaceBookmark:ehp2.:dd.Place a named bookmark at current buffer position
  748. :dt.:hp2.GotoBookmark:ehp2.:dd.Goto a named bookmark in current buffer
  749. :dt.:hp2.RemoveBookmark:ehp2.:dd.Remove a named bookmark from current buffer
  750. :edl.
  751.  
  752.  
  753. .br
  754. :h1.Regular Expressions 
  755. :i1 id=regexp.Regular Expressions
  756.  
  757. :p.
  758. Regular expressions are a way to specify text patterns when searching for
  759. a text in a buffer. Regular expressions consist of normal characters
  760. and special operator characters with a special meanings. Operators
  761. allow you to anchor matches, match classes of characters, match given
  762. pattern several times or match alternate patterns. Operators can be
  763. also used to group patterns.
  764. :p.
  765. :hp2.Search Operators:ehp2. 
  766. :dl compact tsize=8 break=all.
  767.  :dt.:hp2.\:ehp2.
  768.  :dd.Quotes next character. Character will lose it's special meaning. Can also be used to match special characters.
  769.  :dt.:hp2.\n:ehp2.
  770.  :dd.Matches a 0x0A (LF) character.
  771.  :dt.:hp2.\r:ehp2.
  772.  :dd.Matches a 0x0D (CR) character.
  773.  :dt.:hp2.\t:ehp2.
  774.  :dd.Matches a 0x09 (TAB) character.
  775.  :dt.:hp2.\e:ehp2.
  776.  :dd.Matches an escape character (0x1B)
  777.  :dt.:hp2.\s:ehp2.
  778.  :dd.Matches whitespace (CR, LF, TAB, SPACE) characters.
  779.  :dt.:hp2.\S:ehp2.
  780.  :dd.Matches non-whitespace (the reverse of \s)
  781.  :dt.:hp2.\w:ehp2.
  782.  :dd.Matches word character [a-zA-Z0-9]
  783.  :dt.:hp2.\W:ehp2.
  784.  :dd.Matches non-word character
  785.  :dt.:hp2.\d:ehp2.
  786.  :dd.Matches a digit [0-9].
  787.  :dt.:hp2.\D:ehp2.
  788.  :dd.Matches a non-digit.
  789.  :dt.:hp2.\U:ehp2.
  790.  :dd.Matches uppercase characters (A-Z)
  791.  :dt.:hp2.\L:ehp2.
  792.  :dd.Matches lowercase characters (a-z)
  793.  :dt.:hp2.\x##:ehp2.
  794.  :dd.Matches specified hex value (\x0A, \x0D, \x09, etc.)
  795.  :dt.:hp2.\o###:ehp2.
  796.  :dd.Matches specified octal value (\o000, \o015, etc.)
  797.  :dt.:hp2.\N###:ehp2.
  798.  :dd.Matches specified decimal value (\N000, \N013, \N009, etc.)
  799.  :dt.:hp2.\C:ehp2.
  800.  :dd.Starts case sensitive matching.
  801.  :dt.:hp2.\c:ehp2.
  802.  :dd.Starts case insensitive matching.
  803.  :dt.:hp2.^:ehp2.
  804.  :dd.Match a beginning of line.
  805.  :dt.:hp2.$:ehp2.
  806.  :dd.Match an end of line.
  807.  :dt.:hp2..:ehp2.
  808.  :dd.Match any character.
  809.  :dt.:hp2.<:ehp2.
  810.  :dd.Match beginning of word (word consists of [A-Za-z0-9]).
  811.  :dt.:hp2.>:ehp2.
  812.  :dd.Match end of word.
  813.  :dt.:hp2.[ ]:ehp2.
  814.  :dd.Specifies a class of characters ([abc123], [\]\x10], etc).
  815.  :dt.:hp2.[ - ]:ehp2.
  816.  :dd.Specified a range of characters ([0-9a-zA-Z_], [0-9], etc)
  817.  :dt.:hp2.[^ ]:ehp2.
  818.  :dd.Specifies complement class ([^a-z], [^\-], etc)
  819.  :dt.:hp2.?:ehp2.
  820.  :dd.Matches preceeding pattern optionally (a?bc, filename\.?, $?, etc)
  821.  :dt.:hp2.|:ehp2.
  822.  :dd.Matches preceeding or next pattern (a|b, c|d, abc|d). Only one character will be used as pattern unless grouped together using {} or ().
  823.  :dt.:hp2.*:ehp2.
  824.  :dd.Match zero or more occurances of preceeding pattern. Matching is greedy and will match as much as possible.
  825.  :dt.:hp2.+:ehp2.
  826.  :dd.Match one or more occurances of preceeding pattern. Match is greedy.
  827.  :dt.:hp2.@:ehp2.
  828.  :dd.Match zero or more occurances of preceeding pattern. Matching is non-greedy and will match as little as possible without causing the rest of the pattern match to fail.
  829.  :dt.:hp2.#:ehp2.
  830.  :dd.Match one or more occurances of preceeding pattern. Matching is non-greedy.
  831.  :dt.:hp2.{ }:ehp2.
  832.  :dd.Group patterns together to form complex pattern. ( {abc}, {abc}|{cde}, {abc}?, {word}?)
  833.  :dt.:hp2.( ):ehp2.
  834.  :dd.Group patterns together to form complex pattern. Also used to remember the matched substring which can be used for substitution operation. Up to 9 can be used.
  835. :edl.
  836. :p.
  837. :hp2.Replace Operators&colon.:ehp2. 
  838. :dl compact tsize=8 break=all.
  839.  :dt.:hp2.\:ehp2.
  840.  :dd.Causes the next character to lose it's special meaning.
  841.  :dt.:hp2.\n:ehp2.
  842.  :dd.Inserts a 0x0A (LF) character.
  843.  :dt.:hp2.\r:ehp2.
  844.  :dd.Inserts a 0x0D (CR) character.
  845.  :dt.:hp2.\t:ehp2.
  846.  :dd.Inserts a 0x09 (TAB) character.
  847.  :dt.:hp2.\#:ehp2.
  848.  :dd.Recalls stored substring from matched pattern ()'s. (\1, \2, \3, to \9)
  849.  :dt.:hp2.\0:ehp2.
  850.  :dd.Recalls entire matched pattern.
  851.  :dt.:hp2.\u:ehp2.
  852.  :dd.Convert next character to uppercase
  853.  :dt.:hp2.\l:ehp2.
  854.  :dd.Convert next character to lowercase
  855.  :dt.:hp2.\U:ehp2.
  856.  :dd.Convert to uppercase till \E or \e
  857.  :dt.:hp2.\L:ehp2.
  858.  :dd.Convert to lowercase till \E or \e
  859. :edl.
  860.  
  861. .br
  862. :h1.Search and Replace 
  863. :i1 id=search.Search and Replace
  864.  
  865. :p.
  866. :hp2.Search and Replace Commands&colon.:ehp2.
  867. :p.
  868. :dl compact tsize=8 break=all.
  869. :dt.:hp2.Find:ehp2.:dd.Search for text w/options.
  870. :dt.:hp2.FindReplace:ehp2.:dd.Search and replace text w/options. 
  871. :dt.:hp2.FindRepeat:ehp2.:dd.Repeat last search/replace operation
  872. :dt.:hp2.FindRepeatReverse:ehp2.:dd.Repeat last search/replace operation in opposite direction
  873. :dt.:hp2.FindRepeatOnce:ehp2.:dd.Repeat last search/replace operation only once.
  874. :dt.:hp2.MatchBracket:ehp2.:dd.Search for matching bracket
  875. :dt.:hp2.IncrementalSearch:ehp2.:dd.Search incrementally for text.
  876. :dt.:hp2.Search:ehp2.:dd.Search for text
  877. :dt.:hp2.SearchB:ehp2.:dd.Search for text backwards
  878. :dt.:hp2.SearchRx:ehp2.:dd.Search for regexp
  879. :dt.:hp2.SearchReplaceRx:ehp2.:dd.Search and replace using regexp
  880. :dt.:hp2.SearchAgain:ehp2.:dd.Search for text again
  881. :dt.:hp2.SearchAgainB:ehp2.:dd.Search for text again backwards
  882. :dt.:hp2.SearchReplace:ehp2.:dd.Search for text and replace
  883. :dt.:hp2.SearchReplaceB:ehp2.:dd.Search and replace backwards
  884. :edl.
  885. :p.
  886. If :hp2.WSStyleSearch:ehp2. is set to 1, search/replace string and options
  887. are entered at separate prompts. Otherwise they must be separated by a '/' 
  888. (slash) and any slash or backslash in search/replace string must be escaped 
  889. by '\' (backslash), except when using regular expressions (double 
  890. escaping is not necessary).
  891. :p.
  892. For example (when WSStyleSearch is off)&colon.
  893. :xmp.
  894.          foo/bar/agn    replace all foo with bar globally without prompting
  895. :exmp.
  896.  
  897. :hp2.Search and Replace Options:ehp2.
  898. :p.
  899. :dl compact tsize=8 break=all.
  900. :dt.:hp2.a:ehp2.:dd.Search for all occurances
  901. :dt.:hp2.b:ehp2.:dd.Search in block only
  902. :dt.:hp2.g:ehp2.:dd.Search through entire file/block (globally).
  903. :dt.:hp2.i:ehp2.:dd.Ignore case
  904. :dt.:hp2.r:ehp2.:dd.Reverse search
  905. :dt.:hp2.x:ehp2.:dd.Use regular expression matching
  906. :dt.:hp2.d:ehp2.:dd.Delete found line
  907. :dt.:hp2.j:ehp2.:dd.Join found line
  908. :dt.:hp2.n:ehp2.:dd.No prompting
  909. :edl.
  910. :p.
  911. Commands affected by :hp2.DefFindOpt:ehp2. mode setting&colon.
  912. :ul compact.
  913. :li.:hp2.Find:ehp2.
  914. :eul.
  915. :p.
  916. Commands affected by :hp2.DefFindReplaceOpt:ehp2. mode setting&colon.
  917. :ul compact.
  918. :li.:hp2.FindReplace:ehp2.
  919. :eul.
  920. :p.
  921. Commands affected by :hp2.MatchCase:ehp2. mode setting&colon.
  922. :ul compact.
  923. :li.:hp2.IncrementalSearch:ehp2.
  924. :li.:hp2.Search:ehp2.
  925. :li.:hp2.SearchB:ehp2.
  926. :li.:hp2.SearchRx:ehp2.
  927. :li.:hp2.SearchReplaceRx:ehp2.
  928. :li.:hp2.SearchReplace:ehp2.
  929. :li.:hp2.SearchReplaceB:ehp2.
  930. :eul.
  931. :p.
  932. Commands affected by :hp2.WSStyleSearch:ehp2. mode setting&colon.
  933. :ul compact.
  934. :li.:hp2.Find:ehp2.
  935. :li.:hp2.FindReplace:ehp2.
  936. :li.:hp2.FindRepeat:ehp2.
  937. :li.:hp2.FindRepeatReverse:ehp2.
  938. :li.:hp2.FindRepeatOnce:ehp2.
  939. :eul.
  940.  
  941.  
  942. .br
  943. :h1.CMode Smart Indentation 
  944. :i1 id=cindent.CMode Smart Indentation
  945.  
  946.  
  947. :hp2.Settings for CMode smart indentation:ehp2.
  948. :p.
  949. :dl compact tsize=8 break=all.
  950. :dt.:hp2.C_Indent:ehp2.:dd.Basic C indentation level
  951. :dt.:hp2.C_BraceOfs:ehp2.:dd.Brace '{' offset
  952. :dt.:hp2.C_CaseOfs:ehp2.:dd.Offset of case and default statements
  953. :dt.:hp2.C_CaseDelta:ehp2.:dd.Offsets of statements following case/default.
  954. :dt.:hp2.C_ClassOfs:ehp2.:dd.Offset of public, private and protected
  955. :dt.:hp2.C_ClassDelta:ehp2.:dd.Offset of statements following public, private, protected
  956. :dt.:hp2.C_ColonOfs:ehp2.:dd.Offset of labels
  957. :dt.:hp2.C_CommentOfs:ehp2.:dd.Offset of comments
  958. :dt.:hp2.C_CommentDelta:ehp2.:dd.Offset of second line of comments
  959. :edl.
  960. :p.
  961. Example 1&colon.
  962.  
  963. :xmp.
  964. class line {
  965. public&colon.                   // C_ClassOfs = 0
  966.     line();               // C_ClassDelta = 4
  967.     ~line();
  968. };
  969.  
  970. int main() {
  971.     int x = 1;
  972.     
  973.     /*                    // C_CommentOfs = 0
  974.      * check value        // C_CommentDelta = 1
  975.      */
  976.     
  977.     puts("main");         // C_Indent = 4
  978.     if (x)
  979.     {                     // C_BraceOfs = 0
  980.         switch (x) {
  981.         case 1&colon.           // C_CaseOfs = 0
  982.             puts("ok");   // C_CaseDelta = 4
  983.             break;
  984.         }
  985.     }
  986. end&colon.
  987.     return 0;
  988. }
  989. :exmp.
  990.  
  991. :p.
  992. Example 2&colon.
  993.  
  994. :xmp.
  995. class line {
  996.   public&colon.                     // C_ClassOfs = 2
  997.     line();                   // C_ClassDelta = 2
  998.     ~line();
  999. };
  1000.  
  1001. int main() {
  1002.     int x = 1;
  1003.     
  1004.       /*                      // C_CommentOfs = 2
  1005.       ** check value          // C_CommentDelta = 0
  1006.       */
  1007.     
  1008.     puts("main");             // C_Indent = 4
  1009.     if (x)
  1010.     {                         // C_BraceOfs = 0
  1011.         switch (x) {
  1012.             case 1&colon.           // C_CaseOfs = 4
  1013.                 puts("ok");   // C_CaseDelta = 4
  1014.                 break;
  1015.         }
  1016.     }
  1017. end&colon.
  1018.     return 0;
  1019. }
  1020. :exmp.
  1021.  
  1022.  
  1023. .br
  1024. :h1.Performance Tips 
  1025.  
  1026. If you want to achieve top performance (necessary for 
  1027. some text editing tasks), here are some tips&colon.
  1028.  
  1029. :ul compact.
  1030. :li.Disable Tab Expansion
  1031. :li.Disable ShowMarkers
  1032. :li.Disable Undo
  1033. :li.Use PLAIN hilit mode
  1034. :eul.
  1035.  
  1036. :h1.History of Changes 
  1037. :i1 id=history.History of Changes
  1038.  
  1039. :ul compact.
  1040.  :li.0.34 
  1041.   :ul compact.
  1042.    :li.1995/10/15
  1043.     :ul compact.
  1044.      :li.Minor fixes &. docs updates...
  1045.     :eul.
  1046.   :eul.
  1047.  :li.0.33 
  1048.   :ul compact.
  1049.    :li.1995/10/01
  1050.     :ul compact.
  1051.      :li.SIGBREAK handler now works again.
  1052.      :li.Fixes in C/C++ smart indentation (if in switch, ...)
  1053.      :li.Pascal highlighting mode.
  1054.      :li.Printing.
  1055.      :li.Rewritten folding. Now supports nested folds, opening closing folds, and persistent folds.
  1056.      :li.New folding commands&colon. FoldCreate, FoldDestroy, FoldOpen, FoldClose, FoldPromote, FoldDemote, FoldCreateByRegexp, FoldOpenAll, FoldOpenNested, FoldCloseAll, FoldDestroyAll, FoldToggleOpenClose, MoveFoldPrev, MoveFoldNext.
  1057.      :li.New settings&colon. SaveFolds, CommentStart, CommentEnd.
  1058.      :li.Word characters can be configured using WordChars setting.
  1059.     :eul.
  1060.   :eul.
  1061.  :li.0.32 
  1062.   :ul compact.
  1063.    :li.1995/08/15
  1064.     :ul compact.
  1065.      :li.New search routines. (Find, FindReplace, FindRepeat, FindRepeatReverse, FindRepeatOnce, ...)
  1066.      :li.Block-local searches.
  1067.      :li.In buffer-list, most recently used files will now be listed first.
  1068.      :li.Main menu bar can now be hidden.
  1069.      :li.Performance improvements.
  1070.      :li.Bookmarks! New commands&colon. PlaceBookmark, GotoBookmark, RemoveBookmark
  1071.      :li.Files can now be saved and closed from window list.
  1072.      :li.Optimized CMode indentation. Also more configurable.
  1073.     :eul.
  1074.   :eul.
  1075.  :li.0.31
  1076.   :ul compact.
  1077.    :li.1995/07/31
  1078.     :ul compact.
  1079.      :li.Bug fixed in undo/redo when UndoLimit reached.
  1080.     :eul.
  1081.   :eul.
  1082.  :li.0.30
  1083.   :ul compact.
  1084.    :li.1995/07/30
  1085.     :ul compact.
  1086.      :li.Folding support.
  1087.      :li.New commands&colon. FoldLine, UnfoldLine, UnfoldNextLine, UnfoldAll, ClearFolds, FoldIndent, FoldRegexp, FoldBlock, UnfoldBlock, FoldBlockRegexp
  1088.      :li.BackSpace at eof when TrimLine is enabled will not abort.
  1089.      :li.Incremental search (IncrementalSearch).
  1090.      :li.PgUp/PgDn on a file prompt will show a list of files.
  1091.      :li.New command&colon. CompleteWord
  1092.     :eul.
  1093.   :eul.
  1094.  :li.0.29
  1095.   :ul compact.
  1096.    :li.1995/07/20
  1097.     :ul compact.
  1098.      :li.Regexps can now be case insensitive (\C,\c).
  1099.      :li.BlockRead/BlockReadColumn/BlockWrite commands.
  1100.      :li.Block marking can now be undone.
  1101.      :li.Commands that prompt for string/int values can now take string/int arguments.
  1102.      :li.Multiple compile-regex statements can be specified simultaneously
  1103.      :li.Minor bug-fixes in regexps ([\x00-\xFF] now works).
  1104.      :li.Filter for filename completion.
  1105.      :li.New commands&colon. SwitchTo ChangeKeys ChangeFlags ShowMenu 
  1106.      :li.New options&colon. CompletionFilter DefaultModeName
  1107.     :eul.
  1108.   :eul.
  1109.  :li.0.28
  1110.   :ul compact.
  1111.    :li.1995/07/08
  1112.     :ul compact.
  1113.      :li.- Needs to have documentation updated.
  1114.      :li.Mostly rewritten PERL highlighting. Works much better now.
  1115.      :li.Completely new config file syntax.
  1116.      :li.New commands&colon. ASCIITable, LoadFileInMode
  1117.      :li.CMode indentation should now work for Perl (close enough).
  1118.      :li.Highlighting for ADA and Email messages.
  1119.     :eul.
  1120.   :eul.
  1121.  :li.0.27
  1122.   :ul compact.
  1123.    :li.1995/06/19
  1124.     :ul compact.
  1125.      :li.Minor bug fixes.
  1126.     :eul.
  1127.   :eul.
  1128.  :li.0.26
  1129.   :ul compact.
  1130.    :li.1995/06/18
  1131.     :ul compact.
  1132.      :li.New commands&colon. {Char,Line,Block}Case{Up,Down,Toggle}
  1133.      :li.New setting&colon. LoadAfterQuit -- if set to 1, editor will prompt to load another file before exiting.
  1134.      :li.New setting&colon. ShowScrollBar {0,1}.
  1135.     :eul.
  1136.   :eul.
  1137.  :li.0.25
  1138.   :ul compact.
  1139.    :li.1995/06/12
  1140.     :ul compact.
  1141.      :li.Minor bug fix in REXX highlighting ("\"", ...)
  1142.      :li.Bug fixes in word wrap.
  1143.      :li.BlockCut now doesn't move the cursor to the block beginning.
  1144.      :li.New commands&colon. MoveLineTop, MoveLineCenter, MoveLineBottom.
  1145.      :li.Editor will now check if the file has changed before the first modification.
  1146.      :li.Found text is now highlighted.
  1147.      :li.New CMode setting&colon. C.BraceOfs and command&colon. ChangeCBraceOfs
  1148.      :li.New commands&colon. MovePrevPos, SavePos, MoveSavedPos, MoveSavedPosCol, MoveSavedPosRow
  1149.     :eul.
  1150.   :eul.
  1151.  :li.0.24
  1152.   :ul compact.
  1153.    :li.1995/06/06
  1154.     :ul compact.
  1155.      :li.When checking for file modification time of last change is now used instead of the time of last access.
  1156.      :li.Wildcard support for file loading.
  1157.     :eul.
  1158.   :eul.
  1159.  :li.0.23
  1160.   :ul compact.
  1161.    :li.1995/06/04
  1162.     :ul compact.
  1163.      :li.Ctrl+C and Ctrl+Break are now disabled.
  1164.      :li.Ctrl+S and Ctrl+C keys are now again recognised in Windowed mode.
  1165.      :li.Fixed problem when spawning a subprocess in Windowed mode.
  1166.      :li.New command&colon. ShowEntryScreen
  1167.      :li.ListRoutines in CMode only shows functions not their prototypes.
  1168.      :li.New setting&colon. SysClipboard - if set to 1, editor will automatically use system clipboard.
  1169.      :li.New command&colon. ToggleSysClipboard.
  1170.      :li.Minor bug fix in PM clipboard support.
  1171.      :li.New commands&colon. BlockPasteStream, BlockPasteColumn and BlockPasteLine. BlockPaste command will now always paste in current block mode, not in the last Copy/Cut mode.
  1172.      :li.More than 4 commands can be bound to a key (actually this worked since 0.18, but was not documented).
  1173.      :li.New command&colon. FileReload.
  1174.      :li.Editor will now check if file has changed on disk before saving it.
  1175.     :eul.
  1176.   :eul.
  1177.  :li.0.22
  1178.   :ul compact.
  1179.    :li.1995/05/28
  1180.     :ul compact.
  1181.      :li.But fix in regular expressions (nested +#*@).
  1182.      :li.Changes in regular expression syntax.
  1183.      :li.New function&colon. ListRoutines. Shows functions in current buffer.
  1184.      :li.New setting&colon. RoutineRx
  1185.     :eul.
  1186.   :eul.
  1187.  :li.0.21
  1188.   :ul compact.
  1189.    :li.1995/05/21
  1190.     :ul compact.
  1191.      :li.REXX mode smart indentation.
  1192.      :li.KillWord &. KillWordPrev commands now actually work.
  1193.      :li.Pressing Ctrl+Enter to begin Search will toggle case sensitivity of search.
  1194.      :li.New option 'Trim' and commands 'ToggleTrim', 'LineTrim'. Removes whitespace from end of lines.
  1195.      :li.New option 'ShowMarkers' and command 'ToggleShowMarkers'. Shows end of line and end of file markers.
  1196.      :li.Bug fix in PERL highlighting (caused lockups)
  1197.      :li.Bug fixes and improvements in regular expressions.
  1198.     :eul.
  1199.   :eul.
  1200.  :li.0.20
  1201.   :ul compact.
  1202.    :li.1995/05/18
  1203.     :ul compact.
  1204.      :li.Major bug fixes in word wrap.
  1205.      :li.New commands&colon. MovePrevTab, MoveNextTab.
  1206.      :li.Bug fixes in BlockIndent and BlockUnindent (stream/line mode)
  1207.     :eul.
  1208.   :eul.
  1209.  :li.0.19
  1210.   :ul compact.
  1211.    :li.1995/05/16
  1212.     :ul compact.
  1213.      :li.Function names in REXX are now highlighted.
  1214.      :li.WordWrap can be set to 0 - disabled, 1 - wrap line at right margin and 2 - wrap paragraph continously. Function ToggleAutoWrap renamed to ToggleWordWrap.
  1215.      :li.New way to set left/right margin (SetLeftMargin, SetLeftMargin)
  1216.      :li.Minor fix in PERL highlighting.
  1217.     :eul.
  1218.   :eul.
  1219.  :li.0.18
  1220.   :ul compact.
  1221.    :li.1995/05/13
  1222.     :ul compact.
  1223.      :li.PERL Syntax Higlighting.
  1224.      :li.Memory allocation problem in tab expansion.
  1225.      :li.Wordwrap now strips all spaces on beginning of line (except on the first line of the paragraph).
  1226.      :li.Tabs can be set to any number between 1 and 32.
  1227.      :li.Changed names of buffer flags (WrapOn -> AutoWrap, UndoRedo -> Undo, ShowTab -> ShowTabs)
  1228.      :li.New commands&colon. ToggleAutoIndent, ToggleExpandTabs, ToggleShowTabs, ToggleUndo, ToggleReadOnly, ToggleKeepBackups, ToggleMatchCase, ToggleBackSpKillTab,
  1229.          ToggleDeleteKillTab, ToggleSpaceTabs, ToggleIndentWithTabs, ToggleBackSpUnindents, ToggleAutoWrap.
  1230.      :li.New commands&colon. WinRefresh, ChangeTabSize, ChangeCIndent, ChangeLeftMargin, ChangeRightMargin.
  1231.      :eul.
  1232.   :eul.
  1233.  :li.0.17
  1234.   :ul compact.
  1235.    :li.1995/05/10
  1236.     :ul compact.
  1237.      :li.Minor fix in word-wrap.
  1238.      :li.Screen repaint problems when shelling out fixed.
  1239.      :li.Blinking disabled for full-screen, high-intensity background colors can now be used.
  1240.     :eul.
  1241.   :eul.
  1242.  :li.0.16
  1243.   :ul compact.
  1244.    :li.1995/05/06
  1245.    :ul compact.
  1246.     :li.Minor speedups in screen handling and highlighting.
  1247.     :li.Regular expressions can now match start and end of words using .
  1248.     :li.Regexp replace can paste entire matched string using &.
  1249.     :li.Regexp search/replace could match part of just replaced string.
  1250.     :li.New commands&colon. MoveLastNonWhite, MovePrevEqualIndent and MoveNextEqualIndent, LineDuplicate, InsPrevLineChar, InsPrevLineToEol.
  1251.     :li.New color config. 'C.Function' for functions in C highlighting mode.
  1252.     :li.Improved CMode hilit, preprocessor hiliting improved (strings, comments, numbers)
  1253.    :eul.
  1254.   :eul.
  1255.  :li.0.15
  1256.   :ul compact.
  1257.    :li.1995/04/29
  1258.     :ul compact.
  1259.      :li.Speed improvement in CMode auto indent.
  1260.      :li.Delete command can now delete full tabs instead of converting them to spaces.
  1261.      :li.When closing a modified file, editor prompts you to save it.
  1262.      :li.Automatic indentation can now use tabs.
  1263.      :li.Manual and automatic wordwrap.
  1264.     :eul.
  1265.    :li.1995/04/24
  1266.     :ul compact.
  1267.      :li.Backspace can now delete full tabs instead of converting them to spaces (See BackSpace and KillBackTab).
  1268.      :li.Backspace can unindent to previous indentation level.
  1269.     :eul.
  1270.    :li.1995/04/20
  1271.     :ul compact.
  1272.      :li.Basic mouse support.
  1273.     :eul.
  1274.    :li.1995/04/12
  1275.     :ul compact.
  1276.      :li.Configurable colors/keywords in C/REXX mode.
  1277.     :eul.
  1278.   :eul.
  1279.  :li.0.14
  1280.   :ul compact.
  1281.    :li.1995/04/07
  1282.     :ul compact.
  1283.      :li.Characters could not be entered using AltGr on international keyboards.
  1284.      :li.Immediatelly doing an undo on a newly loaded file deleted the first line.
  1285.      :li.Ascii characters >= 128 can be now entered without quote command (C-Q).
  1286.      :li.IPF Syntax highlighting.
  1287.     :eul.
  1288.   :eul.
  1289.  :li.0.13
  1290.   :ul compact.
  1291.    :li.1995/04/03
  1292.     :ul compact.
  1293.      :li.Bug fix in regular expressions.
  1294.      :li.Bug fixes in compiler support
  1295.      :li.Editor clipboard can now be copied to/from PM clipboard.
  1296.     :eul.
  1297.   :eul.
  1298.  :li.0.12
  1299.   :ul compact.
  1300.    :li.1995/03/30
  1301.     :ul compact.
  1302.      :li.Compiler support + error message parsing
  1303.     :eul.
  1304.    :li.1995/03/25
  1305.     :ul compact.
  1306.      :li.Paren matching (Command&colon. MatchBracket).
  1307.      :li.Bug fixes in CMode smart indentation.
  1308.     :eul.
  1309.   :eul.
  1310.  :li.0.11
  1311.   :ul compact.
  1312.    :li.1995/03/11
  1313.     :ul compact.
  1314.      :li.Unlimited undo now works again.
  1315.     :eul.
  1316.    :li.1995/03/18
  1317.     :ul compact.
  1318.      :li.Entire blocks of C code can now be reindented (BlockReIndent)
  1319.      :li.Search can now be case insensitive (SearchMatchCase - toggle). Option&colon. MatchCase, Command&colon. SearchMatchCase
  1320.      :li.Regular expression find/replace works (case sensitive only)
  1321.     :eul.
  1322.    :li.1995/03/19
  1323.     :ul compact.
  1324.      :li.Fixed a bug in redo (last command could not be undone)
  1325.      :li.New option&colon. KeepBackups -- if set to 0, backup files will be deleted after a succesful save.
  1326.     :eul.
  1327.   :eul.
  1328.  :li.0.10
  1329.   :ul compact.
  1330.    :li.1995/03/06
  1331.     :ul compact.
  1332.      :li.Fixed CMode indent when tabs are present in the file.
  1333.      :li.Prompts now retain previous text only if you try to edit it.
  1334.     :eul.
  1335.    :li.1995/03/04
  1336.     :ul compact.
  1337.      :li.4DOS/4OS2 style filename completion (FileOpen, ...).
  1338.     :eul.
  1339.    :li.1995/02/25
  1340.     :ul compact.
  1341.      :li.New load routine, much faster in some cases.
  1342.      :li.Undo/Redo can now be limited (if you hate to waste memory).
  1343.     :eul.
  1344.    :li.1995/02/19
  1345.     :ul compact.
  1346.      :li.C Mode indentation level can now be specified (C.Indent)
  1347.      :li.Bug fixes in screen redraw. 
  1348.      :li.Editor will now scroll text instead of always redisplaying the screen.
  1349.      :li.Regular expressions (Search only).
  1350.     :eul.
  1351.   :eul.
  1352.  :li.0.09 
  1353.   :ul compact.
  1354.    :li.1995/02/08   
  1355.     :ul compact.
  1356.      :li.First public release (Version 0.09b)
  1357.     :eul.
  1358.   :eul.
  1359. :eul.
  1360.  
  1361.  
  1362. .br
  1363. :h1.Things To Do 
  1364. :i1 id=todo.Things To Do
  1365.  
  1366. :lines align=center.
  1367. :hp2.Short term&colon.:ehp2.
  1368. :elines.
  1369.  
  1370. :ul compact.
  1371.  :li.:hp2.Improve documentation:ehp2.
  1372.  :li.DrawMode
  1373.  :li.Block sort/detab/entab, copy-w/append, cut-w/append
  1374.  :li.Piping block to program redirection of program output to buffer
  1375.  :li.HexMode
  1376.  :li.REXX macros support.
  1377.  :li.Menus should determine keybindings automatically.
  1378. :eul.
  1379. :lines align=center.
  1380. :hp2.Future&colon.:ehp2.
  1381. :elines.
  1382. :ul compact.
  1383.  :li.PM Version.
  1384.  :li.Script language (C like, also REXX support).
  1385.  :li.CVS/RCS support.
  1386.  :li.Save/Restore desktop.
  1387.  :li.Regexp optimizer &. improved regexps.
  1388. :eul.
  1389.  
  1390. :lines align=center.
  1391. :hp2.Comments and suggestions are appreciated.:ehp2.
  1392. :elines.
  1393.  
  1394.  
  1395. :euserdoc.