home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / utilities / utilsd / edit / !lEdit / !Help < prev    next >
Text File  |  1995-04-19  |  31KB  |  965 lines

  1.  
  2.  
  3.                        lEdit Version 0.1 [35] 
  4.                        ----------------------
  5.  
  6.  
  7.                       ** (c) 1995 Urs Bisang **
  8.                       ** all rights reserved **
  9.                      
  10.  
  11.         This version of lEdit is FREEWARE!
  12.         Permission is granted for unrestricted non-commercial use!  
  13.  
  14.         If you find this program useful or if you have comments, requests
  15.         or bug reports please send a mail to:
  16.  
  17.         bisang@solid.phys.ethz.ch
  18.                      
  19.                      
  20. Purpose: (Lisp) Text Editor
  21. --------
  22.  
  23. Introduction:
  24. -------------
  25.  
  26. lEdit is a fully programmable and customizable text editor,
  27. that has special support for Lisp programming. It supports
  28. automatic identing of the source code and the matching of parentheses.
  29. This features can be disabled and then lEdit behaves like a
  30. simple text editor comparable to !Edit. The main difference to other 
  31. editors is that lEdit has a builtin Lisp interpreter. Actually lEdit 
  32. has been programmed in Lisp itself, so you can customize lEdit in 
  33. every way simply by changing the lisp source code and without any
  34. recompilation of the application. In this way lEdit is similar to Emacs 
  35. (the famous editor in the Unix world). Of course lEdit is much simpler 
  36. and less powerful than Emacs, but it is also much smaller!  
  37.    
  38.  
  39. Description:
  40. ------------
  41.  
  42. The handling of lEdit is very similar to !Edit. So mainly the
  43. differences to !Edit will be described. For further details on
  44. !Edit see for example the 'RISC OS3 Applications Guide'.
  45.  
  46.  
  47. Short description of the menu entries:
  48.  
  49. Misc    
  50. ----   
  51. Info : tells you about lEdit
  52. New View : opens additional window on the same text
  53. Print : sends the document to the printer
  54. Undo : allows you to step backwards through the most recent changes
  55.        you have made to the text
  56. Redo : allows you to remake the changes you reversed with Undo
  57.  
  58. Save
  59. ----
  60. Save: save the file in the current window
  61.  
  62. Select
  63. ------
  64. Save : saves the current text selection
  65. Print : prints the current text selection
  66. Copy : copies current text selection (to the cursor position)
  67. Move : moves current text selection (to the cursor position)
  68. Delete : deletes current text selection
  69. Clear : clears (unselects) current text selection
  70.  
  71. Edit
  72. ----
  73. Find       : allows you to search for a string in your file
  74.              the find utility is rather simple and no wildcarded
  75.              search strings are allowed. but escape characters such
  76.              as '\n', '\r', etc  and \xhh (hh : hex number)
  77.              are allowed to search for non printable characters.
  78.              \\ is used for the backslash itself
  79. Goto       : allows you to move to a specific line in your file
  80. Replace    : allows you to replace a string or all matching strings
  81.              through another string in your file. the replace facility
  82.              has been separated from the find facility in order to 
  83.              prevent replacing accidently
  84. Ident      : ident line, that contains the cursor according to the rules
  85.              of lisp identing
  86. RecIdent   : ident lines recursively starting from the line that
  87.              contains the cursor
  88. Match ()   : shows the matching opening parenthesis if the cursor is
  89.              right behind a closing parenthesis. if there is no matching
  90.              parenthesis or the cursor is not behind a closing 
  91.              parenthesis nothing happens. in this context parenthesis
  92.              means only 'real' parentheses that belong to a lisp 
  93.              construct (list) and do not stand inside a string, 
  94.              comment or character constant
  95. Next (     : moves the cursor to the next opening 'real' parenthesis.
  96. Previous ( : moves to previous (matching!) opening 'real' parenthesis
  97. Next )     : moves to next (matching!) closing 'real' parenthesis
  98. Previous ) : moves to previous closing 'real' parenthesis
  99.  
  100. Options
  101. -------
  102. Ident : enable/disable automatic line identing after typing return
  103. Match : enable/disable automatic highlighting of matching parentheses
  104.         after typing a closing parentheses
  105. Amimate : enable/disable animation of cursor on identing
  106.  
  107.             
  108. Important keystroke and keystroke equivalents:
  109.  
  110.  
  111. Function keys:
  112. --------------    
  113.  
  114. F3 : save file
  115. F4 : find string
  116. F5 : goto line
  117. F6 : replace string
  118. F8 : undo
  119. F9 : redo
  120.  
  121. Control keys:
  122. -------------
  123.  
  124. Ctrl-C : copies current text selection (to the cursor position)
  125. Ctrl-V : moves current text selection (to the cursor position)
  126. Ctrl-X : deletes current text selection
  127. Ctrl-Z : clears (unselects) current text selection
  128. Ctrl-R : ident lines recursively
  129. Ctrl-M : show matching 'real' parenthesis
  130. Ctrl-A : moves the cursor to the next opening 'real' parenthesis.
  131. Ctrl-S : moves to previous (matching!) opening 'real' parenthesis
  132. Ctrl-D : moves to next (matching!) closing 'real' parenthesis
  133. Ctrl-F : moves to previous closing 'real' parenthesis
  134.  
  135. Misc keys:
  136. ----------
  137.  
  138. TAB       : ident line, that contains the cursor according to the rules
  139.             of lisp identing
  140. SHIFT-TAB : similar to TAB but differing slightly in the rules 
  141.             for identation (has fixed identation under symbols
  142.             as default)
  143. HOME      : moves cursor to beginning of the file
  144. DELETE    : deletes character to the left of cursor
  145. BACKSPACE : deletes character to the left of cursor
  146. COPY      : deletes character to the right of cursor
  147. PAGE-UP   : scroll up one window
  148. PAGE-DOWN : scroll down one window
  149. ARROW-UP  : moves cursor one line up
  150. ARROW-DOWN : moves cursor one line down
  151. ARROW-LEFT : moves cursor to the left
  152. ARROW-RIGHT : moves cursor to the right
  153. CTRL-ARROW-UP : moves cursor to the beginning of the file
  154. CTRL-ARROW-DOWN : moves cursor to the end of the file
  155. CTRL-ARROW-LEFT : moves the cursor to the first non blank charakter
  156.                   of the line
  157. CTRL-ARROW-RIGHT: moves cursor to the end of line
  158.  
  159.  
  160. Customising lEdit:
  161. ------------------
  162.  
  163. The fonts and the colors used for lEdit can be set using the
  164. environment variable lEdit$Options. The options are the same as
  165. for !Edit (see the 'RISC OS3 Applications Guide'). Apart from
  166. that you can change lEdit in every way (menu layout, keyboard shortcuts,
  167. default settings, new functionality, etc.) by simply patching the 
  168. source code, contained in the 'l' directory within the lEdit
  169. application directory. This flexibilty is the main advantage of lEdit 
  170. over other editors, due to fact that lEdit is fully programable with its
  171. builtin Lisp interpreter. You could even write a 'completely new editor'
  172. or additional modes with support for other programming languages like
  173. C, C++, Pascal, etc. 
  174.  
  175. There are some special forms like define, defun, lambda, let, etc.,
  176. which have special identation rules. If you have additional forms,
  177. that should be idented in a special way, you can do this by 
  178. extending the function 'txt-lisp-ident-hook' located in the file
  179. lispmode. Extensions should be straightforward. 
  180.  
  181.  
  182.  
  183. The Lisp Interpreter:
  184. ---------------------
  185.  
  186. The builtin Lisp interpreter is very simple and supports
  187. only two data types: strings and cons cells. Integer and float numbers
  188. are represented as strings, therefore the interpreter is rather slow.
  189. The idea is to use the interpreter as an extension language and
  190. to implement computational intensive task as additional primitives in C.
  191. The naming conventions for the primitives are similar to Scheme.
  192. But it ist not Scheme! The interpreter is dynamically scoped, and
  193. no closures and no continuations are supported. The interpreter is not
  194. tail-recursive! There are additional types like hash tables or opaque 
  195. types (menus, text buffers, etc.) which are not first class and 'exist' 
  196. only bound to a symbol. If you want to pass an object of such a type to a 
  197. function or primitive, you have to pass the symbol which this object 
  198. is bound to. If you evaluate a symbol which is bound to an object of
  199. such an non first class type, it evaluates not to its value, but rather to 
  200. its own name. I call this form of evaluation 'name evaluation' and 
  201. the corresponding non first class types name evaluation types. 
  202. The introduction of this rather strange name evaluation is necessary, as
  203. the interpreter supports only strings and cons cells. Functions that
  204. expect name evaluati