home *** CD-ROM | disk | FTP | other *** search
/ PC Extra Super CD 1998 January / PCPLUS131.iso / DJGPP / V2APPS / RHIDE13B.ZIP / info / editor.inf next >
Encoding:
GNU Info File  |  1997-06-10  |  53.6 KB  |  1,611 lines

  1. This is Info file editor.inf, produced by Makeinfo version 1.67 from the
  2. input file editor.num.
  3.  
  4. START-INFO-DIR-ENTRY
  5. * SET's editor: (editor.inf).           Documentation about the editor.
  6. END-INFO-DIR-ENTRY
  7.  
  8. This is the documentation for SET's Editor.
  9.  
  10. Copyright (C) 1996 Salvador Eduardo Tropea
  11.  
  12. This documentation may be freely distributed with the editor or the RHIDE
  13. package or any part thereof, provided this copyright notice is left intact
  14. on all copies.
  15.  
  16. 
  17. File: editor.inf,  Node: Top,  Prev: (dir),  Up: (dir)
  18.  
  19. EDITOR
  20. ******
  21.  
  22.   The following master menu lists the major topics in this documentation,
  23. including all the indices.
  24.  
  25. * Menu:
  26.  
  27. * Introduction::
  28. * Available commands::
  29. * Keyboard::
  30. * Editing Modes::
  31. * How to contact me::
  32. * Index::
  33. * Index of key commands::
  34.  
  35. 
  36. File: editor.inf,  Node: Introduction,  Next: Available commands,  Prev: Top,  Up: Top
  37.  
  38. 1. Introduction
  39. ***************
  40.  
  41. This document describes the use of the SET's editor; this editor was
  42. designed for programmers and to be used alone or inside of the RHIDE.
  43.  
  44. Permission is granted to make and distribute verbatim copies of this
  45. manual provided the copyright notice and this permission notice are
  46. preserved on all copies.
  47.  
  48. Permission is granted to copy and distribute modified versions of this
  49. manual under the conditions for verbatim copying, provided that the entire
  50. resulting derived work is distributed under the terms of a permission
  51. notice identical to this one.
  52.  
  53.   People who helped me develop the editor:
  54.  
  55.    * ROBERT HöHNE <Robert.Hoehne@Mathematik.TU-Chemnitz.DE> (with some
  56.      base routines, a lot of patchs and reports)
  57.  
  58.    * MOLNAR LASZLO <molnarl@postabank.hu> (with tests and a lot of ideas)
  59.  
  60.    * MAREK HABERSACK <grendel@ananke.amu.edu.pl> (with tests and a lot of
  61.      ideas)
  62.  
  63.   The editor is freeware, but the souce-code of this editor is copyrighthed
  64. by Salvador Eduardo Tropea.    If you want to include the editor in your
  65. application, using the whole code or only a part contact at first ME
  66. <salvador@inti.edu.ar>
  67.  
  68.   This editor is included in the Robert Höhne's RHIDE as a replacement for
  69. the original TVision's editor class.
  70.  
  71. * Menu:
  72.  
  73. * What is SET's Editor?::
  74. * Requirements::
  75. * About the Author::
  76.  
  77. 
  78. File: editor.inf,  Node: What is SET's Editor?,  Next: Requirements,  Prev: Introduction,  Up: Introduction
  79.  
  80. 1.1 What is SET's Editor?
  81. =========================
  82.  
  83.   SET's editor is an editor designed to be used by programmers; the main
  84. target of the editor is C and C++ code but Pascal and Clipper are supported
  85. too.
  86.  
  87.   The editor was designed to be very similar to the DOS standard editors for
  88. C, especially to the Borland's IDE editor. The editor supports a lot of
  89. WordStar style commands plus some CUA commands, so if you used any editor
  90. that uses these kinds of commands you'll find my editor very familiar. On
  91. the other hand if you never used a DOS editor, especially if you use VI on
  92. UNIX machines you'll feel lost. You can configure the keyboard but this
  93. feature is relative limited. *Note How to configure the keyboard::.
  94.  
  95. 
  96. File: editor.inf,  Node: Requirements,  Next: About the Author,  Prev: What is SET's Editor?,  Up: Introduction
  97.  
  98. 1.2 Requirements
  99. ================
  100.  
  101.   For now I only plan to distribute my editor inside of RHIDE requirements
  102. are the requirements of RHIDE.
  103.  
  104. 
  105. File: editor.inf,  Node: About the Author,  Prev: Requirements,  Up: Introduction
  106.  
  107. 1.3 About the Author
  108. ====================
  109.  
  110. 0B██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
  111. 0F██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
  112. 0B██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
  113.  
  114. The editor was made by Salvador Eduardo Tropea (SET), with the help of
  115. Robert Höhne.
  116.  
  117.      E-Mail: SALVADOR EDUARDO TROPEA
  118.      <salvador@inti.edu.ar>
  119.      
  120.      Telephone: (+541) 759-0013
  121.      Postal Address:
  122.      Salvador E. Tropea
  123.      Curapaligüe 2124
  124.      (1678) Caseros - 3 de Febrero
  125.      Prov: Buenos Aires
  126.      Argentina
  127.  
  128. 0B██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
  129. 0F██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
  130. 0B██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████
  131.  
  132. 
  133. File: editor.inf,  Node: Available commands,  Next: Keyboard,  Prev: Introduction,  Up: Top
  134.  
  135. 2. Available commands
  136. *********************
  137.  
  138.   In this section I will explain the features of the editor and the default
  139. configuration for the keyboard. If you want to change some assigment of a
  140. key consult *Note How to configure the keyboard::.
  141.  
  142.   Read the conventions topic first to understand my way of indicating
  143. keystrokes.
  144.  
  145.   In the description of each command I'll include the internal name used by
  146. the editor because this name is needed to configure the keyboard.
  147.  
  148. * Menu:
  149.  
  150. * Conventions::
  151. * Cursor movement::
  152. * Insert and Delete::
  153. * Blocks::
  154. * Pseudo Macros::
  155. * Miscellaneous::
  156.  
  157. 
  158. File: editor.inf,  Node: Conventions,  Next: Cursor movement,  Prev: Available commands,  Up: Available commands
  159.  
  160. 2.1 Conventions
  161. ===============
  162.  
  163.   I'll use some conventions when talking about the keystrokes needed to
  164. trigger some command. So here is what I use:
  165.  
  166.   The key named Ctrl or Control is represented as ^; this key doesn't have
  167. any effect used alone inside of the editor so the ^ symbol will be used
  168. only in conjuntion with the name of some key indicating that you must
  169. press the two keys at the same time; for example: ^A is Ctrl and A at the
  170. same time.  When I say "at the same time" that means: press Ctrl, hold it,
  171. and press the other key; that's the reason to put A after Ctrl.
  172.  
  173.   To indicate a sequence of keystrokes I'll use a - to separate the keys; for
  174. example ^K-B is Ctrl and K at the same time, and then press B; of course
  175. release ^K first.
  176.  
  177.   To indicate keys pressed at the same time other than ^x I'll use the +;
  178. for example: Shift+^Insert is the three keys at the same time!.
  179.  
  180.   I don't think that you are stupid; the editor is written for programmers,
  181. but I'll wanted to make that clear to avoid problems ;-).
  182.  
  183. 
  184. File: editor.inf,  Node: Cursor movement,  Next: Insert and Delete,  Prev: Conventions,  Up: Available commands
  185.  
  186. 2.2 Cursor movement
  187. ===================
  188.  
  189.    * Character left
  190.         - Editor command: `cmbCharLeft'
  191.         - Key: <Left arrow>
  192.         - Alternative: <^S>
  193.  
  194.    * Character right
  195.         - Editor command: `cmbCharRight'
  196.         - Key: <Right arrow>
  197.         - Alternative: <^D>
  198.  
  199.    * Word left
  200.         - Editor command: `cmbWordLeft'
  201.         - Key: <^Left arrow>
  202.         - Alternative: <^A>
  203.  
  204.    * Word right
  205.         - Editor command: `cmbWordRight'
  206.         - Key: <^Right arrow>
  207.         - Alternative: <^F>
  208.  
  209.    * Line up
  210.         - Editor command: `cmbLineUp'
  211.         - Key: <Up arrow>
  212.         - Alternative: <^E>
  213.  
  214.    * Line down
  215.         - Editor command: `cmbLineDown'
  216.         - Key: <Down arrow>
  217.         - Alternative: <^X>
  218.  
  219.    * Scroll the screen one line up
  220.         - Editor command: `cmbScrollUp'
  221.         - Key: <^W>
  222.  
  223.    * Scroll the screen one line down
  224.         - Editor command: `cmbScrollDown'
  225.         - Key: <^Z>
  226.  
  227.    * Page up
  228.         - Editor command: `cmbPageUp'
  229.         - Key: <PgUp>
  230.         - Alternative: <^R>
  231.  
  232.    * Page down
  233.         - Editor command: `cmbPageDown'
  234.         - Key: <PgDn>
  235.         - Alternative: <^C>
  236.  
  237.    * Beginning of line
  238.         - Editor command: `cmbLineStart'
  239.         - Key: <Home>
  240.         - Alternative: <^Q-S>
  241.  
  242.    * End of line
  243.         - Editor command: `cmbLineEnd'
  244.         - Key: <End>
  245.         - Alternative: <^Q-D>
  246.  
  247.    * Top of window
  248.         - Editor command: `cmbFirstLineInScreen'
  249.         - Key: <^Q-E>
  250.         - Alternative: <^Home>
  251.  
  252.    * Bottom of window
  253.         - Editor command: `cmbLastLineInScreen'
  254.         - Key: <^Q-X>
  255.         - Alternative: <^End>
  256.  
  257.    * Top of file
  258.         - Editor command: `cmbTextStart'
  259.         - Key: <^Q-R>
  260.         - Alternative: <^PgUp>
  261.  
  262.    * Bottom of file
  263.         - Editor command: `cmbTextEnd'
  264.         - Key: <^Q-C>
  265.         - Alternative: <^PgDn>
  266.  
  267. 
  268. File: editor.inf,  Node: Insert and Delete,  Next: Blocks,  Prev: Cursor movement,  Up: Available commands
  269.  
  270. 2.3 Insert and Delete
  271. =====================
  272.  
  273.    * Delete the character under cursor
  274.         - Editor command: `cmbDelChar'
  275.         - Key: <Del>
  276.         - Alternative: <^G>
  277.  
  278.    * Delete character to left
  279.         - Editor command: `cmbBackSpace'
  280.         - Key: <Backspace>
  281.         - Alternative: <^H>
  282.  
  283.    * Delete line
  284.         - Editor command: `cmbDelLine'
  285.         - Key: <^Y>
  286.  
  287.    * Delete to end of line
  288.         - Editor command: `cmbDelEnd'
  289.         - Key: <^Q-Y>
  290.         - Alternative: <Shift+^Y>
  291.  
  292.    * Delete to start of line
  293.         - Editor command: `cmbDelStart'
  294.         - Key: <^Q-H>
  295.  
  296.    * Delete word at left
  297.         - Editor command: `cmbDelWord'
  298.         - Key: <^T>
  299.  
  300.    * Delete word at right
  301.         - Editor command: `cmbDelPrevWord'
  302.         - Key: <^Backspace>
  303.  
  304.    * Insert line
  305.         - Editor command: `cmbNewLine'
  306.         - Key: <Enter>
  307.         - Alternative: <^N>
  308.  
  309.    * Insert mode on/off
  310.         - Editor command: `cmbInsMode'
  311.         - Key: <Ins>
  312.         - Alternative: <^V>
  313.  
  314.   When you are in insert mode all the typed characters are inserted in the
  315. text, but when the isert mode is off the typed characters replaces the old
  316. text. The editor starts with insert mode on. You can quickly know the mode
  317. by the cursor shapem when the insert mode is on the cursor is only a line,
  318. but when is off the cursor is a block.
  319.  
  320. 
  321. File: editor.inf,  Node: Blocks,  Next: Pseudo Macros,  Prev: Insert and Delete,  Up: Available commands
  322.  
  323. 2.4 Blocks
  324. ==========
  325.  
  326.   A block is a selected portion of the text, you can copy, delete, etc blocks
  327. of text. The asociated commands are:
  328.  
  329.    * Move to beginning of block
  330.         - Editor command: `cmbGoBeginBlock'
  331.         - Key: <^Q-B>
  332.  
  333.    * Move to end of block
  334.         - Editor command: `cmbGoEndBlock'
  335.         - Key: <^Q-K>
  336.  
  337.    * Set beginning of block
  338.         - Editor command: `cmbStartSelect'
  339.         - Key: <^K-B>
  340.  
  341.    * Set end of block
  342.         - Editor command: `cmbEndSelect'
  343.         - Key: <^K-K>
  344.  
  345.    * Hide/Show block
  346.         - Editor command: `cmbHideSelect'
  347.         - Key: <^K-H>
  348.  
  349.    * Mark line
  350.         - Editor command: `cmbMarkLine'
  351.         - Key: <^K-L>
  352.  
  353.    * Mark word
  354.         - Editor command: `cmbMarkWord'
  355.         - Key: <^K-T>
  356.  
  357.    * Delete block and copy it to the Clipboard
  358.         - Editor command: `cmbCut'
  359.         - Key: <^K-Y>
  360.         - Alternative: <Shift+Del>
  361.  
  362.    * Copy the selected block
  363.         - Editor command: `cmbCopyBlock'
  364.         - Key: <^K-C>
  365.  
  366.    * Move block
  367.         - Editor command: `cmbMoveBlock'
  368.         - Key: <^K+V>
  369.  
  370.    * Copy to Clipboard
  371.         - Editor command: `cmbCopy'
  372.         - Key: <^Ins>
  373.  
  374.    * Delete block
  375.         - Editor command: `cmbClear'
  376.         - Key: <^Del>
  377.  
  378.    * Paste from Clipboard
  379.         - Editor command: `cmbPaste'
  380.         - Key: <Shift+Ins>
  381.  
  382.    * Read block from disk
  383.         - Editor command: `cmbReadBlock'
  384.         - Key: <^K-R>
  385.         - Alternative: <Shift+^R>
  386.  
  387.    * Write block to disk
  388.         - Editor command: `cmbWriteBlock'
  389.         - Key: <^K-W>
  390.         - Alternative: <Shift+^W>
  391.  
  392.    * Replace the block by the Clipboard block
  393.         - Editor command: `cmbReplaceSelect'
  394.         - Key: <Shift+^Ins>
  395.  
  396.    * Convert to Uppercase
  397.         - Editor command: `cmbToUpper'
  398.         - Key: <^K-M>
  399.  
  400.    * Convert to Lowercase
  401.         - Editor command: `cmbToLower'
  402.         - Key: <^K-O>
  403.  
  404.    * Report the length of the block
  405.         - Editor command: `cmbSelLength'
  406.         - Key: <^Q-L>
  407.  
  408. * Menu:
  409.  
  410. * Block modes::
  411. * Selecting with the mouse or Shift::
  412. * Indentation::
  413. * Rectangular Blocks::
  414.  
  415. 
  416. File: editor.inf,  Node: Block modes,  Next: Selecting with the mouse or Shift,  Prev: Blocks,  Up: Blocks
  417.  
  418. 2.4.1 Block modes
  419. -----------------
  420.  
  421.   There are two block modes, one is the mode that the old editor of RHIDE
  422. used this mode is used in CUA programs, and the other is called Persistent
  423. Blocks.
  424.  
  425.   In the normal mode each time you select a block and then insert any thing
  426. on it (with `cmbPaste' or typing anything) the selected block is deleted
  427. and is replaced by the new text.
  428.  
  429.   In persistent blocks the selection is not replaced and is not loosed when
  430. you move the cursor, from here comes the name "Persistent", in this mode
  431. you can use `cmbMoveBlock' and `cmbCopyBlock' without using the Clipboard,
  432. in adition you can apply indentations to the block (*Note Indentation::),
  433. search only inside it, etc, that's makes this mode much more powerful than
  434. the former. If you really like to replace the selected text by the
  435. selection of the Clipboard, that's the default behaviour of the first
  436. mode, you can use the `cmbReplaceSelect' command to achieve the same in
  437. the Persistent Blocks mode.
  438.  
  439. 
  440. File: editor.inf,  Node: Selecting with the mouse or Shift,  Next: Indentation,  Prev: Block modes,  Up: Blocks
  441.  
  442. 2.4.2 Selecting with the mouse or Shift
  443. ---------------------------------------
  444.  
  445.   The described commands for select a block, `cmbStartSelect' and
  446. `cmbEndSelect', are good but not so quick, there are another ways to make
  447. that.
  448.  
  449. * Menu:
  450.  
  451. * Using the mouse::
  452. * Using the Shift key::
  453.  
  454. 
  455. File: editor.inf,  Node: Using the mouse,  Next: Using the Shift key,  Prev: Selecting with the mouse or Shift,  Up: Selecting with the mouse or Shift
  456.  
  457. 2.4.2.1 Using the mouse
  458. .......................
  459.  
  460.   Using the mouse you only need to point the start place, hold the left
  461. button pressed and move the mouse to the end point of your block.
  462.  
  463.   To select a word with the mouse just double click on it.
  464.  
  465. 
  466. File: editor.inf,  Node: Using the Shift key,  Prev: Using the mouse,  Up: Selecting with the mouse or Shift
  467.  
  468. 2.4.2.2 Using the Shift key
  469. ...........................
  470.  
  471.   Using the shift key you only need to move the cursor to the start point,
  472. hold Shift pressed and move the cursor to the end point with any of the
  473. available *Note Cursor movement:: commands.
  474.  
  475. 
  476. File: editor.inf,  Node: Indentation,  Next: Rectangular Blocks,  Prev: Selecting with the mouse or Shift,  Up: Blocks
  477.  
  478. 2.4.3 Indentation
  479. -----------------
  480.  
  481.   You can indent or unindent a block of text using various commands, but you
  482. must keep in mind that by now the editor is limited in the following: If
  483. you are using *Note Real Tabs:: to indent your text don't mix the tabs with
  484. spaces and if you are using spaces to indent don't mix it with real tabs.
  485.  
  486.    * Indent block one position adding an space
  487.         - Editor command: `cmbIndentBlkOne'
  488.         - Key: <^K-I>
  489.         - Alternative: <Shift+^I>
  490.  
  491.    * Unindent block one character - not an x position
  492.         - Editor command: `cmbUnIndentBlkOne'
  493.         - Key: <^K-U>
  494.         - Alternative: <Shift+^U>
  495.  
  496.    * Indent block
  497.         - Editor command: `cmbIndentBlk'
  498.         - Key: <^K-Tab>
  499.  
  500.    * Unindent block
  501.         - Editor command: `cmbUnIndentBlk'
  502.         - Key: <^K-Shift+Tab>
  503.  
  504.    * Smart Indent block
  505.         - Editor command: `cmbSmartIndent'
  506.         - Key: <^Tab>
  507.  
  508.    * Smart Unindent block
  509.         - Editor command: `cmbSmartUnIndent'
  510.         - Key: <Shift+^Tab>
  511.  
  512. `cmbUnIndentBlkOne' unindents deleting one char at the start of the line so
  513. if the line is indented with tabs the line will retroced one tab.
  514.  
  515. `cmbIndentBlk' acts according to the mode, if you are using *Note Real
  516. Tabs::, the editor will put one tab in each line, if you aren't using tabs
  517. the editor will operate the Tab command on the first line and then will use
  518. this amount of indentation in the rest of the block.
  519.  
  520. `cmbUnIndentBlk' acts according to the mode too, in *Note Real Tabs:: mode
  521. is just like `cmbUnIndentBlkOne' deleting one tab but if you don't use
  522. tabs the editor uses Backspace on the first used column of the first line
  523. of the block and unindents the resulting amount all the block.
  524.  
  525. `cmbSmartIndent' and `cmbSmartUnIndent' indents taking as reference the {
  526. } pair where the block is, for example:
  527.        {
  528.      line1
  529.           line2
  530.         line3
  531.        }
  532. After indenting a block that contains line1 to line3 is:
  533.        {
  534.         line1
  535.         line2
  536.         line3
  537.        }
  538. The indentation is made with spaces.
  539.  
  540. 
  541. File: editor.inf,  Node: Rectangular Blocks,  Prev: Indentation,  Up: Blocks
  542.  
  543. 2.4.4 Rectangular Blocks
  544. ------------------------
  545.  
  546.   The editor includes a mode where you can select a rectangular portion of
  547. the text and copy, cut, clear, paste, move, etc this region.    This tool
  548. is very useful for modifications on columns.
  549.  
  550.   Attention! the selected area is based on the X,Y coordinates, for this
  551. reason if you insert lines before the bottom of the rectangle the area
  552. won't be moved. I don't plan to move the area by now because that takes
  553. some CPU and I think that this selection is made just before using it. So
  554. don't report that like a bug is that the way that works.
  555.  
  556.    * Set beginning of block
  557.         - Editor command: `cmbSelRectStart'
  558.         - Key: <^K-Shift+B>
  559.  
  560.    * Set end of block
  561.         - Editor command: `cmbSelRectEnd'
  562.         - Key: <^K-Shift+K>
  563.  
  564.    * Hide/Show block
  565.         - Editor command: `cmbSelRectHide'
  566.         - Key: <^K-Shift+H>
  567.  
  568.    * Delete block and copy it to an special Clipboard
  569.         - Editor command: `cmbSelRectCut'
  570.         - Key: <^K-ShiftT>
  571.  
  572.    * Move block
  573.         - Editor command: `cmbSelRectMove'
  574.         - Key: <^K+Shift+V>
  575.  
  576.    * Copy to special Clipboard
  577.         - Editor command: `cmbSelRectCopy'
  578.         - Key: <^K-Shift+C>
  579.  
  580.    * Delete block
  581.         - Editor command: `cmbSelRectDel'
  582.         - Key: <^K-Shift+L>
  583.  
  584.    * Paste from special Clipboard
  585.         - Editor command: `cmbSelRectPaste'
  586.         - Key: <^K-Shift+P>
  587.  
  588. 
  589. File: editor.inf,  Node: Pseudo Macros,  Next: Miscellaneous,  Prev: Blocks,  Up: Available commands
  590.  
  591. 2.5 Pseudo Macros
  592. =================
  593.  
  594.   This feature is very useful to save some keystrokes, with this feature you
  595. can create a lot of shortcuts to make your life easiest.
  596.  
  597. * Menu:
  598.  
  599. * Please enlight me - what is that?::
  600. * How can I customize that?::
  601.  
  602. 
  603. File: editor.inf,  Node: Please enlight me - what is that?,  Next: How can I customize that?,  Prev: Pseudo Macros,  Up: Pseudo Macros
  604.  
  605. 2.5.1 Please enlight me - what is that?
  606. ---------------------------------------
  607.  
  608.   So now, What's a Pseudo Macro?, It's like a macro but is triggered but two
  609. things: one the text behine the cursor and two the ^Space convination.
  610.  
  611.   And What's the result?, the result is customizable, but by default there
  612. are some predefined behaviours for example, type in a new window the
  613. following two letter: #i and the press ^Space ...
  614.  
  615.   Surprised?, I bet, you got: #include <.h> and the cursor just in the right
  616. place to write the name of the header.
  617.  
  618. Now write the famous stdio word, press End, then Enter twice and now write
  619. the following two letters: ma and then ^Space ...
  620.  
  621.   I bet this time you predicted better what will happend so you aren't so
  622. surprised ;-), anyways Surprise!, now type pr and the magic keys and ....
  623. printf(""); appears, to end the happy history now type Hello world!, that's
  624. all; you wrote the hello world program at a very good speed.
  625.  
  626.   Now you know what I mean when I say pseudo-macros.
  627.  
  628. 
  629. File: editor.inf,  Node: How can I customize that?,  Prev: Please enlight me - what is that?,  Up: Pseudo Macros
  630.  
  631. 2.5.2 How can I customize that?
  632. -------------------------------
  633.  
  634.   Is very easy there is a file called `pmacros.txt' in the same directory
  635. where you started the editor, this file contains the definitions for each
  636. pseudo macro, you can define up to 32 pseudo macros (Please tell me if that
  637. isn't enough I can sacrify some time to make it dinamically expandable).
  638.  
  639.   Important: If you are using RHIDE consult the RHIDE documentation to know
  640. where is stored the `pmacros.txt' file.
  641.  
  642.   The pmacros.txt file is a very good example and is self-explained but I'll
  643. include here one example.
  644.  
  645. Trigger: "i("
  646. Mode: 0,1,0,1,0
  647.  "if (@0)\n"
  648.  "  {@1\n"
  649.    "}\n"
  650.  "\belse\n"
  651.  "  {@2\n"
  652.    "}"
  653.  
  654.   The Trigger keyword defines the two letter behine the cursor that will
  655. trigger the pseudo macro.
  656.  
  657.   The Mode keyword indicates the mode that the editor will use when inserting
  658. the text. The modes are:
  659.  
  660.    * Overwrite *Note Overwrite::
  661.  
  662.    * Autoindent *Note Autoindent::
  663.  
  664.    * Use Tabs *Note Real Tabs::
  665.  
  666.    * Persistent blocks *Note Block modes::
  667.  
  668.    * Intelligent C indent *Note Intelligent C indent::
  669.  
  670.   Each mode can be 0 or 1. The editor will return to the original mode after
  671. expanding the pseudo macro. In this case the macro is expanded in the No
  672. overwrite, autoindent, don't use *Note Real Tabs::, the blocks are
  673. persistent and don't be smart when indenting mode.
  674.  
  675.   The rest is the code to insert surrounded by ". You can use \b to indicate
  676. backspace, \n for newline and \\ to indicate a simple \. If you want to
  677. insert a @ you have to type it twice @@, because this character has a
  678. special meaning (see below).
  679.  
  680.   After the insertion the cursor is positioned in the place marked with @0,
  681. don't forget to signal this point or the cursor will positioned at the
  682. beggining of the file, the places marked with @1, @2 and @3 are saved in
  683. the markers 7, 8 and 9.
  684.  
  685. 
  686. File: editor.inf,  Node: Miscellaneous,  Prev: Pseudo Macros,  Up: Available commands
  687.  
  688. 2.6 Miscellaneous
  689. =================
  690.  
  691.    * Autoindent mode on/off
  692.         - Editor command: `cmbIndentMode'
  693.         - Key: <^O>
  694.  
  695.    * Find place marker
  696.         - Editor command: `cmbGotoMarkn'
  697.         - Key: <^Q n*>
  698.  
  699.    * Set marker
  700.         - Editor command: `cmbPutMarkn'
  701.         - Key: <^K n*>
  702.  
  703.    * Search the { where the cursor is
  704.         - Editor command: cmbSearchStart
  705.         - Key: <^[>
  706.  
  707.    * Search the } where the cursor is
  708.         - Editor command: cmbSearchEnd
  709.         - Key: <^]>
  710.  
  711.    * Search the ( where the cursor is
  712.         - Editor command: `cmbSearchOpPar'
  713.         - Key: <Shift+^9>
  714.  
  715.    * Search the ) where the cursor is
  716.         - Editor command: `cmbSearchClPar'
  717.         - Key: <Shift+^0>
  718.  
  719.    * Search the [ where the cursor is
  720.         - Editor command: `cmbSearchOpCor'
  721.         - Key: <Shift+^[>
  722.  
  723.    * Search the ] where the cursor is
  724.         - Editor command: `cmbSearchClCor'
  725.         - Key: <Shift+^]>
  726.  
  727.    * Undo
  728.         - Editor command: `cmbUndo'
  729.         - Key: <Alt+Backspace>
  730.  
  731.    * PMacro's Trigger
  732.         - Editor command: `cmbExpandCode'
  733.         - Key: <^Space>
  734.  
  735.    * Goto Line
  736.         - Editor command: `cmbGotoEditorLine'
  737.         - Key: <^J>
  738.  
  739.    * Set the options of the current window (Not in RHIDE)
  740.         - Editor command: `cmbSetLocalOptions'
  741.         - Key: <Alt+L>
  742.  
  743.    * Set the default options (Not in RHIDE)
  744.         - Editor command: `cmbSetGlobalOptions'
  745.         - Key: <Alt+G>
  746.  
  747.    * Convert all tabs in spaces
  748.         - Editor command: `cmbExpandAllTabs'
  749.         - Key: <From menu>
  750.  
  751.    * Compact the text using tabs
  752.         - Editor command: `cmbCompactBuffer'
  753.         - Key: <From menu>
  754.  
  755.    * Start recording a macro
  756.         - Editor command: `cmbRecordMacro'
  757.         - Key: <Shift+F10>
  758.  
  759.    * Stop recording a macro
  760.         - Editor command: `cmbStopMacro'
  761.         - Key: <Alt+F10>
  762.  
  763.    * Play a macro
  764.         - Editor command: `cmbPlayMacro'
  765.         - Key: <^F10>
  766.  
  767. 
  768. File: editor.inf,  Node: Keyboard,  Next: Editing Modes,  Prev: Available commands,  Up: Top
  769.  
  770. 3. Keyboard
  771. ***********
  772.  
  773.   The editor uses the scancodes of the keys to trigger the different
  774. commands, you can reconfigure wich key triggers some command. In addition
  775. some non US keyboards can mess the commands so you could need to configure
  776. the editor for your keyboard.
  777.  
  778. * Menu:
  779.  
  780. * How to configure the keyboard::
  781. * A program to find the scancodes::
  782.  
  783. 
  784. File: editor.inf,  Node: How to configure the keyboard,  Next: A program to find the scancodes,  Prev: Keyboard,  Up: Keyboard
  785.  
  786. 3.1 How to configure the keyboard
  787. =================================
  788.  
  789.   There are three associated files with the keyboard: `keybind.cc',
  790. `keybind.h' and `keybind.txt'.
  791.  
  792.   The `keybind.h' file contains the scancode number for each key and the
  793. number for each command, this file is included in `keybind.cc'. If your
  794. keyboard have a different assigment you can modify the scancodes in this
  795. file, for example: The german keyboards have the following sequence QWERTZ
  796. instead of the more common QWERTY, so each time you press ^Z you won't get
  797. the function of ^Z, but ^Y instead. Somebody can live with it, but is
  798. fixable.  To fix this problem you must correct the scancode of the Z key
  799. in keybind.h, of course that this affects to ^Y too. That's only an
  800. example, the most common problem is with the symbols like {, }, [, etc.
  801. If you don't know how to find the scancode of a key take this link *Note A
  802. program to find the scancodes::.
  803.  
  804.   The `keybind.cc' file is a C++ file but you don't need to compile it and
  805. link with the editor, you only need to preprocess it (I used this methode
  806. to save the time needed to make a parser ;-).
  807.  
  808.   To convert this file into a `keybind.txt' file use:
  809.   cpp keybind.cpp > keybind.txt
  810.   Where cpp is the C++ preprocessor. You can use any of the comment systems
  811. available in C++ inside the file.
  812. I guess that you have cpp, but if not you can use another C++ preprocessor
  813. or even Clipper using the /P switch.
  814.  
  815.   There are 7 sections in the file, each section is the keyboard translation
  816. under certain situation.
  817.   The sections are:
  818.  
  819.    * NORMAL    The normal case.
  820.  
  821.    * SHIFT    Shift plus a key.
  822.  
  823.    * CONTROL    Control plus a key.
  824.  
  825.    * SHIFT_CONTROL    Shift plus control plus a key (all at the same time).
  826.  
  827.    * QUICK    A key after ^Q or wherever you defined as `cmbCtrlQ'.
  828.  
  829.    * BLOCK    A key after ^K or wherever you defined as `cmbCtrlK'.
  830.  
  831.    * BLOCK_SHIFT    A key plus shift after ^K or wherever you defined as
  832.      `cmbCtrlK'.
  833.  
  834.    In each section you must put the keyboards and the command asociated to it.
  835.    Use the following syntax:
  836.  
  837.    Scan_Code = Command
  838.  
  839.    Not all the scan codes are available, for example you can't put:
  840.  
  841.    RSHIFT = xxxxx
  842.  
  843.    Look the keybind.h to see the scan codes labels and the available commands.
  844.  
  845. Important Notes:
  846. I)
  847.   The new assignments are mixed with the original assignments, so if you
  848. want to eliminate an old key combination you *must* assign a `cmbNoCommand'
  849. to this key, for example is you wish eliminate the BACKSPACE key and use
  850. the ^O instead you must:
  851. a) put `BACKSPACE = cmbNoCommand' in the NORMAL section.
  852. b) put `O = cmbBackSpace' in the CONTROL section,
  853.   If you only put the b) you'll not eliminate the BACKSPACE key.
  854.  
  855. II)
  856.   If some thing is wrong in the `KEYBIND.TXT' file the program will inform
  857. the error, the line number is for the `KEYBIND.TXT' and not for
  858. `KEYBIND.CPP' (sorry some day I'll fix this).
  859.   To continue the execution press any key and then enter.
  860.  
  861. III)
  862.   You can repeat an assignment, the last win:
  863.  
  864.      BACKSPACE = cmbNoCommand
  865.      BACKSPACE = cmbBackSpace
  866.  
  867.   The first is ignored
  868.  
  869. 
  870. File: editor.inf,  Node: A program to find the scancodes,  Prev: How to configure the keyboard,  Up: Keyboard
  871.  
  872. 3.2 A program to find the scancodes
  873. ===================================
  874.  
  875.   The author of the following program is Robert Höhne:
  876.  
  877. #include <stdio.h>
  878. #include <dos.h>
  879.  
  880. #ifdef __GNUC__
  881. #include <dpmi.h>
  882. #define REGS __dpmi_regs
  883. #define INTR(nr,r) __dpmi_int(nr,&r)
  884. #else
  885. #define REGS union REGS
  886. #define INTR(nr,r) int86(nr,&r,&r)
  887. #endif
  888.  
  889. unsigned short getshiftstate(void)
  890. {
  891.   REGS r;
  892.   r.h.ah = 0x12;
  893.   INTR(0x16,r);
  894.   return r.x.ax;
  895. }
  896.  
  897. unsigned short gkey(void)
  898. {
  899.   REGS r;
  900.   r.h.ah = 0x10;
  901.   INTR(0x16,r);
  902.   if (r.h.al == 0xE0 || r.h.al == 0) r.h.al = 0;
  903.   return r.x.ax;
  904. }
  905.  
  906. main()
  907. {
  908.   unsigned short key;
  909.   do
  910.   {
  911.     key = gkey();
  912.     fprintf(stdout,"%04X, scan code: %d\n",key,key>>8);
  913.   } while (1);
  914. }
  915.  
  916. 
  917. File: editor.inf,  Node: Editing Modes,  Next: How to contact me,  Prev: Keyboard,  Up: Top
  918.  
  919. 4. Editing Modes
  920. ****************
  921.  
  922.   The editor have 9 settings that controls the edition and the aspect of the
  923. editor. Not all can be controlled by RHIDE Beta 6 release 22/10, and I
  924. don't know if all the settings will be supported in the 1.0 release so if
  925. you don't find some setting in RHIDE and you feel that setting is really
  926. needed contact me.
  927.  
  928.   The settings are:
  929.  
  930. * Menu:
  931.  
  932. * Overwrite::
  933. * Autoindent::
  934. * Real Tabs::
  935. * Persistent Blocks::
  936. * Intelligent C indent::
  937. * Column cursor::
  938. * Row cursor::
  939. * Match pair highlight::
  940. * Syntax Highlight::
  941.  
  942. 
  943. File: editor.inf,  Node: Overwrite,  Next: Autoindent,  Prev: Editing Modes,  Up: Editing Modes
  944.  
  945. 4.1 Overwrite
  946. =============
  947.  
  948.   This setting controls if the typed characters are inserted in the buffer or
  949. if the typed characters replaces the original ones, see *Note Insert and
  950. Delete:: for a detailed explanation.
  951.  
  952. 
  953. File: editor.inf,  Node: Autoindent,  Next: Real Tabs,  Prev: Overwrite,  Up: Editing Modes
  954.  
  955. 4.2 Autoindent
  956. ==============
  957.  
  958.   This setting controls what happend when you press <ENTER>, if this setting
  959. is off the cursor goes to the column 1 of a new inserted line. If the mode
  960. is on the editor will try to keep the indentation of the code inserting
  961. spaces.
  962.  
  963. 
  964. File: editor.inf,  Node: Real Tabs,  Next: Persistent Blocks,  Prev: Autoindent,  Up: Editing Modes
  965.  
  966. 4.3 Real Tabs
  967. =============
  968.  
  969.   This setting controls what happend when you press <TAB>, if this setting
  970. is on the editor will insert an ASCII 9 in this place.
  971.  
  972.   An ASCII 9 is a TAB, that means that the width of this char is enough to
  973. move the cursor to the next tabulator column. In the editor the tabulator
  974. columns are equidistant and the positions are controled by the Tab Size
  975. value.
  976.  
  977.   If this setting is off the editor won't put any ASCII 9 in your text,
  978. instead the editor will insert enough spaces to move the cursor to the
  979. next tabulator, but if the cursor is positioned on the first character of
  980. the line the editor will insert spaces to move this position to the next
  981. hole in the line over the line where you are. Confused?, sorry for my
  982. english, an example will clarify that:
  983.  
  984. This is a line over the line where you are
  985.  
  986. That's the line where the cursor is, at column one.
  987.  
  988.   After pressing TAB you'll get:
  989.  
  990. This is a line over the line where you are
  991.  
  992.      That's the line where the cursor is, at column one.
  993.  
  994.   Now can ask, why this? Is that useful?, the answer is that's very useful
  995. to keep your code indented, experiment using that under a line with if,
  996. for, etc.
  997.  
  998.   Another thing controlled by this setting is the behaviour of the
  999. <Backspace> key, when the setting is on the key is just 'delete the
  1000. character at the left of the cursor' but when the setting is off this key
  1001. is the 'Unindent' key.
  1002.  
  1003.   The editor is much more coherent when you choose to use TABs or not use
  1004. tabs, if you mess the two things you'll get some unexpected things,
  1005. specially in the indentation of the blocks.
  1006.  
  1007.   Is better is you ever works in a file without tabs and with this setting
  1008. of, then you'll get much from the editor.
  1009.  
  1010.   Now you can say: But I really need tabs because I'm editing a make file! or
  1011. because I'll send the file using an ultra slow link and I want the
  1012. compression granted by the tabs. In these cases you can first expand all
  1013. tabs, then work without real tabs and at the final of your work compact
  1014. all possible spaces and generate a file with all the tabs that you need
  1015. see the *Note Miscellaneous:: section.
  1016.  
  1017. 
  1018. File: editor.inf,  Node: Persistent Blocks,  Next: Intelligent C indent,  Prev: Real Tabs,  Up: Editing Modes
  1019.  
  1020. 4.4 Persistent Blocks
  1021. =====================
  1022.  
  1023.   This setting controls the behaviour of the selected area.
  1024.  
  1025.   See the chapter *Note Block modes:: for a detailed explanation.
  1026.  
  1027. 
  1028. File: editor.inf,  Node: Intelligent C indent,  Next: Column cursor,  Prev: Persistent Blocks,  Up: Editing Modes
  1029.  
  1030. 4.5 Intelligent C indent
  1031. ========================
  1032.  
  1033.   This mode was designed to be used in joint with the Pseudo Macros (*Note
  1034. Pseudo Macros::) and the Real Tabs mode in off to achieve an easy way to
  1035. indent the code making a better work than the Autoindent mode.
  1036.  
  1037.   In this mode the spaces inserted after pressing <ENTER> depends on the
  1038. first word in the last line, for example, if you have:
  1039.  
  1040.      if (a==b)_
  1041.  
  1042.   With the cursor in the '_' position and press <ENTER> you'll get:
  1043.  
  1044.      if (a==b)
  1045.        _
  1046.  
  1047.   Now you can do two things, 1) press space and write the code that will be
  1048. executed by the if, or 2) if this a multiline code press { and <ENTER>, in
  1049. the last case you'll get:
  1050.  
  1051.      if (a==b)
  1052.        {
  1053.         _
  1054.  
  1055.   Now type your first line of code, press <ENTER>, write your next line,
  1056. press <ENTER> again and then Backspace:
  1057.  
  1058.      if (a==b)
  1059.        {
  1060.         1st line;
  1061.         2nd line;
  1062.        _
  1063.  
  1064.   Now type } and press <ENTER> one more time:
  1065.  
  1066.      if (a==b)
  1067.        {
  1068.         1st line;
  1069.         2nd line;
  1070.        }
  1071.      _
  1072.  
  1073.   As you can see the code is perfectly aligned without a significant work
  1074. from your part.
  1075.  
  1076.   I tried to make this mode as smart as possible, but needs more work, if
  1077. you have suggestions contact me.
  1078.  
  1079.   Another important thing is that this indentation have a personal style,
  1080. mine style ;-), so may be you don't like it. If that's your case you can
  1081. do the following things:
  1082.  
  1083.    * Use another way of indentation offered by the editor, for example,
  1084.      turn on the Real Tabs mode and indent with tabs.
  1085.  
  1086.    * Customize the pmacros.txt file (*Note Pseudo Macros::), actually this
  1087.      file is coherent with this mode.
  1088.  
  1089.    * The editor isn't configurable like Emacs or Brief using a language,
  1090.      but is writed in C++ and chances that you know C++ are over the 90%
  1091.      so contact me and I'll help you to write the routines that you need
  1092.      to get an indentation in your own style :-).
  1093.  
  1094. * Menu:
  1095.  
  1096. * Can you explain to me more about the behavior of this mode?::
  1097. * Do you have more examples?::
  1098.  
  1099. 
  1100. File: editor.inf,  Node: Can you explain to me more about the behavior of this mode?,  Next: Do you have more examples?,  Prev: Intelligent C indent,  Up: Intelligent C indent
  1101.  
  1102. 4.5.1 Can you explain to me more about the behavior of this mode?
  1103. -----------------------------------------------------------------
  1104.  
  1105.   I'll try to describe the behaviour of the mode:
  1106.  
  1107.   Each time you press <ENTER> the editor inserts a '\r\n' string in your
  1108. text, after that the editor searchs one line located above the new line
  1109. that have at least one character inside. This line is taked as reference,
  1110. the editor analizes this line searching for:
  1111.  
  1112.    * The first non blank character on this line.
  1113.  
  1114.    * The first word on this line.
  1115.  
  1116.    * The first parethesis.
  1117.  
  1118.    * The balance of parenthesis on the line.
  1119.  
  1120.    * The last non-blank and non-comment character in the line.
  1121.  
  1122.   Now, if the line contains { at the start the editor goes to the first
  1123. column after the {.
  1124.  
  1125.   If the line contains } at the start the editor will go to the same column
  1126. of the } and then will perform a <Backspace>, is the *Note Real Tabs::
  1127. mode is off that's an unindent.
  1128.  
  1129.   If the line starts with a C++ comment the effect is the same as in *Note
  1130. Autoindent::.
  1131.  
  1132.   If the line starts with a C comment the editor will try to skip the
  1133. comment and analize the rest of the line, but if the comment doesn't end
  1134. on this line the editor will go to the column where the / is.
  1135.  
  1136.   If the line starts with / the editor goes to this column.
  1137.  
  1138.   If the line have more ( than ) the editor will go to the column of the
  1139. first non-blank after the first (.
  1140.  
  1141.   If the line have more ) than ( the editor will search the line where the
  1142. number of parenthesis is balanced, then will analize this line, if the
  1143. whole line still generating an unbalanced situation the editor will go to
  1144. the first used column in the line that was found at first time. But if this
  1145. line lets all balanced the editor will take the first word on the line and
  1146. will use it as reference.
  1147.  
  1148.   At last, and according to the word founded, the editor will use this word
  1149. as reference. The editor recognises the following keywords:
  1150.  
  1151.    * do: +2, no if ;
  1152.  
  1153.    * if: +2, no if ;
  1154.  
  1155.    * for: +3, no if ;
  1156.  
  1157.    * else: +2
  1158.  
  1159.    * case: +5
  1160.  
  1161.    * while: +2, no if ;
  1162.  
  1163.    * switch: +2
  1164.  
  1165.    * break: unindent
  1166.  
  1167.    * return: unindent
  1168.  
  1169.    * default: +5
  1170.  
  1171.   The numbers are how much spaces are added with refernce to the first letter
  1172. of the word. When 'no if ;' is specified means that if the line ends with
  1173. a semicolon the editor will make the same as *Note Autoindent::. The
  1174. unindent is performed with <Backspace>.
  1175.  
  1176.   Seasick? take a look at: *Note Do you have more examples?::.
  1177.  
  1178.   Note: Some of these features was added in v0.2.14 of the editor based on a
  1179. suggestion of <Bradford L. Spencer,stud73@nortel.ca> about of the
  1180. behaviour of the mode on line like this 'printf("Num: %d",' and the rest
  1181. of the parameters in the next line.
  1182.  
  1183. 
  1184. File: editor.inf,  Node: Do you have more examples?,  Prev: Can you explain to me more about the behavior of this mode?,  Up: Intelligent C indent
  1185.  
  1186. 4.5.2 Do you have more examples?
  1187. --------------------------------
  1188.  
  1189.   Well here are some examples, I used some strange convention, is like this:
  1190. if I say 'type a[ENTER]{' is type the a letter, then press <ENTER> and
  1191. finally press the { key.
  1192.  
  1193. Example 1: (Is similar to the explained before but is to show the
  1194. convention)
  1195.  
  1196.      Type:
  1197.      if (a==1)[ENTER]{[ENTER]a=2;[ENTER]b=3;[ENTER][BACKSPACE]}[ENTER]
  1198.      
  1199.      You'll get:
  1200.      
  1201.      if (a==1)
  1202.        {
  1203.         a=2;
  1204.         b=3;
  1205.        }
  1206.      [<--- cursor here]
  1207.  
  1208. Example 2: A switch/case example
  1209.  
  1210.      Type:
  1211.      switch(a)[ENTER]{[ENTER]case 1:[ENTER]a=2;[ENTER]b=3;[ENTER]break;
  1212.      [ENTER]case 2:[ENTER]b=5;[ENTER]break;[ENTER][BACKSPACE]}[ENTER]
  1213.      
  1214.      You'll get:
  1215.      
  1216.      switch(a)
  1217.        {
  1218.         case 1:
  1219.              a=2;
  1220.              b=3;
  1221.              break;
  1222.         case 2:
  1223.              b=5;
  1224.              break;
  1225.        }
  1226.      [<--- cursor here]
  1227.  
  1228. Example 3: A call to a function that takes a lot of parameters
  1229.  
  1230.      Type:
  1231.      printf([SPACE]"Num: %d",[ENTER]a[SPACE]);[ENTER]
  1232.      
  1233.      You'll get:
  1234.      
  1235.      printf( "Num: %d",
  1236.              a );
  1237.      [<--- cursor here]
  1238.  
  1239. Example 4: A lot of parethesis
  1240.  
  1241.      Type:
  1242.      if[SPACE]([SPACE](a==1)[SPACE]||[ENTER](b==2)[SPACE]||[ENTER]
  1243.      c[SPACE])[ENTER]
  1244.      
  1245.      You'll get:
  1246.      
  1247.      if ( (a==1) ||
  1248.           (b==2) ||
  1249.           c )
  1250.        [<--- cursor here]
  1251.  
  1252. Example 5: Comment trying to interfer part 1
  1253.  
  1254.      Type:
  1255.      /*-a-*/for[SPACE](x=1;x;--x)[ENTER]
  1256.      
  1257.      You'll get:
  1258.      
  1259.      /*-a-*/for (x=1;x;--x)
  1260.                [<--- cursor here]
  1261.  
  1262. Example 6: Comment trying to interfer part 2
  1263.  
  1264.      Type:
  1265.      for[SPACE](x=1;x;--x);[SPACE]//-b[ENTER]
  1266.      
  1267.      You'll get:
  1268.      
  1269.      for (x=1;x;--x); //-b
  1270.      [<--- cursor here]
  1271.  
  1272.  Note: Of course you can full the editor but as you can see is relative
  1273. smart ;-).
  1274.  
  1275. 
  1276. File: editor.inf,  Node: Column cursor,  Next: Row cursor,  Prev: Intelligent C indent,  Up: Editing Modes
  1277.  
  1278. 4.6 Column cursor
  1279. =================
  1280.  
  1281.   This setting enables an strange feature of the editor, when this mode is
  1282. on the column where the cursor is is highlithed. This feature is very good
  1283. to check if some part of your code is aligned.
  1284.  
  1285.   If you like this mode but is very uncomfortable to be used all the time
  1286. contact me and if I get enough feedback I'll put this thing in a key to be
  1287. turned on/off quickly.
  1288.  
  1289. 
  1290. File: editor.inf,  Node: Row cursor,  Next: Match pair highlight,  Prev: Column cursor,  Up: Editing Modes
  1291.  
  1292. 4.7 Row cursor
  1293. ==============
  1294.  
  1295.   This setting is similar to the *Note Column cursor:: but acts on the row
  1296. where the cursor is. If you enable the two modes you'll get a cross on the
  1297. screen showing where the cursor is.
  1298.  
  1299. 
  1300. File: editor.inf,  Node: Match pair highlight,  Next: Syntax Highlight,  Prev: Row cursor,  Up: Editing Modes
  1301.  
  1302. 4.8 Match pair highlight
  1303. ========================
  1304.  
  1305.   This mode acts showing the pairs of (/), [/] and {/} on the fly. Each time
  1306. you type one of these symbols the editor will search the matching pair, if
  1307. the editor finds it and the match is on the screen both will be
  1308. highlithed, if the match is outside the screen the editor will inform the
  1309. position on the status line, and if there is no match the editor will
  1310. inform the situation in the status line too.
  1311.  
  1312.   That's very usefull when you are typing complex parenthesis expressions or
  1313. a very nested code. You can use it in joint with the `cmbSearchStart',
  1314. `cmbSearchEnd', `cmbSearchOpPar', `cmbSearchClPar', `cmbSearchOpCor' and
  1315. `cmbSearchClCor' commands (*Note Miscellaneous::).
  1316.  
  1317. 
  1318. File: editor.inf,  Node: Syntax Highlight,  Prev: Match pair highlight,  Up: Editing Modes
  1319.  
  1320. 4.9 Syntax Highlight
  1321. ====================
  1322.  
  1323.   The editor can make highlight the syntax of your code, the available modes
  1324. are:
  1325.  
  1326.    * No highlight, all the code is with the same color.
  1327.  
  1328.    * C/C++ Highlight.
  1329.  
  1330.    * Pascal Highlight.
  1331.  
  1332.    * Clipper Highlight.
  1333.  
  1334.   The kind of highlight is choosed automatically in RHIDE using the extention
  1335. of the file.
  1336.  
  1337.   The C/C++ highlight was designed for the GNU C compiler.
  1338.  
  1339.   The Pascal highlight was designed for the GNU Pascal compiler.
  1340.  
  1341.   The Clipper highlight was designed for the CA-Clipper 5 compiler.
  1342.  
  1343. 
  1344. File: editor.inf,  Node: How to contact me,  Next: Index,  Prev: Editing Modes,  Up: Top
  1345.  
  1346. 5. How to contact me
  1347. ********************
  1348.  
  1349.   If you have any suggestions or bug report contact me in the address showed
  1350. in the *Note About the Author:: section.
  1351.  
  1352. * Menu:
  1353.  
  1354. * Bugs::
  1355.  
  1356. 
  1357. File: editor.inf,  Node: Bugs,  Prev: How to contact me,  Up: How to contact me
  1358.  
  1359. 5.1 Bugs
  1360. ========
  1361.  
  1362.   If you find a bug please contact me, the Undo thing is the most complex
  1363. one and I know that needs some work on it.
  1364.  
  1365.   When reporting a bug please don't say me: Some times some strange thing
  1366. happend ..., try to find a pattern of the problem, what situation triggers
  1367. the problem, with wich file. Then send me the file and the description.
  1368.  
  1369.   When sending to me a file UUEncode it to avoid problems related with the
  1370. e-mail.
  1371.  
  1372. 
  1373. File: editor.inf,  Node: Index,  Next: Index of key commands,  Prev: How to contact me,  Up: Top
  1374.  
  1375. 6. Index
  1376. ********
  1377.  
  1378. * Menu:
  1379.  
  1380. * Autoindent:                            Autoindent.
  1381. * Blocks:                                Blocks.
  1382. * Blocks - Rectangular:                  Rectangular Blocks.
  1383. * Bugs:                                  Bugs.
  1384. * Column cursor:                         Column cursor.
  1385. * How to contact me:                     How to contact me.
  1386. * Indentation:                           Indentation.
  1387. * Insert and Delete:                     Insert and Delete.
  1388. * Intelligent C indent:                  Intelligent C indent.
  1389. * keybind.cc:                            How to configure the keyboard.
  1390. * keybind.h:                             How to configure the keyboard.
  1391. * keybind.txt:                           How to configure the keyboard.
  1392. * Match pair highlight:                  Match pair highlight.
  1393. * Movement:                              Cursor movement.
  1394. * Overwrite:                             Overwrite.
  1395. * Persistent Blocks:                     Block modes.
  1396. * pmacros.txt:                           Pseudo Macros.
  1397. * Pseudo Macros:                         Pseudo Macros.
  1398. * Real Tabs:                             Real Tabs.
  1399. * Row cursor:                            Row cursor.
  1400. * scan codes:                            A program to find the scancodes.
  1401. * TABs:                                  Real Tabs.
  1402. * Use Real Tabs:                         Real Tabs.
  1403.  
  1404. 
  1405. File: editor.inf,  Node: Index of key commands,  Prev: Index,  Up: Top
  1406.  
  1407. 7. Index of key commands
  1408. ************************
  1409.  
  1410. * Menu:
  1411.  
  1412. * Autoindent mode on/off <^O>:           Miscellaneous.
  1413. * Beginning of line <Home>:              Cursor movement.
  1414. * Bottom of file <^Q-C>:                 Cursor movement.
  1415. * Bottom of window <^Q-X>:               Cursor movement.
  1416. * Character left <Left arrow>:           Cursor movement.
  1417. * Character right <Right arrow>:         Cursor movement.
  1418. * cmbBackSpace <Backspace>:              Insert and Delete.
  1419. * cmbCharLeft <Left arrow>:              Cursor movement.
  1420. * cmbCharRight <Right arrow>:            Cursor movement.
  1421. * cmbClear <^Del>:                       Blocks.
  1422. * cmbCompactBuffer <From menu>:          Miscellaneous.
  1423. * cmbCopy <^Ins>:                        Blocks.
  1424. * cmbCopyBlock <^K-C>:                   Blocks.
  1425. * cmbCut <^K-Y>:                         Blocks.
  1426. * cmbDelChar <Del>:                      Insert and Delete.
  1427. * cmbDelEnd <^Q-Y>:                      Insert and Delete.
  1428. * cmbDelLine <^Y>:                       Insert and Delete.
  1429. * cmbDelPrevWord <^Backspace>:           Insert and Delete.
  1430. * cmbDelStart <^Q-H>:                    Insert and Delete.
  1431. * cmbDelWord <^T>:                       Insert and Delete.
  1432. * cmbEndSelect <^K-K>:                   Blocks.
  1433. * cmbExpandAllTabs <From menu>:          Miscellaneous.
  1434. * cmbExpandCode <^Space>:                Miscellaneous.
  1435. * cmbFirstLineInScreen <^Q-E>:           Cursor movement.
  1436. * cmbGoBeginBlock <^Q-B>:                Blocks.
  1437. * cmbGoEndBlock <^Q-K>:                  Blocks.
  1438. * cmbGotoEditorLine <^J>:                Miscellaneous.
  1439. * cmbGotoMarkn <^Q n*>:                  Miscellaneous.
  1440. * cmbHideSelect <^K-H>:                  Blocks.
  1441. * cmbIndentBlk <^K-Tab>:                 Indentation.
  1442. * cmbIndentBlkOne <^K-I>:                Indentation.
  1443. * cmbIndentMode <^O>:                    Miscellaneous.
  1444. * cmbInsMode <Ins>:                      Insert and Delete.
  1445. * cmbLastLineInScreen <^Q-X>:            Cursor movement.
  1446. * cmbLineDown <Down arrow>:              Cursor movement.
  1447. * cmbLineEnd <End>:                      Cursor movement.
  1448. * cmbLineStart <Home>:                   Cursor movement.
  1449. * cmbLineUp <Up arrow>:                  Cursor movement.
  1450. * cmbMarkLine <^K-L>:                    Blocks.
  1451. * cmbMarkWord <^K-T>:                    Blocks.
  1452. * cmbMoveBlock <^K+V>:                   Blocks.
  1453. * cmbNewLine <Enter>:                    Insert and Delete.
  1454. * cmbPageDown <PgDn>:                    Cursor movement.
  1455. * cmbPageUp <PgUp>:                      Cursor movement.
  1456. * cmbPaste <Shift+Ins>:                  Blocks.
  1457. * cmbPlayMacro <^F10>:                   Miscellaneous.
  1458. * cmbPutMarkn <^K n*>:                   Miscellaneous.
  1459. * cmbReadBlock <^K-R>:                   Blocks.
  1460. * cmbRecordMacro <Shift+F10>:            Miscellaneous.
  1461. * cmbReplaceSelect <Shift+^Ins>:         Blocks.
  1462. * cmbScrollDown <^Z>:                    Cursor movement.
  1463. * cmbScrollUp <^W>:                      Cursor movement.
  1464. * cmbSearchClCor <Shift+^]>:             Miscellaneous.
  1465. * cmbSearchClPar <Shift+^0>:             Miscellaneous.
  1466. * cmbSearchOpCor <Shift+^[>:             Miscellaneous.
  1467. * cmbSearchOpPar <Shift+^9>:             Miscellaneous.
  1468. * cmbSearchStart <^[>:                   Miscellaneous.
  1469. * cmbSearchStart <^]>:                   Miscellaneous.
  1470. * cmbSelLength <^Q-L>:                   Blocks.
  1471. * cmbSelRectCopy <^K-Shift+C>:           Rectangular Blocks.
  1472. * cmbSelRectCut <^K-ShiftT>:             Rectangular Blocks.
  1473. * cmbSelRectDel <^K-Shift+L>:            Rectangular Blocks.
  1474. * cmbSelRectEnd <^K-Shift+K>:            Rectangular Blocks.
  1475. * cmbSelRectHide <^K-Shift+H>:           Rectangular Blocks.
  1476. * cmbSelRectMove <^K+Shift+V>:           Rectangular Blocks.
  1477. * cmbSelRectPaste <^K-Shift+P>:          Rectangular Blocks.
  1478. * cmbSelRectStart <^K-Shift+B>:          Rectangular Blocks.
  1479. * cmbSetGlobalOptions <Alt+G>:           Miscellaneous.
  1480. * cmbSetLocalOptions <Alt+L>:            Miscellaneous.
  1481. * cmbSmartIndent <^Tab>:                 Indentation.
  1482. * cmbSmartUnIndent <Shift+^Tab>:         Indentation.
  1483. * cmbStartSelect <^K-B>:                 Blocks.
  1484. * cmbStopMacro <Alt+F10>:                Miscellaneous.
  1485. * cmbTextEnd <^Q-C>:                     Cursor movement.
  1486. * cmbTextStart <^Q-R>:                   Cursor movement.
  1487. * cmbToLower <^K-O>:                     Blocks.
  1488. * cmbToUpper <^K-M>:                     Blocks.
  1489. * cmbUndo <Alt+Backspace>:               Miscellaneous.
  1490. * cmbUnIndentBlk <^K-Shift+Tab>:         Indentation.
  1491. * cmbUnIndentBlkOne <^K-U>:              Indentation.
  1492. * cmbWordLeft <^Left arrow>:             Cursor movement.
  1493. * cmbWordRight <^Right arrow>:           Cursor movement.
  1494. * cmbWriteBlock <^K-W>:                  Blocks.
  1495. * Compact the text using tabs <From menu>: Miscellaneous.
  1496. * Convert all tabs in spaces <From menu>: Miscellaneous.
  1497. * Convert to Lowercase <^K-O>:           Blocks.
  1498. * Convert to Uppercase <^K-M>:           Blocks.
  1499. * Copy the selected block <^K-C>:        Blocks.
  1500. * Copy to Clipboard <^Ins>:              Blocks.
  1501. * Copy to special Clipboard <^K-Shift+C>: Rectangular Blocks.
  1502. * Delete block <^Del>:                   Blocks.
  1503. * Delete block <^K-Shift+L>:             Rectangular Blocks.
  1504. * Delete block and copy it to an special Clipboard <^K-ShiftT>: Rectangular Blocks.
  1505. * Delete block and copy it to the Clipboard <^K-Y>: Blocks.
  1506. * Delete character to left <Backspace>:  Insert and Delete.
  1507. * Delete line <^Y>:                      Insert and Delete.
  1508. * Delete the character under cursor <Del>: Insert and Delete.
  1509. * Delete to end of line <^Q-Y>:          Insert and Delete.
  1510. * Delete to start of line <^Q-H>:        Insert and Delete.
  1511. * Delete word at left <^T>:              Insert and Delete.
  1512. * Delete word at right <^Backspace>:     Insert and Delete.
  1513. * End of line <End>:                     Cursor movement.
  1514. * Find place marker <^Q n*>:             Miscellaneous.
  1515. * Goto Line <^J>:                        Miscellaneous.
  1516. * Hide/Show block <^K-H>:                Blocks.
  1517. * Hide/Show block <^K-Shift+H>:          Rectangular Blocks.
  1518. * Indent block <^K-Tab>:                 Indentation.
  1519. * Indent block one position adding an space <^K-I>: Indentation.
  1520. * Insert line <Enter>:                   Insert and Delete.
  1521. * Insert mode on/off <Ins>:              Insert and Delete.
  1522. * Line down <Down arrow>:                Cursor movement.
  1523. * Line up <Up arrow>:                    Cursor movement.
  1524. * Mark line <^K-L>:                      Blocks.
  1525. * Mark word <^K-T>:                      Blocks.
  1526. * Move block <^K+Shift+V>:               Rectangular Blocks.
  1527. * Move block <^K+V>:                     Blocks.
  1528. * Move to beginning of block <^Q-B>:     Blocks.
  1529. * Move to end of block <^Q-K>:           Blocks.
  1530. * Page down <PgDn>:                      Cursor movement.
  1531. * Page up <PgUp>:                        Cursor movement.
  1532. * Paste from Clipboard <Shift+Ins>:      Blocks.
  1533. * Paste from special Clipboard <^K-Shift+P>: Rectangular Blocks.
  1534. * Play a macro <^F10>:                   Miscellaneous.
  1535. * PMacro's Trigger <^Space>:             Miscellaneous.
  1536. * Read block from disk <^K-R>:           Blocks.
  1537. * Replace the block by the Clipboard block <Shift+^Ins>: Blocks.
  1538. * Report the length of the block <^Q-L>: Blocks.
  1539. * Scroll the screen one line down <^Z>:  Cursor movement.
  1540. * Scroll the screen one line up <^W>:    Cursor movement.
  1541. * Search the ( where the cursor is <Shift+^9>: Miscellaneous.
  1542. * Search the ) where the cursor is <Shift+^0>: Miscellaneous.
  1543. * Search the [ where the cursor is <Shift+^[>: Miscellaneous.
  1544. * Search the ] where the cursor is <Shift+^]>: Miscellaneous.
  1545. * Search the { where the cursor is <^[>: Miscellaneous.
  1546. * Search the { where the cursor is <^]>: Miscellaneous.
  1547. * Set beginning of block <^K-B>:         Blocks.
  1548. * Set beginning of block <^K-Shift+B>:   Rectangular Blocks.
  1549. * Set end of block <^K-K>:               Blocks.
  1550. * Set end of block <^K-Shift+K>:         Rectangular Blocks.
  1551. * Set marker <^K n*>:                    Miscellaneous.
  1552. * Set the default options (Not in RHIDE) <Alt+G>: Miscellaneous.
  1553. * Set the options of the current window (Not in RHIDE) <Alt+L>: Miscellaneous.
  1554. * Smart Indent block <^Tab>:             Indentation.
  1555. * Smart Unindent block <Shift+^Tab>:     Indentation.
  1556. * Start recording a macro <Shift+F10>:   Miscellaneous.
  1557. * Stop recording a macro <Alt+F10>:      Miscellaneous.
  1558. * Top of file <^Q-R>:                    Cursor movement.
  1559. * Top of window <^Q-E>:                  Cursor movement.
  1560. * Undo <Alt+Backspace>:                  Miscellaneous.
  1561. * Unindent block <^K-Shift+Tab>:         Indentation.
  1562. * Unindent block one character - not an x position <^K-U>: Indentation.
  1563. * Word left <^Left arrow>:               Cursor movement.
  1564. * Word right <^Right arrow>:             Cursor movement.
  1565. * Write block to disk <^K-W>:            Blocks.
  1566.  
  1567.  
  1568. 
  1569. Tag Table:
  1570. Node: Top464
  1571. Node: Introduction778
  1572. Node: What is SET's Editor?2207
  1573. Node: Requirements3039
  1574. Node: About the Author3296
  1575. Node: Available commands4561
  1576. Node: Conventions5244
  1577. Node: Cursor movement6386
  1578. Node: Insert and Delete8325
  1579. Node: Blocks9770
  1580. Node: Block modes11940
  1581. Node: Selecting with the mouse or Shift13039
  1582. Node: Using the mouse13436
  1583. Node: Using the Shift key13838
  1584. Node: Indentation14199
  1585. Node: Rectangular Blocks16363
  1586. Node: Pseudo Macros17835
  1587. Node: Please enlight me - what is that?18189
  1588. Node: How can I customize that?19335
  1589. Node: Miscellaneous21299
  1590. Node: Keyboard23296
  1591. Node: How to configure the keyboard23746
  1592. Node: A program to find the scancodes26968
  1593. Node: Editing Modes27788
  1594. Node: Overwrite28433
  1595. Node: Autoindent28750
  1596. Node: Real Tabs29109
  1597. Node: Persistent Blocks31332
  1598. Node: Intelligent C indent31618
  1599. Node: Can you explain to me more about the behavior of this mode?33747
  1600. Node: Do you have more examples?36653
  1601. Node: Column cursor38643
  1602. Node: Row cursor39161
  1603. Node: Match pair highlight39489
  1604. Node: Syntax Highlight40332
  1605. Node: How to contact me40968
  1606. Node: Bugs41241
  1607. Node: Index41767
  1608. Node: Index of key commands43237
  1609. 
  1610. End Tag Table
  1611.