home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / ehp14cs.zip / ehp.ipf < prev    next >
Text File  |  1995-06-24  |  91KB  |  1,999 lines

  1. .* maximum res id: 31
  2. :userdoc.
  3. :title.EHP online manual
  4.  
  5. .* ************************************************************************
  6. :h1.Introduction
  7. .* ************************************************************************
  8.  
  9. :p. First of all note, that since release 1.4 :hp4.EHP:ehp4. is shareware. If
  10. you are using it for longer than four weeks you will have to 
  11. :link reftype=hd res=31. register:elink.. Please DO register. :hp4.EHP:ehp4. 
  12. is not crippled in anyway and I expect the appropriate fairness from you. The
  13. registration fee is a joke compared against the efforts needed to port the 
  14. editor to OS/2 and maintaining it.
  15.  
  16. :p.The shortcut :hp4.EHP:ehp4. comes from "Editor for HP workstation" and was
  17. invented during the first implementation on a HP 350. This first 
  18. implementation was done by Maximilian Riesenhuber and me during 1990.
  19. Since then :hp4.EHP:ehp4. has gone its way via DOS to OS/2. Of course the
  20. name remains only for historical reasons, since it has no real meaning
  21. for the editor now running with OS/2.
  22.  
  23. :p.:hp4.EHP:ehp4. is an
  24. interactive fullscreen text editor, running also in a PM text window and
  25. allowing quasi-parallel editing of multiple texts using window technique. 
  26. 3-button mouse support is provided (of course only, if a 3-button mouse 
  27. driver is installed).
  28.  
  29. :p.Compared with the UNIX vi, :hp4.EHP:ehp4. does not distinguish an edit- and a
  30. command mode. Instead, the control- and the alt-keys are used for invoking
  31. commands, as most today-editors do.
  32.  
  33. Why use :hp4.EHP:ehp4. instead of e.g. EPM or other PM editors? Of course, 
  34. discussing this topic is a very subjective issue, and we're aware, that 
  35. people don't change their favourite editor like others change their shirt. 
  36. The first reason is, that :hp4.EHP:ehp4. starts up more quickly than EPM. 
  37. :hp4.EHP:ehp4., as mentioned and runs also full-screen, which makes it a
  38. possible choice for system recovery, if PM doesn't come up. Furthermore,
  39. :hp4.EHP:ehp4. can be - and has been - easily ported to other platforms like 
  40. UNIX, since it was implemented upon the curses library initiallly. In some 
  41. way it has more powerful features than, say, EPM. E.g. the possibilty of 
  42. intermixing macros and repeat commands and nesting them into each other 
  43. might be possible only with EMACS. By the way one more word on EMACS: Though 
  44. I'm not using it, I'm sure it's a very powerful editor. But the torture of 
  45. installing and learning it, the gigantic ressource comsumption, the overhad
  46. of having a complete LISP system while not really using it and so on make 
  47. EMACS not the first choice for everybody.
  48.  
  49. As a quick overview, we might give a list of the distinguishing features
  50. of :hp4.EHP:ehp4.&colon.
  51. :ul.
  52. :li.Interactive 32-bit text editor, well-suited for programming or writing
  53. TeX
  54. :li.Runs OS/2 fullscreen or in PM text window in different text resolutions
  55. (80x25, 80x50, etc.)
  56. :li.Windowed user interface with mouse support
  57. :li.Keybindings redefinable
  58. :li.Full-featured regular expressions for search
  59. :li.Powerful macro and repeat commands
  60. :li.Powerful block commands
  61. :li.Support for rectangular blocks (wonderful for maintaining comments)
  62. :li.Mode with automatic linebreaking and paragraph reflowing
  63. :li.Remembers its configuration exactly when exiting
  64. :li.Copes with underlined characters (Unix-style: _^H) and can easily
  65. manage them
  66. :li.Comes with detailed online documentation in .INF format
  67. :eul.
  68.  
  69. :p.In the sequel all available commands will be listed in a semantic
  70. grouping. For a command reference see 
  71. :link reftype=hd res=1.Command reference:elink. in the apppendix.
  72.  
  73. :p.Note, that when this document speaks about a 'screen', and you are
  74. running :hp4.EHP:ehp4. in an OS/2 PM text window, then screen means that
  75. window. Don't intermix PM windows with :hp4.EHP:ehp4. windows!
  76.  
  77. :p.Note, that the following words are sometimes used as
  78. synonyms:
  79. :ul.
  80. :li.:hp2.RETURN:ehp2. and :hp2.ENTER:ehp2.
  81. :li.:hp2.Space:ehp2. and :hp2.blank:ehp2.
  82. :li.:hp2.Tab:ehp2. and :hp2.tabstop:ehp2.
  83. :eul.
  84.  
  85. .* ************************************************************************
  86. :h1 res=31.Registration
  87. .* ************************************************************************
  88.  
  89. :p.If you are using :hp4.EHP:ehp4. for more than four weeks you will have to 
  90. register. Please register by sending $10 or DM 10,- and your EMail address to
  91.  
  92. :lines align=left.
  93.        Axel Uhl
  94.        Weinbrennerstraße 108
  95.        76185 Karlsruhe
  96.        Germany
  97. :elines.
  98.  
  99. :p.This will yield you an unlimited license of using all further releases of
  100. :hp4.EHP:ehp4.. Additionally, it will provide you the advantage of receiving 
  101. the latest updates via UUENCODED EMail (please write if you don't need this, 
  102. e.g. due to EMail cost).
  103.  
  104. :p.To state it once again: :hp4.EHP:ehp4. is completely uncrippled. Please 
  105. note this, be equally fair and register if you are really using this editor. 
  106. 10$ is nothing for an editor with :hp4.EHP:ehp4.'s features.
  107.  
  108. .* ************************************************************************
  109. :h1 res=3.Installing EHP
  110. .* ************************************************************************
  111.  
  112. :p.The installation of :hp4.EHP:ehp4. is quite simple. Place the file
  113. EHP.EXE in a directory contained in your :hp2.PATH:ehp2., e.g. 
  114. c&colon.\os2\bin.
  115. Place the keyboard definition file tasten.inf in a directory of your
  116. choice, say also c&colon.\os2\bin. Edit your :hp2.CONFIG.SYS:ehp2. file and
  117. insert the line :hp2.SET EHPINIT=keys c&colon.\os2\bin\tasten.inf:ehp2.. This
  118. forwards the path of the keyboard file to :hp4.EHP:ehp4.. For further
  119. settings via :hp2.EHPINIT:ehp2. see :link reftype=hd res=2.EHPINIT:elink..
  120. Further, the dynamic link library EMX.DLL must be in a directory contained
  121. in your :hp2.LIBPATH:ehp2..
  122.  
  123. .* ************************************************************************
  124. :h1.General information
  125. .* ************************************************************************
  126.  
  127. :p.This section contains information about invoking :hp4.EHP:ehp4., the
  128. contents of the screen, user interaction and accepted fileformats.
  129.  
  130. .* ************************************
  131. :h2.Invoking EHP
  132. .* ************************************
  133.  
  134. :p.Precondition for invoking :hp4.EHP:ehp4. is the correct 
  135. :link reftype=hd res=3.installation:elink. of :hp4.EHP:ehp4..
  136. If this is done, you can start the editor by typing :hp2.ehp:ehp2. at
  137. the command prompt. You can provide the names of files to load as
  138. parameters. E.g. the command 
  139.  
  140. :p.:hp2.ehp x y z:ehp2. 
  141.  
  142. :p.loads the files
  143. x, y and z each into a seperate window. The window displayed on top of
  144. the others is the one named first, in this case x, since files are loaded
  145. in reverse order, and each newly opened window becomes the top window.
  146. Note, that the numbering of the windows is also in reverse order.
  147. The numbering can be used to 
  148. :link reftype=hd res=5.switch among the windows:elink..
  149.  
  150. :p.If no parameters were provided, :hp4.EHP:ehp4. looks for a
  151. :link reftype=hd res=4.configuration file:elink.. If such a file exists,
  152. the editor is restored in the state it was in when quitting it before.
  153. Otherwise you are asked for the name of a file to load. If a file with
  154. that name does not exist, you are asked whether you want to create it.
  155. If so, a new empty file is presented. Otherwise the editor terminates
  156. with a corresponding message.
  157.  
  158. .* ************************************
  159. :h2.Screen contents
  160. .* ************************************
  161.  
  162. :p.This section describes the outfit of windows, the position and the
  163. contents of the status line and the colors.
  164.  
  165. .* ************************************
  166. :h3.Windows
  167. .* ************************************
  168.  
  169. :p.A window is a rectangular part of the screen, on which text is
  170. presented in a frame. Since it is possible to look at multiple windows
  171. at the same time, the current window's frame is highlighted.
  172. The frame contains helpful information and
  173. :link reftype=hd res=11.control areas for the mouse:elink..
  174. :p.
  175.  
  176. .* ************************************
  177. :h4.Headline
  178. .* ************************************
  179.  
  180. :p.In the headline you find the current line and column number,
  181. information about :link reftype=hd res=6.insert/overwrite:elink. 
  182. (:hp2.Insert:ehp2. or :hp2.Overwrite:ehp2.),
  183. :link reftype=hd res=7.underline:elink. (:hp2.Under:ehp2.), 
  184. :link reftype=hd res=9.autoindent:elink. (:hp2.Indent:ehp2.),
  185. :link reftype=hd res=8.shell:elink. (:hp2.SHELL:ehp2.)
  186. and :link reftype=hd res=9.tab:elink. (:hp2.Tabs:ehp2. or :hp2.Spcs:ehp2.)
  187. mode.
  188.  
  189. :p.
  190.  
  191. .* ************************************
  192. :h4.Footline
  193. .* ************************************
  194.  
  195. :p.In the footline the window number and the filename are displayed.
  196. If the file is read only, then :hp2.WRITEPROTECTED:ehp2. is displayed.
  197. If the file was modified after loading or after the last saving, then
  198. :hp2.MODIFIED:ehp2. is displayed in the footline. Such modified files are
  199. saved when :link reftype=hd res=10.quitting the editor:elink. with the save
  200. option (of course only, if the file was not write protected).
  201.  
  202. .* ************************************
  203. :h3 res=12.Status line
  204. .* ************************************
  205.  
  206. :p.The status line is the bottom line of the screen. Here the helptexts
  207. for the keycommands and error messages are displayed.
  208.  
  209. .* ************************************
  210. :h3 res=24.Colors
  211. .* ************************************
  212.  
  213. :p.The default color setting is the following:
  214. :ul.
  215. :li.Grey
  216. :lp.This is the color normal text and frames of inactive windows appear in.
  217. :li.Green
  218. :lp.Highlighted blocks and the frame of the current window appear green.
  219. :li.Red
  220. :lp.With red underlined text passages are displayed.
  221. :li.Brown
  222. :lp.If underlined text appears in a highlighted block, it is colored brown.
  223. :eul.
  224.  
  225. .* ************************************
  226. :h2.Interaction
  227. .* ************************************
  228.  
  229. :p.An input consisting of more than one letter (except the key commands)
  230. has to be terminated with the :hp2.ENTER:ehp2.-key. This are for example
  231. filenames or line numbers. If :hp4.EHP:ehp4. expects exactly one letter
  232. (for example in a yes/no query), pressing the letter suffices and
  233. pressing :hp2.ENTER:ehp2. is not needed.
  234.  
  235. :p.Error messages, which are displayed in the
  236. :link reftype=hd res=12.status line:elink. must be confirmed with 
  237. :hp2.ENTER:ehp2..
  238. If a hint is displayed in the status line, e.g. the new status of the
  239. the status of a binary variable, like the blockhighlighting status,
  240. this hint will disappear automatically after a couple of seconds.
  241.  
  242. :p.The keyboard commands are case sensitive. That means, if e.g. in the
  243. :link reftype=hd res=1.command reference:elink. there is a command
  244. :hp2.CTRL-x n:ehp2. then you have to use a lower-case n. Note, that hence
  245. having Caps Lock activated accidently will cause troubles in executing
  246. commands.
  247.  
  248. .* ************************************
  249. :h2 res=23.Fileformat
  250. .* ************************************
  251.  
  252. :p.The files to edit must be in ASCII format. With OS/2 the size of texts
  253. is limited to some GB, which will satisfy most needs and will exceed
  254. swap space in most cases. However, if a file should still be too large to
  255. load, an error message will be displayed.
  256.  
  257. :p.If lines longer than 500 characters appear, they will be wrapped (see
  258. also :link reftype=hd res=13.Limits and bugs:elink.). The limit on the
  259. number of lines is 4G due to the limit of integers, but this has no effect,
  260. since memory limits are more strict.
  261.  
  262. :p.Note, that binary files should not be edited with :hp4.EHP:ehp4., since
  263. e.g. :link reftype=hd res=9.tabs are expanded:elink. during load, and are 
  264. only recompressed at the
  265. beginning of a line (important for tools like :hp2.MAKE:ehp2.). This could
  266. lead to an unexpected and unpleasant change in representation.
  267.  
  268. :p.A combination of an underscore followed by a backspace and a character is
  269. interpreted as if that character is underlined. Characters entered in
  270. :hp4.EHP:ehp4.'s :link reftype=hd res=7.underline mode:elink. are
  271. written to file in the same representation. Due to this representation,
  272. if manually an underscore followed by a backspace (entered via
  273. :hp2.CTRL-c Backspace:ehp2.) is inserted before a character, this
  274. character will appear underlined in the sequel. This is also true for
  275. an underscore-backspace combination entered at the end of a line, which
  276. will be converted into an underlined space.
  277.  
  278. .* ************************************************************************
  279. :h1.Commands
  280. .* ************************************************************************
  281.  
  282. :p.The keyboard mapping for commands was chosen in a way that key
  283. combinations can be remembered as easily as possible. However, a compromise
  284. had to be found between shortness of commands and the mnemonic property.
  285. So for heavily used commands sometimes in the predefined keyboard mapping
  286. a somewhat cryptical combination has been chosen to speed up everyday's
  287. work (e.g. :hp2.CTRL-t:ehp2. for 'delete word').
  288.  
  289. :p.The key combinations for invoking the commands may be changed by using
  290. the withcoming tool :hp4.KM:ehp4., explained below (see 
  291. :link reftype=hd res=30.Keyboard remapping:elink.).
  292.  
  293. :p.Note, that if typing an illegal combination, all typed keys belonging
  294. to the current command are discarded up to and including the one causing
  295. the sequence to be illegal. Say for example you wanted to type the command
  296. for deleting a block (:hp2.CTRL-b d:ehp2.) but you hit s instead of d, then 
  297. the :hp2.CTRL-b:ehp2. and the s are discarded. This can of course be used
  298. as a kind of escape facility. E.g. the spacebar is currently not assigned
  299. any command. So pressing :hp2.SPACE:ehp2. escapes from a multi-key command.
  300.  
  301. .* ************************************
  302. :h2.Moving text and cursor
  303. .* ************************************
  304. :p.
  305.  
  306. :h3 res=19.Change cursorposition
  307.  
  308. :p.In order to position the cursor there are many commands. All have in 
  309. common that they can't move the cursor beyond the last line of the text
  310. and beyond column 501 (see :link reftype=hd res=13.Limits and Bugs:elink.).
  311. If the cursor would move out of the window, the text is scrolled accordingly.
  312. :p.The following sections will describe the single commands in detail.
  313.  
  314. :h4.Character oriented
  315. :ul.
  316. :li.:hp2.Arrow-left:ehp2.
  317. :lp.moves the cursor one column left, if not already in column 1. If in
  318. column 1, then the cursor is moved to the end of the previous line, if
  319. the current line number was greater than 1.
  320. :li.:hp2.Arrow-right:ehp2.
  321. :lp.moves the cursor one column right, if not already in column 501.
  322. :eul.
  323.  
  324. .* ************************************
  325. :h4.Word oriented
  326. .* ************************************
  327.  
  328. :p.Word separator are the following characters:
  329. :hp2..,#&colon.;]@$&.()[]{}!?'`/\<>-+*=":ehp2. in addition to 
  330. :hp2.TAB:ehp2., :hp2.SPACE:ehp2. and a line break.
  331. :ul.
  332. :li.:hp2.CTRL-Arrow left:ehp2.
  333. :lp.moves the cursor one word left, if not already at the beginning of
  334. the line. Consecutive word separators (except if separated by
  335. blanks or tabs) are treated as one word, which makes word skipping much
  336. more convenient. By the way: this is the way, VI does word skipping, too.
  337. :li.:hp2.CTRL-Arrow right:ehp2.
  338. :lp.moves the cursor one word right, if not already at the last word of
  339. the line. As stated above, consecutive word separators not separated by
  340. blanks or tabs are treated as one word. If the cursor is placed on the
  341. last word in a line, this function places the cursor immediately right to
  342. the end of the line (as if the :hp2.End:ehp2.-key had been pressed).
  343. :eul.
  344.  
  345. .* ************************************
  346. :h4.Line oriented
  347. .* ************************************
  348.  
  349. :ul.
  350. :li.:hp2.Home:ehp2.
  351. :lp.moves cursor to the beginning of the current line.
  352. :li.:hp2.End:ehp2.
  353. :lp.moves cursor to the end of the current line.
  354. :li.:hp2.Arrow up:ehp2.
  355. :lp.moves cursor up one line, if not already in first line of current file.
  356. :li.:hp2.Arrow down:ehp2.
  357. :lp.moves cursor down one line, if not already in last line of current file.
  358. :li.:hp2.ENTER:ehp2. (in overwrite mode, see 
  359. :link reftype=hd res=6.Insert and delete:elink.)
  360. :lp.moves cursor to the beginning of the following line, if the current
  361. line is not the last line of the current file.
  362. :eul.
  363.  
  364. .* ************************************
  365. :h4.Window oriented
  366. .* ************************************
  367.  
  368. :ul.
  369. :li.:hp2.CTRL-Home:ehp2.
  370. :lp.moves the cursor to the top of the current window. Note that this need
  371. not be the first line of the file.
  372. :li.:hp2.ALT-Arrow right:ehp2.
  373. :lp.move the cursor to the middle line of the current window. If the last
  374. line of the file is displayed above the middle of the window or the window
  375. is empty, then the cursor is placed to the last line of the file.
  376. :li.:hp2.CTRL-End:ehp2.
  377. :lp.moves the cursor to the bottom of the current window. Note that this
  378. need not be the last line of the current file. If the last line of the
  379. file is displayed above the bottom of the window, then the cursor is
  380. places in the last line of the file.
  381. :eul.
  382.  
  383. .* ************************************
  384. :h3.Change window contents
  385. .* ************************************
  386. :p.
  387.  
  388. :h4.Line oriented
  389. :ul.
  390. :li.:hp2.ALT-Arrow up:ehp2.
  391. :lp.makes current line the top line of the current window.
  392. :li.:hp2.ALT-Arrow left:ehp2.
  393. :lp.makes current line the middle line of the current window.
  394. :li.:hp2.ALT-Arrow down:ehp2.
  395. :lp.makes current line the bottom line of the current window.
  396. :li.:hp2.CTRL-Arrow up:ehp2.
  397. :lp.moves window content up one line, if the current line is not the last
  398. line of the current file and is located at the top of the window.
  399. The cursor stays in the same line number, if it was not in the top line
  400. of the window. If the latter was the case, then it is moved down to the
  401. next line. That means it stays on the same screen position in that case.
  402. :li.:hp2.CTRL-Arrow down:ehp2.
  403. :lp.moves window content down one line, if the first line on the current
  404. file is not already visible in the window.
  405. The cursor stays in the same line number, if it was not in the bottom line
  406. of the window. If the latter was the case, then it is moved up to the
  407. next line. That means it stays on the same screen position in that case.
  408. :eul.
  409.  
  410. .* ************************************
  411. :h4.Page oriented
  412. .* ************************************
  413.  
  414. :ul.
  415. :li.:hp2.PgUp:ehp2.
  416. :lp.scrolls up one page, if not already at the beginning of the file.
  417. The direction is hence towards smaller line numbers.
  418. :li.:hp2.PgDn:ehp2.
  419. :lp.scrolls down one page, if not already at the end of the file. 
  420. The direction is hence towards greater line numbers.
  421. :li.:hp2.ALT-PgUp:ehp2.
  422. :lp.sctolls up half a page, if not already at the beginning of the file.
  423. The direction is hence towards smaller line numbers.
  424. :li.:hp2.ALT-PgDn:ehp2.
  425. :lp.scrolls down half a page, if not already at the end of the file.
  426. The direction is hence towards greater line numbers.
  427. :eul.
  428.  
  429. .* ************************************
  430. :h3.Absolute jumps
  431. .* ************************************
  432.  
  433. :ul.
  434. :li.:hp2.CTRL-PgUp:ehp2.
  435. :lp.moves the cursor to the first line of the current file.
  436. :li.:hp2.CTRL-PgDn:ehp2.
  437. :lp.moves the cursor to the last line of the current file.
  438. :li.:hp2.CTRL-g n:ehp2.
  439. :lp.go to a specific line number. The query for the line number is
  440. displayed in the :link reftype=hd res=12.status line:elink..
  441. :li.:hp2.CTRL-g b:ehp2.
  442. :lp.moves cursor to the beginning of the block marked in the current window.
  443. If no block is marked in the current window, then the corsorposition remains
  444. unchanged.
  445. :li.:hp2.CTRL-g e:ehp2.
  446. :lp.moves cursor to the end of the block marked in the current window.
  447. If no block is marked in the current window, then the corsorposition remains
  448. unchanged.
  449. :li.:hp2.CTRL-g l:ehp2.
  450. :lp.move the cursor to the so-called 'last position'. This position is
  451. saved, when a jump to the beginning or the end of a file, a search, a replace
  452. or any of the :hp2.CTRL-g:ehp2. commands is performed. By the latter it is
  453. possible to jump back and forth between two positions by repeatedly doing
  454. :hp2.CTRL-g l:ehp2..
  455. :li.:hp2.Left mouse button:ehp2.
  456. :lp.By moving the mouse pointer to a suitable position and pressing the
  457. left mouse button once, the cursor is moved to the mouse position.
  458. Note, that this also works, if the mouse pointer is located outsinde the 
  459. current window (see :link reftype=hd res=5.window switching:elink.).
  460. :li.:hp2.CTRL-p:ehp2.
  461. :lp.move the cursor to the bracket or parenthesis matching the one
  462. being nearest to the cursor. This command is extremely useful for testing
  463. the matching of nested parenthesis / curly braces as they appear in C or 
  464. in LISP. If no matching parenthesis / bracket is found, :hp4.EHP:ehp4.
  465. issues a beep.
  466. :eul.
  467.  
  468. .* ************************************
  469. :h3.Marker
  470.  
  471. :p.There is a total of ten markers which may be set anywhere in open 
  472. windows. Markers are global, which means, that a marker not only contains 
  473. the cursor line and column, but also the window index. This may be helpful 
  474. for performing fast window switching, since of course the window of the 
  475. marker jumped to is made to be the current window.
  476.  
  477. :ul.
  478. :li.:hp2.CTRL-g s <n>:ehp2.
  479. :lp.sets marker number <n> at the current position.
  480. :li.:hp2.CTRL-g g <n>:ehp2.
  481. :lp.goes to marker number <n> and activates the corresponding window.
  482. :eul.
  483.  
  484. .* ************************************
  485. :h2.File operations
  486. .* ************************************
  487.  
  488. :p.The following operations always refer to the current window and to
  489. the whole file in the window.
  490.  
  491. :ul.
  492. :li.:hp2.CTRL-e l:ehp2.
  493. :lp.loads a file into the current window. The file in the current window,
  494. and all unsaved changes applied to it, are discarded after a security query.
  495. The name of the file to load is asked for in the 
  496. :link reftype=hd res=12.status line:elink.. If a file with that name is
  497. already contained in another open window, then this is announced and
  498. one can choose to edit that window or nevertheless load the file in the
  499. current window. Note, that the latter causes two possibly different copies
  500. of the same file to be held in :hp4.EHP:ehp4., which could lead to loss
  501. of changes.
  502. :li.:hp2.CTRL-e s:ehp2.
  503. :lp.saves the file contained in the current window. If the 
  504. :link reftype=hd res=14.backupoption:elink. is activated, the file, which
  505. would be going to be overwritten, gets the extension '.bak'. File attributes
  506. (system, hidden etc.) remain as they were when loading the file. New files
  507. are created as non-system, non-hidden and writeable.
  508. :li.:hp2.CTRL-e r:ehp2.
  509. :lp.renames the file and saves it under the new name. The new file name is
  510. asked for in the status line. Note, that the file with the old name is
  511. not deleted. Subsequent saving causes the file to be saved with the new
  512. name.                            
  513. :li.:hp2.CTRL-e m:ehp2.
  514. :lp.saves all modified files. Files not modified are not written to disk
  515. on this command.
  516. :eul.
  517.  
  518. .* ************************************
  519. :h2 res=15.Block operations
  520. .* ************************************
  521.  
  522. :p.:hp4.EHP:ehp4. offers a great variety of block commands. It is important
  523. to know, that :hp4.EHP:ehp4. supports two kinds of blocks. There are
  524. the so-called :hp1.rectangular blocks:ehp1.. They are defined by marking
  525. the upper left corner and the character right to the lower right corner.
  526. The rectangular field between is the block. These blocks are nice to move
  527. parts of tables or comments in a program.
  528.  
  529. :p.The second block kind is the so-called :hp1.normal block:ehp1.. One
  530. marks the first character and the character right to the last character.
  531. All the text between (with line wrapping etc.) belongs to the block.
  532. These blocks are good for moving whole paragraphs or parts of paragraphs.
  533.  
  534. .* ************************************
  535. :h3.Updating of block boundaries
  536. .* ************************************
  537.  
  538. :p.When inserting lines before a block, then the beginning and the end
  539. of the block are moved correspondingly. So the text does not move through
  540. the block, but the marked block moves and the block contents stay the same.
  541. When a line is inserted within the block, then the block end moves one line
  542. down. When characters are inserted or deleted within a block, then the 
  543. resulting block changes depend on the block kind.
  544. :p.For normal blocks if the character was inserted/deleted in the last block 
  545. line (i.e. the block end is on the current line), then the block end moves 
  546. right/left one position.
  547. :p.For rectangular blocks the block remains rectangular with the same width
  548. all the time. That means, that characters may be moved outside/into the
  549. block.
  550.  
  551. .* ************************************
  552. :h3.Blockhighlighting
  553. .* ************************************
  554.  
  555. :p.If a block was correctly marked, i.e. the block end comes after the
  556. block beginning (though you can mark them in any order) and the
  557. :link reftype=hd res=14.blockhighlighting is activated:elink., then
  558. the block is displayed in a color different from the standard text color.
  559. The blockhighlighting can also be turned off via the environment variable
  560. :link reftype=hd res=2.EHPINIT:elink..
  561.  
  562. .* ************************************
  563. :h3.Block oriented commands
  564. .* ************************************
  565.  
  566. :p.Note, that the following commands perform actions on blocks local to
  567. the current window except the commands 'Cut' and 'Paste'. Only with these
  568. two commands it is possible to move blocks between windows.
  569.  
  570. :ul.
  571. :li.:hp2.CTRL-b b:ehp2.
  572. :lp.marks the beginning of a block. The character the cursor is on is the
  573. first one belonging to the block.
  574. :li.:hp2.CTRL-b n:ehp2.
  575. :lp.marks the end of a :link reftype=hd res=15.normal block:elink.. The 
  576. current character is the first one not belonging to the block.
  577. :li.:hp2.CTRL-b r:ehp2.
  578. :lp.marks the end of a :link reftype=hd res=15.rectangular block:elink.. The
  579. current character is the first one not belonging to the block.
  580. :li.:hp2.CTRL-b u:ehp2.
  581. :lp.unmarks the block. That means, that block beginning and block end are
  582. unmarked and that, if it was activated, the blockhighlighting disappears.
  583. :li.:hp2.CTRL-b c:ehp2.
  584. :lp.copies the marked block to the current cursor position. The block is
  585. inserted, so no characters are overwritten. In case of a rectangular block
  586. a check is performed, if insertion of the block does not collide with 
  587. the maximum line length. If it does, then the block is not inserted.
  588. If no block was marked, nothing happens.
  589. :li.:hp2.CTRL-b m:ehp2.
  590. :lp.moves the marked block to the cursor position. As with copying, a
  591. check is done to see, if a rectangular block does not collide with the
  592. maximum line length, if inserted at the cursor position. It is not moved,
  593. if it does collide. If no block was marked, nothing happens.
  594. :li.:hp2.CTRL-b d:ehp2.
  595. :lp.deletes the marked block. You can undo this command by using the
  596. :hp3.block copy:ehp3. command :hp2.CTRL-b c:ehp2.. But note, that this
  597. undoing only works as long as no new block boundary has been set.
  598. Furthermore, the buffered deleted block is discarded when exiting
  599. :hp4.EHP:ehp4. and is not stored in the :link reftype=hd res=4.configuration
  600. file:elink..
  601. :li.:hp2.CTRL-b i:ehp2.
  602. :lp.indents the block by a certain amount of columns to the right or left.
  603. The number of columns is queried in the 
  604. :link reftype=hd res=12.status line:elink.. Providing a positive number
  605. shifts the block to the right, a negative number to the left. Note, that
  606. a negative number with an absolute value greater than the maximum number
  607. of leading spaces in the block leads to loss of characters in such lines,
  608. since they are shifted 'outside the window'. All block lines including block
  609. starting line and block ending line are shifted, except when the block end
  610. is on the first column of a line. Then this line is not shifted left, since
  611. no character of that line belongs to the block. Block start and end column
  612. are shifted also, except the block end column was in the first column. In
  613. this case indenting the block will leave the block end column unchanged.
  614. This will cause the line, where the block end is set, not to fall into
  615. the block, which would be surprising, when indenting the same block again.
  616. :li.:hp2.CTRL-b r:ehp2.
  617. :lp.reads a file, of which the name is asked for in the 
  618. :link reftype=hd res=12.status line:elink. and inserts it at the cursor 
  619. position. The file contents are marked as a 
  620. :link reftype=hd res=15.normal block:elink..
  621. :li.:hp2.CTRL-b w:ehp2.
  622. :lp.writes the marked block to a file, of which the name is asked for
  623. in the status line. This works for 
  624. :link reftype=hd res=15.normal and rectangular blocks:elink..
  625. :li.:hp2.CTRL-b f:ehp2.
  626. :lp.passes the block contents to an external filter (e.g. :hp2.SORT:ehp2.),
  627. deletes the block and inserts the filter outputs as a new block at the
  628. position of the old one. If the filter returns with a non-zero value,
  629. one can decide, whether the results should nevertheless be inserted as block
  630. or if they should be discarded. The former can be useful for programs,
  631. which are known to return non-zero values even if no error occurred.
  632. :lp.Note, that the name of the used filter serves as default for the next
  633. call. Thus the previously used filter name is displayed in the prompt for
  634. the new filter name. If one wants to use the default, one just has to
  635. press :hp2.ENTER:ehp2. without providing the filter name.
  636. :li.:hp2.CTRL-b t:ehp2.
  637. :lp.cuts the block. This is not a cut in the common sense, since it has
  638. become a standard for cut operations to delete the cutted part. This cut
  639. only copies the marked block into the so-called 'paste buffer'.
  640. The contents of the paste buffer can be inserted in any
  641. window, as described in the sequel.
  642. :li.:hp2.CTRL-b p:ehp2.
  643. :lp.pastes the contents of the paste buffer into the current window at the
  644. cursor position. To do this, one previously has to cut a block with the
  645. :hp2.CTRL-b p:ehp2. command. The paste buffer is not emptied by this command.
  646. Hence one can repeatedly insert the same block by iterating the command.
  647. :li.:hp2.Left mouse button with moving:ehp2.
  648. :lp.By pressing the left mouse button on the first block character and
  649. releasing it on the first non-block character, one marks a 
  650. :link reftype=hd res=15.normal block:elink..
  651. :li.:hp2.Right mouse button with moving:ehp2.
  652. :lp.By pressing the right mouse button on the first block character and
  653. releasing it on the first non-block character, one marks a 
  654. :link reftype=hd res=15.rectangular block:elink..
  655. :li.:hp2.Clicking the right mouse button:ehp2.
  656. :lp.has two functions depending on whether a block is marked in the
  657. current window and whether a block is contained in the paste buffer.
  658. If a block is marked in the current window, then the cut command is
  659. performed, storing the block in the paste buffer. In addition the block
  660. is unmarked.
  661. :lp.If no block is marked in the current window, but the paste buffer is
  662. not empty, then the paste buffer contents are inserted at the mouse position
  663. (corresponds to the paste command). If the paste buffer is empty, only
  664. the cursor is positioned at the mouse position.
  665. :li.:hp2.Middle mouse button with left mouse button:ehp2.
  666. :lp.If the middle mouse button is held down and then the left button is
  667. pressed, a block marked in the current window is moved to the mouse position.
  668. If no block was marked in the current window, nothing happens.
  669. :li.:hp2.Middle mouse button with right mouse button:ehp2.
  670. :lp.If the middle mouse button is held down and then the right button is
  671. pressed, a block marked in the current window is deleted.
  672. If no block was marked in the current window, nothing happens.
  673. :eul.
  674.  
  675. .* ************************************
  676. :h2.Window commands
  677. .* ************************************
  678.  
  679. :p.The most obvious feature of :hp4.EHP:ehp4. is the possibility to
  680. edit multiple texts quasi simultaneously by using windows. The editor
  681. functions for the use of windows are explained below.
  682.  
  683. :h2 res=5.Window switching
  684. :ul.
  685. :li.:hp2.CTRL-w p:ehp2.
  686. :lp.makes the window which was previously active become the current window.
  687. Successively using :hp2.CTRL-w p:ehp2. thus jumps back and forth between two
  688. windows.
  689. :li.:hp2.CTRL-w n:ehp2.
  690. :lp.makes the next window the current one (whatever 'next' will be). Only
  691. one this about 'next' is asserted: one can use it to cycle through all
  692. opened windows.
  693. :li.:hp2.CTRL-w d:ehp2.
  694. :lp.makes a window containing a certain file become the current window.
  695. The file name must be entered in the 
  696. :link reftype=hd res=12.status line:elink. after issuing the command.
  697. If no file with the desired name is in any window, one gets the option to
  698. load the specified file into a new window.
  699. :li.:hp2.CTRL-w i:ehp2.
  700. :lp.makes the window with a certain number the current window. The window
  701. number is queried in the status line. If a window with the specified number
  702. does not exist, an error message is displayed.
  703. :li.:hp2.Left mouse button:ehp2.
  704. :lp.By clicking with the left mouse button, the window on which the mouse
  705. points becomes the current window and the cursor is placed on the mouse
  706. position (except the window frame was hit).
  707. :eul.
  708.  
  709. .* ************************************
  710. :h3 res=16.Changing size and position
  711. .* ************************************
  712.  
  713. :p.The size and position of each window can be changed either by using the
  714. corresponding key commands or by using the mouse. In general it is advisable
  715. to use the mouse. Key commands for that take some time to get used to...
  716. :ul.
  717. :li.:hp2.CTRL-w s:ehp2.
  718. :lp.leads to a mode where you can use the cursor keys to resize the
  719. current window. Only the corners of the window frame are displayed. Cursor
  720. keys move the lower right corner. Hitting :hp2.ENTER:ehp2. confirms the
  721. chosen size.
  722. :lp.By pressing 's' during adjustment one can toggle the stepwidth between
  723. 5 and 1.
  724. :li.:hp2.CTRL-w m:ehp2.
  725. :lp.leads to a mode, in which the position of the current window can be
  726. changed. The whole window, of which only the corners are displayed during
  727. movement, can be moved via the cursor keys. As in resizing, pressing 's'
  728. toggles the stepwidth between 5 and 1.
  729. :li.:hp2.CTRL-w t:ehp2.
  730. :lp.:hp4.EHP:ehp4. stores two positions for each window. When a window is
  731. opened, both are set to full size. When you now move or resize the window,
  732. the second stored size/position remains unchanged. You can switch between
  733. these two sizes/positions by using this command. Of course the second
  734. position remains only as long full screen as you don't change it. It is
  735. thus possible to work with two size/position pairs which are both
  736. non-fullscreen.
  737. :li.:hp2.Left mouse button on lower right corner:ehp2.
  738. :lp.By pressing the left mouse button on the lower right window corner
  739. and holding
  740. it down, one can resize the window by moving the mouse with the left button
  741. pressed. As when changing window position by key commands, the window
  742. size is indicated only by its four corners.
  743. Releasing the button confirms the chosen size.
  744. :li.:hp2.Left mouse button on upper window border:ehp2.
  745. :lp.By pressing the left mouse button on the top window border and holding
  746. it down, one can move the window by moving the mouse with the left button
  747. pressed. As when changing window position by key commands, the window
  748. position is indicated only by its four corners.
  749. Releasing the button confirms the chosen position.
  750. :li.:hp2.Left mouse button on upper right corner:ehp2.
  751. :lp.By pressing the left mouse button on the upper right window corner
  752. and holding it down, one can switch between the two window sizes. This 
  753. corresponds to the key command :hp2.CTRL-w t:ehp2..
  754. :eul.
  755.  
  756. .* ************************************
  757. :h3.Open and close windows
  758. .* ************************************
  759.  
  760. :p.:hp4.EHP:ehp4. allows to have as many windows open simultaneously, as 
  761. there are 32-bit integers (though this limit may be somewhat theoretically, 
  762. since memory limits will be much more severe.
  763.  
  764. :ul.
  765. :li.:hp2.CTRL-w o:ehp2.
  766. :lp.asks for the file name in the :link reftype=hd res=12.status line:elink.
  767. and loads the named file into a new window. If the file is already in an
  768. open window, :hp4.EHP:ehp4. asks, whether it is desired to switch to that
  769. window instead of opening a new one.
  770. :lp.The newly opened window is assigned the smallest free window number and
  771. :link reftype=hd res=16.both window sizes:elink. are set to the size of the
  772. screen. The cursor is placed in the first line and the first column
  773. and autoindent is activated, if specified in :link reftype=hd res=2.EHPINIT:elink..
  774. The :link reftype=hd res=9.tab-compression:elink. is activated by default.
  775. The tab length is set to the default 8, if not specified different by command
  776. or via :link reftype=hd res=2.EHPINIT:elink.. The window is put to insert
  777. mode by default and underlining is turned off. 
  778. :link reftype=hd res=8.Shell mode:elink. is deactivated by default.
  779. :li.:hp2.CTRL-w c:ehp2.
  780. :lp.closes the current window. If changes were made to the text (indicated
  781. by :hp2.MODIFIED:ehp2. in the bottom frame border), a confirmation is
  782. requested, avoiding accidental loss of changes.
  783. :eul.
  784.  
  785. .* ************************************
  786. :h2 res=6.Insert and delete
  787. .* ************************************
  788.  
  789. :p.:hp4.EHP:ehp4. distinguishs the insert mode and the overwrite mode.
  790. The mode is local to each window and is indicated in the top frame border
  791. (:hp2.Insert:ehp2. or :hp2.Overwrt:ehp2.). If in insert mode, typed
  792. characters are inserted in the text, in overwrite mode existing characters
  793. are overwritten. In order to switch between modes, use the following:
  794. :ul.
  795. :li.:hp2.Ins:ehp2.
  796. :lp.toggles between insert and overwrite mode
  797. :li.:hp2.Del:ehp2.
  798. :lp.deletes the current character (the one the cursor is on). If there are
  799. characters to the right of the cursor, they are pulled left one position.
  800. If the cursor was right of the end of the line, hitting :hp2.Del:ehp2. causes
  801. the current line to be joined with the subsequent one (see also 
  802. :hp2.CTRL-j:ehp2. described below).
  803. :li.:hp2.Backspace:ehp2.
  804. :lp.deletes the character left to the cursor. Characters to the right of
  805. the cursor including the one the cursor is on are pulled left one position.
  806. If the cursor was on the first column of a line, then the current line is
  807. joined with the line above, provided that the current line was not the first
  808. line of the current file. See also :hp2.CTRL-j:ehp2. described below for 
  809. joining lines.
  810. :li.:hp2.CTRL-t:ehp2.
  811. :lp.deletes all characters beginning with the one under the cursor up to
  812. the last character before the next word. If there is no next word, because
  813. the cursor is placed in the last word of the line, then all characters up
  814. to the end of the line are deleted.
  815. :li.:hp2.CTRL-y:ehp2.
  816. :lp.deletes the current line. It can be restored with :hp2.CTRL-k:ehp2. 
  817. as described below.
  818. :li.:hp2.CTRL-k:ehp2.
  819. :lp.inserts the last deleted line before the current line.
  820. :li.:hp2.CTRL-q:ehp2.
  821. :lp.deletes from the cursor to the right up to the end of the line including
  822. the current character.
  823. :li.:hp2.CTRL-a:ehp2.
  824. :lp.inserts an empty line at the current cursor position. The current line
  825. is thus moved down one line. If :link reftype=hd res=9.autoindent:elink.
  826. is active, then the cursor is indented accoring to the current line. That
  827. means, if e.g. the current line starts with 5 blanks and :hp2.CTRL-a:ehp2.
  828. is performed with autoindent active, then the cursor is positioned in column
  829. 6 of the inserted line. Note, that only non-underlined blanks count for
  830. this purpose, as well as only non-underlined blanks are inserted for
  831. doing the indentation, regardless of the current 
  832. :link reftype=hd res=7.underline mode:elink..
  833. :li.:hp2.CTRL-o:ehp2.
  834. :lp.inserts a line below the current line. If autoindent is active, then
  835. the cursor is indented according to the current line. That
  836. means, if e.g. the current line starts with 5 blanks and :hp2.CTRL-a:ehp2.
  837. is performed with autoindent active, then the cursor is positioned in column
  838. 6 of the inserted line. As with all indentation, underlined blanks do not
  839. count as blanks for determining the indent width. Also, the inserted
  840. blanks are not underlined, no matter what the current 
  841. :link reftype=hd res=7.underline mode:elink. is.
  842. :li.:hp2.ENTER:ehp2.
  843. :lp.If in insert mode, the current line is splitted at the cursor position 
  844. and the part from the cursor to the right is placed in the inserted line. 
  845. The new line is indented according to the splitted line, if :link reftype=hd 
  846. res=9.autoindent:elink. is active. For this indentation always non-underlined
  847. blanks are used, for doing the indentation as well as for determining
  848. the indentation width (see also :link reftype=hd res=7.Underline:elink.). 
  849. The cursor will be located in the first column of the inserted line 
  850. afterwards. If in overwrite mode, then the cursor is placed in the first 
  851. column of the next line, if the current line is not the last line in the 
  852. file. No line is inserted in overwrite mode.
  853. :li.:hp2.CTRL-j:ehp2.
  854. :lp.joins the current line with the subsequent line. First the cursor
  855. is placed two characters behind the end of the current line. Then the
  856. following line is moved to the cursor position, if the length of the
  857. line doesn't exceed 500 characters (see 
  858. :link reftype=hd res=13.Limits and Bugs:elink.). While doing this, leading
  859. blanks are removed from the line moved to the corsor position. So, there
  860. remains exactly one blank character between the current line and the
  861. following line.
  862. :lp.Note the funny feature, that CTRL-ENTER is equal to CTRL-j under OS/2 and
  863. thus invokes the joining of lines.
  864. :eul.
  865.  
  866. .* ************************************
  867. :h2 res=17.Find and replace
  868. .* ************************************
  869.  
  870. :p.Searching with :hp4.EHP:ehp4. supports regular expressions for matching
  871. patterns. All expressions available with :hp2.grep:ehp2. should work with
  872. :hp4.EHP:ehp4., too. If there is much searching done on special characters
  873. like '[' or '.', then regular expressions might slow down work and can 
  874. therefore be turned off by using
  875. :link reftype=hd res=2.EHPINIT:elink. or by command (see 
  876. :link reftype=hd res=14.Miscellaneous:elink. for a description of the 
  877. command) or by option when doing the search.
  878.  
  879. .* ************************************
  880. :h3 res=18.Regular expressions
  881. .* ************************************
  882.  
  883. :p.Regular expression pattern matching is done with the 
  884. :hp2.GNU REGEX:ehp2. package. Thus the recognized expressions should be the 
  885. same as with :hp2.grep:ehp2.. The most important regular expression rules
  886. will now be summarized. Note, that 'X' stands for an arbitrary regular
  887. expression.
  888.  
  889. :dl break=fit.
  890. :dthd.:hp5.Pattern:ehp5.
  891. :ddhd.:hp5.matches:ehp5.
  892. :dt.non-special character
  893. :dd.Each non-special character builds a basic regular expression.
  894. :dt.:hp2..:ehp2. (dot) 
  895. :dd.matches any character.
  896. :dt.:hp2.\(X\):ehp2.
  897. :dd.groups the expression X. May be used nested.
  898. :dt.:hp2.\n:ehp2. 
  899. :dd.where n is a number, refers to the n-th group.
  900. Groups are numbered in increasing order depending on the position
  901. of the left group parenthesis from left to right. The \n refers to the
  902. text matched by the group (not the pattern itself). That means for
  903. example, that '\(oh+\) \1' matches 'oh oh' and 'ohh ohh', but not
  904. 'oh ohh' or 'ohh oh'.
  905. :dt.:hp2.X+:ehp2. 
  906. :dd.matches an non-zero number of subsequent X's.
  907. :dt.:hp2.X*:ehp2. 
  908. :dd.matches an arbitrary number of subsequent X's.
  909. Zero occurrences are included. For example '\(ab\)*' matches 'abab'.
  910. :dt.:hp2.X?:ehp2. 
  911. :dd.matches zero or one occurrence of X.
  912. :dt.:hp2.[Y]:ehp2. 
  913. :dd.matches all characters contained in Y.
  914. Here Y is not an arbitrary regular expression. Instead, Y may consist of
  915. a number of single characters ([yYnN]) and of sequences. Sequences are
  916. specified by the start and the end of the sequence separated by a dash.
  917. For example [a-zA-Z] matches all letters, and [0-9] matches all digits.
  918. :dt.:hp2.^X:ehp2. 
  919. :dd.matches X, if it is found at the beginning of the line.
  920. :dt.:hp2.X$:ehp2. 
  921. :dd.matches X, if it is found at the end of the line.
  922. :dt.:hp2.\<X:ehp2. 
  923. :dd.matches X at the beginning of a word.
  924. :dt.:hp2.X\>:ehp2. 
  925. :dd.matches X at the end of a word.
  926. :dt.:hp2.\:ehp2. 
  927. :dd.is the escape character.
  928. To avoid interpretation of a special character (like '[' or '*'),
  929. such characters must be preceded by a backslash. To search for a backslash
  930. double the backslash ('\\'). Note, that a parenthesis matches itself, while
  931. an escaped parenthesis is good for grouping patterns (see above).
  932. :edl.
  933.  
  934. .* ************************************
  935. :h3 res=22.Find and replace commands
  936. .* ************************************
  937.  
  938. :ul.
  939. :li.:hp2.CTRL-f f:ehp2.
  940. :lp.searches for a pattern, which is asked for in the 
  941. :link reftype=hd res=12.status line:elink.. By default the search is
  942. case sensitive and is directed forward. It starts at the character right to
  943. the cursor (important for repeated searches) and wraps around the end of
  944. the text to the beginning. By default, the search pattern is interpreted as
  945. a :link reftype=hd res=18.regular expression:elink. as used with 
  946. :hp2.grep:ehp2.. See above for
  947. :link reftype=hd res=17.turning regular expressions off:elink. and note
  948. the options 'x' and 'n' explained in the sequel. When the search pattern
  949. is empty, no search is done.
  950. :lp.When the search pattern has been entered, :hp4.EHP:ehp4. asks for
  951. the options in the status line. The following options can be combined as you
  952. like (no options is allowed, too; just press :hp2.ENTER:ehp2.). 
  953. Exceptions are, that :hp2.b:ehp2. and :hp2.e:ehp2. exclude each other and 
  954. that :hp2.r:ehp2. has no effect, if :hp2.b:ehp2. or :hp2.e:ehp2. are used. 
  955. Available are:
  956. :dl compact tsize=15.
  957. :dthd.:hp5.Option:ehp5.
  958. :ddhd.:hp5.Effect:ehp5.
  959. :dt.:hp2.<number>:ehp2. 
  960. :dd.find the <number>th occurrence of the pattern
  961. :dt.:hp2.r:ehp2. 
  962. :dd.search in reverse direction
  963. :dt.:hp2.i:ehp2.
  964. :dd.ignore case (case insensitive search)
  965. :dt.:hp2.w:ehp2.
  966. :dd.find words only (found pattern must be limited by a
  967. :link reftype=hd res=19.word separator:elink.
  968. :dt.:hp2.b:ehp2.
  969. :dd.search from the beginning of the text
  970. :dt.:hp2.e:ehp2.
  971. :dd.search from the end of the text in reverse direction
  972. :dt.:hp2.x:ehp2.
  973. :dd.interpret regular expressions in search pattern
  974. :dt.:hp2.n:ehp2.
  975. :dd.don't interpret regular expressions in search pattern
  976. :edl.
  977. :li.:hp2.CTRL-f r:ehp2.
  978. :lp.ssearches a specified number of times for a pattern and replaces it.
  979. By default, :hp4.EHP:ehp4. asks before replacing a found pattern. This can
  980. be turned off using the options. Another default is, to underline the replace
  981. expression according to the underlining of the first character of the found
  982. pattern. Imagine, the text was 'documentation for editor :hp5.EHP:ehp5. in
  983. INF format', and the replace is started with search pattern 'EHP' and
  984. replace pattern 'VI', then the replacement string is underlined, since the
  985. first letter of the found 'EHP' was underlined. The resulting text is thus
  986. 'documentation for editor :hp5.VI:ehp5. in INF format'. The underlining of
  987. the replace expression can be modified using the options.
  988. Note the difference between the number option with the find and the replace
  989. command: when doing find with option '10', the 10th occurrence is found.
  990. When replacing with option '10', the first 10 occurrences are replaced
  991. (NOT only the 10th occurrence!).
  992. Options are as with find, additionally the following options are available:
  993. :dl compact.
  994. :dthd.:hp5.Option:ehp5.
  995. :ddhd.:hp5.Effect:ehp5.
  996. :dt.:hp2.a:ehp2.
  997. :dd.replace all occurrences in the current file
  998. :dt.:hp2.g:ehp2.
  999. :dd.global: don't ask for replacement
  1000. :dt.:hp2.u:ehp2.
  1001. :dd.underline according to underline state
  1002. This means, that the replace expression underlining is not determined
  1003. from the underline state of the found pattern's first character, but from
  1004. the current underline state in the current window (indicated in the window's
  1005. top border). Thus, if underlining is turned on for the current window, then
  1006. the replace expression is underlined regardless of underlining of the found
  1007. pattern.
  1008. :edl.
  1009. :li.:hp2.CTRL-n:ehp2. or :hp2.CTRL-f a:ehp2.
  1010. :lp.repeats the last search or replace action. The search and replace 
  1011. patterns remain the same. Only the number provided in the options is
  1012. reset to 1 (nevertheless, when doing replace, option a is interpreted as 
  1013. before), and options b and e are removed.
  1014. :eul.
  1015.  
  1016. .* ************************************
  1017. :h3.Find multiple spaces
  1018. .* ************************************
  1019.  
  1020. :p.When searching or replacing, the search pattern may contain blanks.
  1021. Due to :hp4.EHP:ehp4.'s internal representation of text, blanks beyond the
  1022. end of the line are not matched. That implies, that an empty line is not
  1023. matched by a search pattern consisting of one blank. Note this for example,
  1024. if a search is done for 'not ': a 'not' at the end of line is not found
  1025. with this pattern. Use either the w option (for finding words only) or
  1026. construct a suitable :link reftype=hd res=18.regular expression:elink..
  1027.  
  1028. .* ************************************
  1029. :h2 res=9.Tabs and indentation
  1030. .* ************************************
  1031.  
  1032. :p.:hp4.EHP:ehp4. supports two kinds of tabstops: tabs with fixed width
  1033. and tabs depending on word boundaries of the above line. Which kind of tabs
  1034. is used depends on the autoindent mode of the current window.
  1035.  
  1036. :p.Tabs are expanded to spaces in the text. If tab-compression is activated,
  1037. each 8 (independent of the chosen tabwidth) leading spaces on a line are 
  1038. compressed into a tab when the text
  1039. is written to a file. Otherwise they remain spaces. Tab-compression is
  1040. turned on by default.
  1041. :ul.
  1042. :li.:hp2.CTRL-s a:ehp2.
  1043. :lp.toggles the autoindent mode for the current window. The mode is displayed
  1044. in the top window border (:hp2.Insert:ehp2. or :hp2.Overwrt:ehp2.).
  1045. :eul.
  1046.  
  1047. .* ************************************
  1048. :h3.With autoindent
  1049. .* ************************************
  1050.  
  1051. :p.If autoindent is active for the current window, the tabwidth is 
  1052. determined by looking at the line above the current line. The tab forward 
  1053. skips as far as a 'word right' command would skip in the above line. 
  1054. Similar, a tab back skips as far as a 'word left' command would skip in the 
  1055. above line. This is good for indenting comments or for jumping to the same 
  1056. indentation as used in the above line. If the cursor is located beyond the 
  1057. end of the above line, tabs proceed as without autoindent. Note, that tab 
  1058. backward and tab forward are inverse operations except when the cursor is 
  1059. located below the last word of the above line. In this case, the tab forward 
  1060. skips below the position immediately behind the end of the word in the above 
  1061. line, while the tab backward skips below the beginning of that word.
  1062.  
  1063. :p.If a line is splitted in autoindent mode using :hp2.ENTER:ehp2.,
  1064. the line on which the cursor is after the operation is indented that way,
  1065. that it starts below the start of the first word of the above line.
  1066. Inserting a line before or after the current line using :hp2.CTRL-a:ehp2. 
  1067. or :hp2.CTRL-o:ehp2. places the cursor in the column, where the first word
  1068. of the previously current line starts.
  1069.  
  1070. .* ************************************
  1071. :h3.Without autoindent
  1072. .* ************************************
  1073.  
  1074. :p.In this mode the tabwidth is determined only by the predefined tabwidth, 
  1075. which is 8 by default. This tabwidth can be modified by two ways: These are 
  1076. the environment variable :link reftype=hd res=2.EHPINIT:elink. or by the 
  1077. command
  1078.  
  1079. :ul.
  1080. :li.:hp2.CTRL-s t:ehp2.
  1081. :lp.asks for the new tabwidth, which can be entered in the 
  1082. :link reftype=hd res=12.status line:elink.. As default for this input
  1083. yields the currently chosen tabwidth. Thus, pressing :hp2.ENTER:ehp2.
  1084. upon this query keeps the tabwidth unchanged.
  1085. :eul.
  1086.  
  1087. .* ************************************
  1088. :h2 res=26.Repeating
  1089. .* ************************************
  1090.  
  1091. :ul.
  1092. :li.:hp2.CTRL-r:ehp2.
  1093. :lp.repeats a command to specify a certain number of times. :hp4.EHP:ehp4.
  1094. first asks for the number of repetitions in the 
  1095. :link reftype=hd res=12.status line:elink.. Here an empty or zero input
  1096. causes the command to repeat nothing. If a non-zero input was made, the
  1097. command to repeat is asked for. One can enter the command as if it should
  1098. be executed directly with one exception: the :hp2.ENTER:ehp2. key must
  1099. be escaped by prefixing it with :hp2.CTRL-c:ehp2. (see also 
  1100. :link reftype=hd res=20.Controlcodes:elink.), since pressing the 
  1101. :hp2.ENTER:ehp2.-key unescaped will be interpreted as the end of the
  1102. command sequence. Note, that during input of the command the usual help texts will be
  1103. displayed in the status line, if not turned off.
  1104. :lp.Repeating may be nested up to a depth of 20. Note, that 
  1105. :link reftype=hd res=21.macros:elink. also each take one of those nesting
  1106. levels. So, if your command to repeat contains a macro, which itself
  1107. has a nesting depth of say :hp1.n:ehp1., then there must be less than
  1108. 20-:hp1.n:ehp1. nested repeats around it.
  1109. :lp.Look at the following example for a better understanding. It causes
  1110. five new lines to be inserted at the cursor position, where each of them
  1111. is filled with the string 'hello':
  1112. :dl compact tsize=18.
  1113. :dthd.:hp5.Key commands:ehp5.
  1114. :ddhd.:hp5.Effect:ehp5.
  1115. :dt.:hp2.CTRL-r:ehp2.
  1116. :dd.For invoking the repeat command
  1117. :dt.:hp2.5 ENTER:ehp2.
  1118. :dd.For specifying the number of repetitions
  1119. :dt.:hp2.CTRL-c:ehp2.
  1120. :dd.For escaping the subsequent :hp2.ENTER:ehp2.
  1121. :dt.:hp2.ENTER:ehp2.
  1122. :dd.For inserting the new line at the cursor position
  1123. :dt.:hp2.hello:ehp2.
  1124. :dd.The text to be inserted in the new line
  1125. :dt.:hp2.ENTER:ehp2.
  1126. :dd.For terminating the command sequence to repeat
  1127. :edl.
  1128. :li.:hp2.CTRL-n:ehp2. or :hp2.CTRL-f a:ehp2.
  1129. :lp.repeats the last :link reftype=hd res=22.find/replace:elink. command.
  1130. :eul.
  1131.  
  1132. .* ************************************
  1133. :h2 res=7.Underline
  1134. .* ************************************
  1135.  
  1136. :p.:hp4.EHP:ehp4. offers the possibility to enter underlined text. See
  1137. :link reftype=hd res=23.Fileformat:elink. for the representation of
  1138. underlined characters in the resulting file and consequences of this
  1139. representation. On the screen, underlined
  1140. characters are displayed in :link reftype=hd res=24.red color:elink..
  1141. The underline mode is local to each window and is displayed in the top
  1142. window border (:hp2.Under:ehp2. in activated underline mode, nothing
  1143. in non-active underline mode).
  1144.  
  1145. :p.If underlining is active, each inserted / overwritten character is
  1146. automatically underlined. Furthermore, underline mode influences 
  1147. :link reftype=hd res=22.replacing:elink.
  1148.  
  1149. :p.To toggle the underline mode for the current window, use the following
  1150. command:
  1151. :ul.
  1152. :li.:hp2.CTRL-u:ehp2.
  1153. :lp.toggles the underline mode for the current window.
  1154. :eul.
  1155.  
  1156. .* ************************************
  1157. :h2.Automatic line break
  1158. .* ************************************
  1159.  
  1160. :p.:hp4.EHP:ehp4. supports a mode for automatically breaking the current 
  1161. line if the cursor otherwise would leave the window to the right. If this 
  1162. linebreak mode is active, then if the cursor would step on the right window 
  1163. margin, the next blank left to the cursor is searched, the cursor is placed 
  1164. right to this position (i.e. on the beginning of the current word) and a 
  1165. newline is executed.
  1166.  
  1167. :p.Note, that if the :link reftype=hd res=9.autoindent mode:elink. is active,
  1168. then the splitting of the current line will indent the new created line 
  1169. according to the current line. If :link reftype=hd
  1170. res=6.overwrite mode:elink. is active, then the cursor will be placed on the
  1171. next line by the execution of the newline. This is exactly what happens in 
  1172. overwrite mode, if the :hp2.ENTER:ehp2. key is hit. This, of course, does not
  1173. make much sense. So the use of :link reftype=hd res=6.insert mode:elink. is 
  1174. highly recommended when using the automatic linebreak mode.
  1175.  
  1176. The automatic linebreak mode is toggled by the following command:
  1177. :ul.
  1178. :li.:hp2.CTRL-s l:ehp2.
  1179. :lp.toggles the automatic linebreak mode
  1180. :eul.
  1181.  
  1182. It can furthermore be set as the default for window creation by the flag 
  1183. :hp2.linebrk:ehp2. in the environment variable :link reftype=hd
  1184. res=2.EHPINIT:elink..
  1185.  
  1186. .* ************************************
  1187. :h2.Reflowing of paragraphs
  1188. .* ************************************
  1189.  
  1190. :p.:hp4.EHP:ehp4. enables its user to reflow paragraphs so that they
  1191. are as close as possible aligned to the right window margin. Reflowing is
  1192. started at the corsor line and ends before the next empty line or the end
  1193. of the text.
  1194.  
  1195. :p.The margins used for reflowing are as follows: As right margin the
  1196. right window margin is used. So if reflowing to a certain size differing
  1197. from the current window size is desired, first resize the window, then
  1198. reflow and afterwards change the window size back to the previous size (see
  1199. also :link reftype=hd res=16.changing window size:elink.). What is taken
  1200. to be the left margin for reflowing depends on the 
  1201. :link reftype=hd res=9.autoindent:elink. flag. If it is set, then the
  1202. column of the first non-whitespace in each current line is taken as the
  1203. left reflow margin. Otherwise, the left reflow margin defaults to column 1.
  1204.  
  1205. :p.Reflowing only breaks lines at blank characters. Character sequences
  1206. separated only by the so-called 'word separators' (e.g. '-' or '.') are not 
  1207. broken apart. The cursor is positioned at the character where it was when
  1208. reflowing started. This may of course be in a line further down and more to
  1209. the left due to moving of that character during the reflowing process.
  1210.  
  1211. :p.Reflowing might not work for two reasons. First, the maximum
  1212. :link reftype=hd res=13.line capacity:elink. of :hp4.EHP:ehp4. might become 
  1213. exceeded by the breaking of the lines. Second, an error may occur, when
  1214. a line is shorter than the reflow width and the subsequent line can't be
  1215. joined because the length would go beyond :hp4.EHP:ehp4.'s 
  1216. :link reftype=hd res=13.line length limit:elink..
  1217.  
  1218. :ul.
  1219. :li.:hp2.CTRL-d:ehp2.
  1220. :lp.initiates the reflowing of the current paragraph beginning at the
  1221. cursor position and ending at the next empty line or the end of the text.
  1222. :eul.
  1223.  
  1224. :p.Handle this command with care, since at the moment there exists no
  1225. undoing for this command. So, if the empty line you expected to be there 
  1226. isn't there, then the results may be quite farther-going than you wanted.
  1227. You can stop this command by hitting :hp2.CTRL-Break:ehp2..
  1228.  
  1229. :p.Regrettably, there was no mnemomical key binding available for this
  1230. command. If someone has a good idea, how :hp2.CTRL-d:ehp2 could be
  1231. seen as an mnemonic for 'reflowing a paragraph', please report!
  1232.  
  1233. .* ************************************
  1234. :h2 res=20.Controlcodes
  1235. .* ************************************
  1236.  
  1237. :p.Controlcodes cannot simply be typed to insert them into the text beacuse
  1238. they would issue a command. Nevertheless :hp4.EHP:ehp4. allows to insert
  1239. them by escaping them with :hp2.CTRL-c:ehp2..
  1240.  
  1241. :ul.
  1242. :li.:hp2.CTRL-c:ehp2. <character>
  1243. :lp.insert <character> into the text, regardless whether it is a controlcode
  1244. or even the escape key. Only a NULL character cannot be inserted at all,
  1245. since this would mark the end of line.
  1246. :hp2.CTRL-c CTRL-c:ehp2. inserts a ^C into the text,
  1247. for example. Characters with ASCII code smaller than 28 are displayed as
  1248. invers character with 64 added to the ASCII code. Thus, e.g. an 
  1249. :hp2.CTRL-a:ehp2. is displayed as invers A.
  1250. :eul.
  1251.  
  1252. .* ************************************
  1253. :h2 res=10.Quit EHP
  1254. .* ************************************
  1255.  
  1256. :ul.
  1257. :li.:hp2.CTRL-x s:ehp2.
  1258. :lp.leaves :hp4.EHP:ehp4. and saves all modified files. If the 
  1259. :link reftype=hd res=14.backupoption:elink. is active, then the old file
  1260. is saved by appending '.bak' to its name. The file attributes remain as
  1261. they were when loading the file, they are set to writeable, non-system and
  1262. non-hidden, if a new file is saved. If files cannot be saved for some 
  1263. reasons, a warning is displayed. :hp4.EHP:ehp4. offers the possibility
  1264. to leave anyway or to proceed with further editing.
  1265. :li.:hp2.CTRL-x n:ehp2.
  1266. :lp.leaves :hp4.EHP:ehp4. without saving modified files. For safety, this
  1267. action has to be acknowledged in the 
  1268. :link reftype=hd res=12.status line:elink..
  1269. :li.:hp2.CTRL-x S:ehp2.
  1270. :lp.leaves :hp4.EHP:ehp4. without saving modified files after an
  1271. acknowledgement, additionally the :link reftype=hd res=25.load file:elink. 
  1272. is executed.
  1273. :li.:hp2.CTRL-x N:ehp2.
  1274. :lp.leaves :hp4.EHP:ehp4. with saving modified files after an
  1275. acknowledgement (see above), additionally the 
  1276. :link reftype=hd res=25.load file:elink. is executed.
  1277. :eul.
  1278.  
  1279. .* ************************************
  1280. :h2.Undo
  1281. .* ************************************
  1282.  
  1283. :p.The only undo implemented so far is restoring a deleted line.
  1284. :ul.
  1285. :li.:hp2.CTRL-k:ehp2.
  1286. :lp.inserts the last deleted line before the current line and makes this
  1287. line the current line. This command can be executed multiply (good for
  1288. quickly duplicating the current line or copying it to many different
  1289. locations).
  1290. :eul.
  1291.  
  1292. .* ************************************
  1293. :h2 res=21.Macros
  1294. .* ************************************
  1295.  
  1296. :p.Macros are user-defined key command sequences (no mouse commands can
  1297. be recorded within a macro). They can be recorded,
  1298. executed, nested and repeated. Note, that the maximum nesting depth
  1299. is limited to 20.
  1300.  
  1301. :ul.
  1302. :li.:hp2.CTRL-v X:ehp2. (where X stands for an upcase letter)
  1303. :lp.records macro X. One can now input the key sequence, which is to
  1304. make up the macro. The maximum macro length is limited to 500 characters
  1305. (the maximum line length), where keys producing more than one character
  1306. are counted as multiple characters. If this sould be a limit to you, make use
  1307. of nested macros and the :link reftype=hd res=26.repeat command:elink..
  1308. During input of the macro, :hp4.EHP:ehp4. displays the usual helptexts in
  1309. the :link reftype=hd res=12.status line:elink., if they are not
  1310. disabled. To finish the macro recording hit the :hp2.ENTER:ehp2. key.
  1311. To insert an :hp2.ENTER:ehp2. into the macro, use the
  1312. :link reftype=hd res=20.controlcode:elink. technique, that means, hit
  1313. :hp2.CTRL-c ENTER:ehp2..
  1314. :li.:hp2.CTRL-v x:ehp2. (where x stands for an lowercase letter)
  1315. :lp.executes macro x. Note that this command cannot be entered when
  1316. an input in the status line is expected (e.g. the search expression).
  1317. If this is desired, the command issuing the status line query has to
  1318. be included in the macro. If the chosen macro is empty, a warning is
  1319. displayed. For stopping the execution of a macro see
  1320. :link reftype=hd res=27.aboring running macros:elink..
  1321. :eul.
  1322.  
  1323. .* ************************************
  1324. :h2 res=27.Abort running macro / repeat function
  1325. .* ************************************
  1326.  
  1327. :p.Running :link reftype=hd res=21.macros:elink. and
  1328. running :link reftype=hd res=26.repeat commands:elink. can be aborted.
  1329. :ul.
  1330. :li.:hp2.CTRL-Break:ehp2.
  1331. :lp.aborts all running macros and repeat commands. That means, that also
  1332. in case of a running nested macro all involved macros are terminated.
  1333. :eul.
  1334.  
  1335. .* ************************************
  1336. :h2 res=8.Shell escape
  1337. .* ************************************
  1338.  
  1339. :p.:hp4.EHP:ehp4. allows to execute shell commands from within a text
  1340. window. This can be done by using the shell mode.
  1341. :ul.
  1342. :li.:hp2.CTRL-s s:ehp2.
  1343. :lp.activates/deactivates the shell mode for the current window.
  1344. If the shell mode is active for the current window can be determined by
  1345. looking at the top border of the current windows's frame. If
  1346. :hp2.SHELL:ehp2. is displayed there, then shell mode is active.
  1347. To issue a command, hit :hp2.ENTER:ehp2.. Then the part of the current line
  1348. to the left of the cursor will be taken as the command and passed to the
  1349. shell. The standard output will be inserted as a block at the cursor
  1350. position. Note that the current line will be split at the point where
  1351. the cursor was when hitting :hp2.ENTER:ehp2..
  1352. :lp.Commands expecting further user input should not be executed in this
  1353. way, since one cannot provide any further interactive input after issuing
  1354. the command. The result of invoking such a program would be, that the
  1355. shell didn't return. In this case the only way to get back to :hp4.EHP:ehp4.
  1356. is to hit :hp2.CTRL-Break:ehp2., which must not be catched by the running
  1357. program.
  1358. :lp.Now, which shell is executed? :hp4.EHP:ehp4. always uses the shell
  1359. specified by the environment variable :hp2.COMSPEC:ehp2.. This is
  1360. usually c&colon.\os2\cmd.exe. If the command execution caused an error, a
  1361. corresponding message is displayed.
  1362. :eul.
  1363.  
  1364.  
  1365. .* ************************************
  1366. :h2 res=14.Miscellaneous
  1367. .* ************************************
  1368.  
  1369. :ul.
  1370. :li.:hp2.CTRL-s a:ehp2.
  1371. :lp.toggles the autoindent mode for the current window. If autoindent is
  1372. active for the current window, this is indicated by the string
  1373. :hp2.Indent:ehp2. in the top frame border.
  1374. :li.:hp2.CTRL-s t:ehp2.
  1375. :lp.sets the tablength for the current window. The new tablength must
  1376. be entered in the :link reftype=hd res=12.status line:elink.. As default
  1377. serves the current tablength, which means, that pressing :hp2.ENTER:ehp2.
  1378. on the query leaves the tablength for the current window unchanged.
  1379. Thus this command can also be used to determine the current window's
  1380. tablength. See also :link reftype=hd res=9.Tabs and indent:elink. for
  1381. more detailed information about tabs.
  1382. :li.:hp2.CTRL-s h:ehp2.
  1383. :lp.toggles activation of helptexts. If active, :hp4.EHP:ehp4. displays
  1384. a helptext in the status line after the first key of a multi-key command.
  1385. If the machine or the display or whatever is too slow or one just wants
  1386. the helptexts to disappear, then helptexts can be deactivated by using
  1387. this command.
  1388. :li.:hp2.CTRL-s b:ehp2.
  1389. :lp.toggles the blockhighlighting. By default, a marked block is
  1390. displayed highlighted. This takes some time. As for helptexts, if this
  1391. seems to be too slow, this highlighting can be deactivated using this 
  1392. command.
  1393. :li.:hp2.CTRL-s c:ehp2.
  1394. :lp.toggles the compression of tabs for the current window (see also
  1395. :link reftype=hd res=9.Tabs and indent:elink.). If activated, this is
  1396. displayed by the string :hp2.Tabs:ehp2. in the top frame border, otherwise
  1397. :hp2.Spcs:ehp2. is displayed indicating, that leading spaces are written
  1398. out as spaces and not compress.
  1399. :li.:hp2.CTRL-s r:ehp2.
  1400. :lp.Toggles the default for the usage of regular expressions in searching.
  1401. This default overrides the default set in 
  1402. :link reftype=hd res=2.EHPINIT:elink. but can be overridden by a search
  1403. option (see also :link reftype=hd res=22.Find and replace:elink.).
  1404. :li.:hp2.CTRL-s .:ehp2.
  1405. :lp.toggles the creation of backup (.bak) files.
  1406. :eul.
  1407.  
  1408. .* **********************************************************************
  1409. :h1 res=4.Configuration file
  1410. .* **********************************************************************
  1411.  
  1412. :p.The configuration file is updated upon leaving :hp4.EHP:ehp4..
  1413. It contains global flags (like blockhighlight, creation of backup files
  1414. etc.), all defined macros, information about window size, position and
  1415. files loaded, and the position of all defined markers. Thus is allows to
  1416. restore the state exactly as it was when reinvoking :hp4.EHP:ehp4..
  1417.  
  1418. :p.When starting :hp4.EHP:ehp4. the configuration file is looked for.
  1419. If it is found, the global flags and the macros are restored in each case.
  1420. If no filenames were specified in the command line, :hp4.EHP:ehp4. loads
  1421. the files specified in the configuration file into windows with the
  1422. same size and position they had when leaving :hp4.EHP:ehp4. the last time.
  1423. In this case the markers are taken over, too.
  1424.  
  1425. :p.The name of the configuration file is :hp2.config.ehp:ehp2. in the
  1426. current directory by default. This is the name, under which it is
  1427. written to disk as well as the name under which it is searched when
  1428. starting :hp4.EHP:ehp4.. This name can be modified by an entry in the
  1429. environment variable :link reftype=hd res=2.EHPINIT:elink.. Via this
  1430. option even an absolute path for the configuration file may be specified
  1431. with the effect of having all ever defined macros global, for example.
  1432.  
  1433.  
  1434. .* **********************************************************************
  1435. :h1 res=2.Environment variable EHPINIT
  1436. .* **********************************************************************
  1437.  
  1438. :p.If an environment variable named :hp2.EHPINIT:ehp2. is provided,
  1439. :hp4.EHP:ehp4. reads its contents before reading the 
  1440. :link reftype=hd res=4.configuration file:elink. (so defaults specified
  1441. in :hp2.EHPINIT:ehp2. may be overridden by values stored in the
  1442. configuration file). Set :hp2.EHPINIT:ehp2. by invoking
  1443.  
  1444. :p.:hp2.SET EHPINIT=...:ehp2.
  1445.  
  1446. :p.from within config.sys or from the command line,
  1447. where ... is an arbitrary concatenation of the following options:
  1448. :dl compact tsize=20 break=fit.
  1449. :dthd.:hp5.Option:ehp5.
  1450. :ddhd.:hp5.Effect:ehp5.
  1451. :dt.autoind
  1452. :dd.Autoindent mode will be active when opening a new window.
  1453. :dt.nohelp
  1454. :dd.Turns off helptexts when :hp4.EHP:ehp4. is invoked.
  1455. :dt.noshowblock
  1456. :dd.Blockhighlighting is turned off by default.
  1457. :dt.nobak
  1458. :dd.When saving a file, no .bak file will be generated, if a file with
  1459. this name already exists.
  1460. :dt.deftab <n>
  1461. :dd.where <n> stands for a number. This sets the default tablength for
  1462. a new window to <n>. <n> must be between 0 and 500.
  1463. :dt.conffile <f>
  1464. :dd.where <f> is a filename path (absolute or relative). This states, that
  1465. the :link reftype=hd res=4.configuration file:elink. is stored and loaded
  1466. with the name <f>. An example might be 
  1467. :hp2.conffile c&colon.\config.ehp:ehp2..
  1468. :dt.loadfile <f>
  1469. :dd.The :link reftype=hd res=25.load file:elink. is searched under path
  1470. <f>.
  1471. :dt.screen <mode>
  1472. :dd.where mode is <#columns>x<#lines> (instead of x also X is possible).
  1473. This sets the screen size to the desired values. The provided values must
  1474. be supported by the video card and the operating system, otherwise
  1475. the values default to 80x25, which should always be possible. An example
  1476. might be :hp2.screen 80x50:ehp2.. Note, that after leaving :hp4.EHP:ehp4.,
  1477. the screen size is switched back to the state it was in before invoking
  1478. :hp4.EHP:ehp4..
  1479. :dt.keys <f>
  1480. :dd.Tells :hp4.EHP:ehp4. to load the keyboard mapping from file <f> instead
  1481. of :hp2.tasten.inf:ehp2. in the current directory. <f> may contain an
  1482. absolute path.
  1483. :dt.noregex
  1484. :dd.Turns off regular expressions for searching be default. This can be
  1485. overridden by setting a global flag within :hp4.EHP:ehp4. by a command
  1486. or by using a :link reftype=hd res=17.search option:elink..
  1487. :dt.linebrk
  1488. :dd.Turns on the automatic linebreak mode by default. It is overruled
  1489. by the manual setting for a window as well as by the values stored for an 
  1490. open window in the :link reftype=hd res=4.config file:elink..
  1491. :dt.clr_text <fg_color+16*bg_color>
  1492. :dd.sets the color of the text display. Note, that the frames around inactive
  1493. windows are drawn with the same color.
  1494. :dt.clr_frame <fg_color+16*bg_color>
  1495. :dd.sets the color of the frame for the active window. This is also the color
  1496. used for highlighting the mnemonical letters in the helpline.
  1497. :dt.clr_under <fg_color+16*bg_color>
  1498. :dd.sets the color used for displaying underlined characters
  1499. :dt.clr_block <fg_color+16*bg_color>
  1500. :dd.sets the color used for displaying a highlighted block.
  1501. :edl.
  1502.  
  1503. :p.The valued for :hp2.fg_color:ehp2. and :hp2.bg_color:ehp2. must lie
  1504. between 0 and 15 (inclusive). The bit values of each of them is defined as
  1505. follows:
  1506.  
  1507. :dl.
  1508. :dt.1
  1509. :dd.blue
  1510. :dt.2
  1511. :dd.green
  1512. :dt.4
  1513. :dd.red
  1514. :dt.8
  1515. :dd.light
  1516. :edl.
  1517.  
  1518. :p.Mixing the color bits yields the color resulting from the standard color
  1519. addition. Perhaps on the fullscreen display a light background may be
  1520. interpreted as blinking background. Check this out, if you want to use the
  1521. light-bit for your background setting and at the same time use :hp4.EHP:ehp4.
  1522. in a fullscreen session.
  1523.  
  1524. .* **********************************************************************
  1525. :h1 res=25.Load file
  1526. .* **********************************************************************
  1527.  
  1528. :p.When :link reftype=hd res=10.leaving :hp4.EHP:ehp4.:elink., this can be
  1529. done by a command, which invokes a batch file after terminating 
  1530. :hp4.EHP:ehp4.. By default, this batch file is searched in the current
  1531. directory and is assumed to be named :hp2.load.cmd:ehp2.. This default
  1532. name can be overridden using the environment variable 
  1533. :link reftype=hd res=2.EHPINIT:elink.. A possible application for this is,
  1534. that load.cmd contains the call of :hp2.make:ehp2. or a different
  1535. compilation tool, which performs some actions on the edited file(s).
  1536.  
  1537. .* **********************************************************************
  1538. :h1 res=30.Keyboard remapping (KM utility)
  1539. .* **********************************************************************
  1540.  
  1541. :p.To make :hp4.EHP:ehp4. suit individual keyboard layout requirements,
  1542. :hp4.EHP:ehp4. comes with a little tools enabling the modification and
  1543. creation of own keaboard layout files. Since this tool is used at most
  1544. only a few times, it is not very gold plated (not to say it is
  1545. rather prehistoric, but it satisfies the basic needs). This tool is called
  1546. :hp4.KM:ehp4., which stands for 'keymake'.
  1547.  
  1548. :p.:hp4.KM:ehp4. can in addition to the modification of keystrokes modify
  1549. the helptexts, that can be displayed after the first key of the command
  1550. in the status line. :hp4.KM:ehp4. assumes the keyboard file, which is
  1551. called :hp2.tasten.inf:ehp2., to be located in the current directory.
  1552. If no such file exists in the current directory, then an empty
  1553. one it is created.
  1554.  
  1555. .* *****************************
  1556. :h2.Main menu
  1557. .* *****************************
  1558.  
  1559. :p.After invoking :hp4.KM:ehp4., it is tried to read in the 
  1560. :hp2.tasten.inf:ehp2. file. If the file has the wrong format, this
  1561. is announced by an error message and the program stops.
  1562. Otherwise, a menu comprising four items will be displayed. These items
  1563. are
  1564.  
  1565. :ul.
  1566. :li.Change key combinations
  1567. :li.Change helptexts
  1568. :li.Show command names
  1569. :li.Exit (save keyboard file)
  1570. :eul.
  1571.  
  1572. :p.Issue the wished alternative by hitting the corresponding number (without
  1573. subsequent :hp2.ENTER:ehp2. key).
  1574.  
  1575. .* *****************************
  1576. :h2.Change keyboard command
  1577. .* *****************************
  1578.  
  1579. :p.This command allows to provide key combinations for one or more commands.
  1580. First the number of the command to change is queried. To answer this
  1581. question, the below described option 
  1582. :link reftype=hd res=28.Show command names:elink. is helpful.
  1583. Inputting the combination number is quitted by hitting :hp2.ENTER:ehp2..
  1584. If -1 is entered as key combination number, changing of combinations
  1585. is finished and :hp4.KM:ehp4. returns to the main menu.
  1586.  
  1587. :p.If a correct number was provided, :hp4.KM:ehp4. shows the current
  1588. mapping in decimal form. If e.g. the combination is currently
  1589. :hp2.CTRL-l:ehp2., then :hp2.12:ehp2. is displayed, since the ASCII
  1590. code for :hp2.CTRL-l:ehp2. is 12.
  1591.  
  1592. :p.If the provided combination number exceeded the number of currently
  1593. defined combinations, then a new command is established with a number
  1594. greater by one than the combination number with the previously highest 
  1595. number. This of course only makes sense, if a new :hp2.tasten.inf:ehp2.
  1596. file is created or indeed :hp4.EHP:ehp4. was extended by one or more
  1597. commands (this would need a source code change as well in :hp4.EHP:ehp4.
  1598. as in :hp4.KM:ehp4.). In the latter case the modification of 
  1599. :hp2.tasten.inf:ehp2. would probably have been done by the programmer
  1600. himself.
  1601.  
  1602. :p.Now :hp4.KM:ehp4. asks for the new key combination. This may consist
  1603. of any key combination not containing '/', since this is the key indicating
  1604. the end of the combination. It cannot be escaped. Note, that of course
  1605. events like 'hitting the left space key' or something like this can not
  1606. be input at this point. When chosing your combinations, note that commands
  1607. must not be prefixes of each other. This implies, that it is unconvenient
  1608. to use normal letters like a,b,c as the first character of a command,
  1609. since then inputting these characters in a text would not be easy anymore.
  1610.  
  1611. :p.The assertion, that commands must not be prefixes of each other is
  1612. checked after inputting the combination.  If a collision is detected,
  1613. this is announced by an error message and the old combination remains
  1614. unchanged. In case the entered combination was a new one (would have been
  1615. added as the last combination with the highest number), if a collision
  1616. is detected, no new combination is created.
  1617.  
  1618. :p.If the provided combination consists of more than one ASCII code
  1619. (note that this is also true for some function and cursor keys),
  1620. all existing helptexts are displayed together with their indices. 
  1621. :hp4.KM:ehp4. asks for a helptext index to link to the current combination.
  1622. This helptext would then be displayed in :hp4.EHP:ehp4.'s 
  1623. :link reftype=hd res=12.status line:elink.
  1624. after hitting the first character of the combination. If no helptext should
  1625. be displayed, then one has to enter -1 as helptext index (this makes sense
  1626. e.g. for the mentioned cases function keys or cursor keys).
  1627. If a non-existing helptext index is input, then :hp4.KM:ehp4. asks
  1628. for a new helptext. See :link reftype=hd res=29.Change helptext:elink. for 
  1629. detailed information about changing and inputting the helptexts.
  1630.  
  1631. .* *****************************
  1632. :h2 res=29.Change helptext
  1633. .* *****************************
  1634.  
  1635. :p.When this option is chosen, first all existing helptexts are displayed
  1636. together with their indices. :hp4.KM:ehp4. then asks for the number
  1637. of the helptext to change. If a non-existing number is entered, the
  1638. query is repeated.
  1639.  
  1640. :p.If the helptexts with the provided number exists, it is displayed
  1641. once more and the new helptext is asked for. To enter letters, that
  1642. should be highlighted in :hp4.EHP:ehp4.'s helptext display, such letters
  1643. must be enclosed in parenthesis. For example '(L)ist' causes 
  1644. ':hp2.L:ehp2.ist' to be displayed. It is convention, to highlight the
  1645. letters, which invoke further commands.
  1646.  
  1647. :p.One terminates the helptext by pressing :hp2.ENTER:ehp2.. :hp4.KM:ehp4.
  1648. continues asking for helptext numbers, until -1 is entered. This returns
  1649. to the main menu.
  1650.  
  1651. .* *****************************
  1652. :h2 res=28.Show command names
  1653. .* *****************************
  1654.  
  1655. :p.All available editor commands are listed together with their numbers
  1656. and names. Using this command makes sense to get out the number of
  1657. a certain command, for which one wants to change the key combination.
  1658.  
  1659. :p.One screen page is filled with command names, then a message is
  1660. displayed, that a keypress is expected for the continuation of the listing.
  1661. Here, pressing :hp2.a:ehp2. aborts the listing. When the listing is
  1662. finished, one further keypressed is asked for, before :hp4.KM:ehp4.
  1663. returns to the main menu.
  1664.  
  1665. .* *****************************
  1666. :h2.Quit KM
  1667. .* *****************************
  1668.  
  1669. :p.This choice terminates the :hp4.KM:ehp4. program. The keyboard
  1670. mapping is written to the file :hp2.tasten.inf:ehp2. in the current
  1671. directory. A possibly existing file will be overwritten. Thus, save
  1672. one working keyboard mapping file to avoid accidental lost of keyboard
  1673. definitions. To suppress the writing of the keyboard mapping, terminate
  1674. the program by hitting :hp2.CTRL-Break:ehp2. from the main menu.
  1675. Note that all changes of this :hp4.KM:ehp4. session will then be lost!
  1676.  
  1677. .* *********************************************************************
  1678. :h1.Appendix
  1679. .* *********************************************************************
  1680.  
  1681. .* *****************************
  1682. :h2 res=13.Limits and bugs
  1683. .* *****************************
  1684.  
  1685. :p.The line length is currently limeted to 500. If this should be a problem
  1686. for anyone, please report (e.g. via email to auhl@fzi.de).
  1687. Each window may contain 2^31-1 lines. There must be no more than
  1688. 2^31-1 windows opened concurrently.
  1689.  
  1690. :p.If the text in a window contains the mamimal number of lines, no blocks
  1691. can be moved anymore.
  1692.  
  1693. :p.An underscore - :hp2.CTRL-h:ehp2. combination ar the end of line is 
  1694. interpreted as underlined space.
  1695.  
  1696. :p.Tabs are not stored as tabs but expanded to spaces except at the
  1697. beginning of a line, where by default each 8 spaces are 
  1698. :link reftype=hd res=9.compressed to one tab:elink.. The latter option
  1699. allows the creation of makefiles, where the tab at the beginning
  1700. of a line has some concrete semantic. Still, this might be a limitation,
  1701. especially, if tables with constant column positions (almost) independent of 
  1702. the column contents should be created (like it is possible with the way,
  1703. VI handles tabs). Also, this might be confusing, if a text containing tabs
  1704. is loaded, modified and saved, because in this case the tabs in the middle
  1705. of a line are converted to blanks.
  1706.  
  1707. .* *****************************
  1708. :h2 res=1.Command reference
  1709. .* *****************************
  1710.  
  1711. :dl compact tsize=20 break=fit.
  1712. :dthd.:hp5.Key combination:ehp5.
  1713. :ddhd.:hp5.Associated command:ehp5.
  1714. :dt.CTRL-a                  
  1715. :dd.Insert line before current line
  1716. :dt.CTRL-b b             
  1717. :dd.mark beginning of block
  1718. :dt.CTRL-b c             
  1719. :dd.copy block to cursor position
  1720. :dt.CTRL-b d             
  1721. :dd.delete block
  1722. :dt.CTRL-b e             
  1723. :dd.end of rectangular block (good for moving comments)
  1724. :dt.CTRL-b f             
  1725. :dd.filter the block (e.g. pass the block through SORT)
  1726. :dt.CTRL-b i             
  1727. :dd.indent block (left or right)
  1728. :dt.CTRL-b m             
  1729. :dd.move block to cursor position
  1730. :dt.CTRL-b n             
  1731. :dd.end of normal block (with line wrap)
  1732. :dt.CTRL-b p             
  1733. :dd.copy contents of paste-buffer to cursor position
  1734. :dt.CTRL-b r             
  1735. :dd.read block from file and insert at cursor position
  1736. :dt.CTRL-b t             
  1737. :dd.cuT block (means: copy it to the paste-buffer)
  1738. :dt.CTRL-b u             
  1739. :dd.unmark block
  1740. :dt.CTRL-b w             
  1741. :dd.write block to file
  1742. :dt.CTRL-c                  
  1743. :dd.abort repeat function or macro execution,
  1744. insert control code in text or command
  1745. :dt.CTRL-d
  1746. :dd.Reflows the current paragraph
  1747. :dt.CTRL-e l             
  1748. :dd.load file in current window
  1749. :dt.CTRL-e m
  1750. :dd.save all modified files
  1751. :dt.CTRL-e r             
  1752. :dd.rename file
  1753. :dt.CTRL-e s             
  1754. :dd.save file contained in current window
  1755. :dt.CTRL-f a             
  1756. :dd.Again (repeat last find or replace)
  1757. :dt.CTRL-f f             
  1758. :dd.find. For options see :link reftype=hd res=17.Find and replace:elink..
  1759. :dt.CTRL-f r             
  1760. :dd.replace. For options see :link reftype=hd res=17.Find and replace:elink..
  1761. :dt.CTRL-g b             
  1762. :dd.goto beginning of marked block
  1763. :dt.CTRL-g e             
  1764. :dd.goto end of marked block
  1765. :dt.CTRL-g g             
  1766. :dd.goto marker
  1767. :dt.CTRL-g l             
  1768. :dd.last position (stored before CTRL-g, jump to beginning
  1769. or end of file, searching, replacing)
  1770. :dt.CTRL-g n             
  1771. :dd.goto line number
  1772. :dt.CTRL-g s             
  1773. :dd.set marker
  1774. :dt.CTRL-j                  
  1775. :dd.Join (append following line to the current one)
  1776. :dt.CTRL-k                  
  1777. :dd.(from the German korrigieren (correct)) insert the
  1778. line deleted last (with CTRL-y) before the current line
  1779. :dt.CTRL-l                  
  1780. :dd.Refresh (VI-like)
  1781. :dt.CTRL-n                  
  1782. :dd.Repeat find/replace (same as CTRL-f-a)
  1783. :dt.CTRL-o                  
  1784. :dd.(VI-like open line) insert line after current line
  1785. :dt.CTRL-p
  1786. :dd.Jumps to the bracket (Parenthesis), that belongs to the one,
  1787. being nearest to the cursor.
  1788. :dt.CTRL-q                  
  1789. :dd.Delete to end-of-line
  1790. :dt.CTRL-r                  
  1791. :dd.repeat a command sequence n times
  1792. :dt.CTRL-s a             
  1793. :dd.autoindent
  1794. :dt.CTRL-s b             
  1795. :dd.blockhighlighting
  1796. :dt.CTRL-s c             
  1797. :dd.tabcompression (blanks may be converted to tabs when
  1798. saving the file, this is the default)
  1799. :dt.CTRL-s l
  1800. :dd.toggle the automatic linebreak mode
  1801. :dt.CTRL-s r             
  1802. :dd.regular expressions (like with GREP) for searching
  1803. :dt.CTRL-s s             
  1804. :dd.shell mode (when pressing RETURN, the part of the
  1805. current line up to the cursor position is passed to
  1806. the shell, the result of the executed command is
  1807. inserted in the text and marked as a block)
  1808. :dt.CTRL-s t             
  1809. :dd.define tablength (how far the TAB key ought to jump,
  1810. not what number of spaces is converted to a tab in
  1811. the text's file representation)
  1812. :dt.CTRL-s .             
  1813. :dd.create .bak-files when overwriting an existing file
  1814. :dt.CTRL-t                  
  1815. :dd.Delete word right to the cursor (Borland-like)
  1816. :dt.CTRL-u                  
  1817. :dd.toggle underline mode (underlined characters are
  1818. represented by _^H<x> where <x> is the underlined
  1819. character).
  1820. :dt.CTRL-v                  
  1821. :dd.Macro definition/execution
  1822. :dt.CTRL-w c             
  1823. :dd.close current window
  1824. :dt.CTRL-w d             
  1825. :dd.switch direct to another window by supplying the
  1826. name of the file contained in the window
  1827. :dt.CTRL-w i             
  1828. :dd.switch to window by index (number of the window
  1829. displayed in the lower left corner of each window)
  1830. :dt.CTRL-w m             
  1831. :dd.move window on the screen
  1832. :dt.CTRL-w n             
  1833. :dd.switch to next window
  1834. :dt.CTRL-w o             
  1835. :dd.open new window
  1836. :dt.CTRL-w p             
  1837. :dd.switch to previous window. This operation is symmetric,
  1838. i.e. applied twice, you get to the window where you
  1839. were before.
  1840. :dt.CTRL-w s             
  1841. :dd.change size of current window
  1842. :dt.CTRL-w t             
  1843. :dd.toggle window size (two sizes exist, both of which
  1844. are initially set to full size)
  1845. :dt.CTRL-x n             
  1846. :dd.exit without saving and without executing the load file
  1847. (the load file is a batch file, which can optionally
  1848. be executed when quitting the editor, e.g. it may
  1849. contain the call to MAKE)
  1850. :dt.CTRL-x s             
  1851. :dd.exit with saving all modified files, but without
  1852. executing the load file
  1853. :dt.CTRL-x N             
  1854. :dd.exit without saving, but with loadfile execution.
  1855. The default name for the load file is load.bat in
  1856. the current directory, but it can be modified using
  1857. the environment variable EHPINIT.
  1858. :dt.CTRL-x S             
  1859. :dd.exit with saving all modified files and executing the
  1860. load file.
  1861. :dt.CTRL-y                  
  1862. :dd.delete the current line (can be undone using :hp2.CTRL-k:ehp2.)
  1863. :dt.arr_left                
  1864. :dd.move cursor left one character
  1865. :dt.arr_right               
  1866. :dd.move cursor right one character
  1867. :dt.arr_up                  
  1868. :dd.move cursor up one character
  1869. :dt.arr_down                
  1870. :dd.move cursor down one character
  1871. :dt.CTRL-arr_left           
  1872. :dd.move cursor left one word
  1873. :dt.CTRL-arr_right          
  1874. :dd.move cursor right one word
  1875. :dt.CTRL-arr_up             
  1876. :dd.move window content including cursor one line up
  1877. :dt.CTRL-arr_down           
  1878. :dd.move window content including cursor one line down
  1879. :dt.ALT-arr_left            
  1880. :dd.make current line appear in the middle of the window
  1881. :dt.ALT-arr_right           
  1882. :dd.move cursor to the middle of the current window
  1883. :dt.ALT-arr_up              
  1884. :dd.make current line first line of window
  1885. :dt.ALT-arr_down            
  1886. :dd.make current line last line of window
  1887. :dt.HOME                    
  1888. :dd.move cursor to beginning of current line
  1889. :dt.END                     
  1890. :dd.move cursor to end of current line
  1891. :dt.CTRL-HOME               
  1892. :dd.move cursor to the first line of the window
  1893. :dt.CTRL-END                
  1894. :dd.move cursor to the last line of the window
  1895. :dt.PgUp                    
  1896. :dd.one page up
  1897. :dt.PgDn                    
  1898. :dd.one page down
  1899. :dt.CTRL-PgUp               
  1900. :dd.go to beginning of file
  1901. :dt.CTRL-PgDn               
  1902. :dd.go to end of file
  1903. :dt.ALT-PgUp                
  1904. :dd.go half a page up
  1905. :dt.ALT-PgDn                
  1906. :dd.go half a page down
  1907. :dt.DEL                     
  1908. :dd.delete character on which the cursor stands
  1909. :dt.Backspace               
  1910. :dd.delete character left to the cursor. If cursor is in
  1911. first column, join current line with the upper line.
  1912. :dt.Ins                     
  1913. :dd.Toggle insert/overwrite mode
  1914. :edl.
  1915.  
  1916. .* *****************************
  1917. :h2 res=11. Mouse commands
  1918. .* *****************************
  1919.  
  1920. :ul.
  1921. :li.Left button:
  1922. :lp.
  1923. :dl compact tsize=52 break=fit.
  1924. :dthd.:hp5.Position:ehp5.
  1925. :ddhd.:hp5.Effect:ehp5.
  1926. :dt.click on text in active window
  1927. :dd.Set the cursor to the current mouse position
  1928. :dt.click on text in non-active window
  1929. :dd.Activate that window (cursor position is NOT set to mouse position). If
  1930. you want to set the cursor to the mouse position in the just activated
  1931. window, click the left button again.
  1932. :dt.click and move on text
  1933. :dd.Mark a normal block (like CTRL-b b and CTRL-b n)
  1934. :dt.click on headline and move
  1935. :dd.Move the window
  1936. :dt.click on lower right corner of window and move
  1937. :dd.Resize that window
  1938. :dt.click on upper left corner
  1939. :dd.Close that window (like CTRL-w c)
  1940. :dt.click on upper right corner
  1941. :dd.Toggle window size (like CTRL-w t)
  1942. :dt.click on arrows in frame
  1943. :dd.Scroll text in arrow direction
  1944. :dt.click on yes/no-question
  1945. :dd.YES
  1946. :edl.
  1947.  
  1948. :li.Right button:
  1949. :lp.
  1950. :dl compact tsize=52 break=fit.
  1951. :dthd.:hp5.Position:ehp5.
  1952. :ddhd.:hp5.Effect:ehp5.
  1953. :dt.click on text with no block marked and no block in PASTE-buffer
  1954. :dd.Set the cursor to the current mouse position and activate that window
  1955. (if not already activated)
  1956. :dt.click on text with no block marked and block in the PASTE-buffer
  1957. :dd.Paste the block from the PASTE-buffer into the text at the current
  1958. mouse position
  1959. :dt.click on text with a block marked in the window clicked to
  1960. :dd.The marked block is stored in the PASTE-buffer and unmarked
  1961. :dt.click and move on text
  1962. :dd.Mark a rectangular block (like CTRL-b b and CTRL-b r)
  1963. :dt.click on headline
  1964. :dd.Push the window into the background
  1965. :dt.click on lower right corner of window and move
  1966. :dd.Resize that window
  1967. :dt.click on upper left corner
  1968. :dd.Close that window (like CTRL-w c)
  1969. :dt.click on upper right corner
  1970. :dd.Toggle window size (like CTRL-w t)
  1971. :dt.click on arrows in frame
  1972. :dd.Scroll text in arrow direction
  1973. :dt.click on yes/no-question
  1974. :dd.NO
  1975. :edl.
  1976.  
  1977. :li.Middle and left: (press middle first, then left, probably three-button-mouse
  1978. is not supported by OS/2 at the moment)
  1979. :lp.
  1980. :dl compact tsize=52 break=fit.
  1981. :dthd.:hp5.Position:ehp5.
  1982. :ddhd.:hp5.Effect:ehp5.
  1983. :dt.on text
  1984. :dd.move marked block to mouseposition
  1985. :edl.
  1986.  
  1987. :li.Middle and right: (press middle first, then right, probably 
  1988. three-button-mouse is not supported by the mouse driver)
  1989. :lp.
  1990. :dl compact tsize=52 break=fit.
  1991. :dthd.:hp5.Position:ehp5.
  1992. :ddhd.:hp5.Effect:ehp5.
  1993. :dt.on text or frame with marked block in window clicked to
  1994. :dd.delete marked block in current window
  1995. :edl.
  1996. :eul.
  1997.  
  1998. :euserdoc.
  1999.