home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / utility / patch / sten103 / changes.101 next >
Text File  |  1990-03-28  |  18KB  |  352 lines

  1.                             STeno Changes for 1.01
  2.                             ======================
  3.  
  4.  
  5. Paragraph Reformatting
  6. ----------------------
  7.  
  8. Without a doubt the most-requested enhancement has been the ability to
  9. reformat paragraphs.  This has been added, and works similar to the way
  10. Word Writer and 1ST Word handle reformatting, ie. just move the insertion
  11. point to the first line of a paragraph and hit F10.  There is even a
  12. "Reformat to End" command which will reformat all of the text from the
  13. insertion point to the end of the file.
  14.  
  15. The important point to note about reformatting is that the indent level is
  16. based on the *second* line of the paragraph.  Actually, the line after the
  17. cursor is used to determine the indent level, so if you press F10 with the
  18. cursor in the middle of a paragraph you'll find that the rest of the
  19. paragraph is formatted according to the indent level of the line after the
  20. one you started on.  This allows you to easily have both indents and
  21. outdents without having to resort to special types of tabs like Word Writer
  22. ('indent' vs. 'tab').
  23.  
  24. For reformatting purposes a 'paragraph' is considered to be a sequence of
  25. non-blank lines.  A line which contains only blanks or tabs is considered
  26. to be a blank line.
  27.  
  28. The right margin is taken from the current word wrap column, so you can
  29. vary your right margins simply by altering the wrap column as you reformat.
  30.  
  31. Fully justified text is not currently supported for 2 reasons.
  32.  
  33. 1   Justified text *without* proportional typefaces or micro-spacing 
  34.     between characters and words is, for most people, harder to read than
  35.     text which is "ragged right".  This is due to the fact that extra
  36.     blanks are inserted between words in order to make a flush right
  37.     margin, which causes the inter-word spacing to vary within a single
  38.     line.  Using a proportional typeface or a non- proportional typeface
  39.     with microspacing allows the padding to be distributed evenly between
  40.     all of the words and characters in the line, resulting in consistent
  41.     inter-word spacing and much more readable text.  Just to prove my
  42.     point, check out the paragraph for reason #2.  It didn't turn out all
  43.     that horrible, but imagine how much of a pain it would be to read if
  44.     all of its lines were as bad a the third one.  Yeah, I know.... this is
  45.     basically my way of saying "nahhhh, I don't really want to bother doing
  46.     that".
  47.  
  48. 2   STeno  deals with pure-ASCII files, and there is no foolproof way 
  49.     to  handle justified  paragraphs properly  with pure-ASCII files.  
  50.     The  problem  arises  when  you  decide  to reformat  a justified 
  51.     paragraph.  If extra ASCII blank characters were used in order to 
  52.     fill lines, then many words would have two or more blanks between 
  53.     them  and STeno  wouldn't be  able to  tell which  ones were  the 
  54.     'real' ones.  Some editors solve this by reducing multiple blanks 
  55.     to  single blanks  and then  apply some typical  formatting rules 
  56.     putting  two  blanks  after  periods,  question  marks, etc.   Of 
  57.     course,  if  you  didn't  want  to  have  two blanks  after those 
  58.     characters you'd have to go and manually fix things up again, and 
  59.     any  tables or other special alignment  you used blanks for would 
  60.     be pretty much wrecked.
  61.  
  62.     The way around this of course is to use some special character rather
  63.     than an ASCII blank to represent the inserted spaces, but saving such a
  64.     character would produce a file that is not pure ASCII, and would
  65.     probably not be too readable from the desktop.  Since STeno uses plain
  66.     old ASCII this is not an acceptable solution.
  67.  
  68.  
  69. Printer Setup
  70. -------------
  71.  
  72. There is a new "Printer Setup..." command under the File menu.  Selecting
  73. this brings up a new dialog which allows you to set several options which
  74. control the way STeno prints:
  75.  
  76. o   The Printer Initialization String is simply a sequence of characters
  77.     that STeno will send to the printer at the beginning of a "Print" or
  78.     "Print Selection" command.  You can enter up to 35 characters on this
  79.     line; what you put, if anything, will depend on your printer.  Most
  80.     printers use different escape sequences to select things like the font
  81.     type and pitch - check your printer manual to find out what you need to
  82.     use.
  83.  
  84.     Since the dialog uses a standard GEM text entry field there are a 
  85.     couple of things to point out.  You can't enter a 'null' character
  86.     (ASCII value of 0) since that character is used by GEM (and STeno) to
  87.     terminate the string itself.  Fortunately most printers will accept
  88.     either null or the '0' character interchangeably.  The other quirk is
  89.     that the commercial at sign '@' cannot be used as the first character
  90.     in the string.  If GEM sees '@' as the first character it automatically
  91.     considers the entire string to be empty.  This was probably done as a
  92.     convenience for programmers when creating dialog boxes, but turns out
  93.     to be more of a hindrance than a help.  You'll notice this in *any* GEM
  94.     dialog text fields that allow arbitrary text (you won't see it in
  95.     places that allow only digits or filename characters however), so it
  96.     has nothing to do with STeno.
  97.  
  98. o   The Left Margin Offset field lets you specify how many blanks to add to
  99.     the beginning of each line sent to the printer.
  100.  
  101. o   The Print Page Banner box determines whether or not STeno will print a
  102.     three line banner at the start of each page.  The first line will
  103.     contain the file name, the current date, and the page number.  Lines
  104.     two and three are left blank to separate the banner from the file data.
  105.  
  106. o   The Send LF after CR box tells STeno to send either a carriage return /
  107.     linefeed pair after each line or just a carriage return. If your
  108.     printer is configured for automatic line feeds after carriage returns
  109.     then make sure this box is off (white).
  110.  
  111. o   The Lines Per Page entry tells STeno the *total* number of lines 
  112.     available on each page.  Subtract 6 from this number to determine the
  113.     number of lines STeno will print the file data on.  Three lines are
  114.     used at the start of the page for the banner and three are left at the
  115.     bottom of the page in order to skip over the page break.  Naturally,
  116.     STeno won't let you set this number to less than 7.
  117.  
  118.     Setting the Lines Per Page to 0 effectively sets up an infinitely 
  119.     large page.  You'll get the banner at the beginning of printing if it's
  120.     enabled, but you won't get any other blank lines inserted during
  121.     printing.
  122.  
  123. o   The Use FF To Eject Page box tells STeno whether or not it should send
  124.     an ASCII form-feed character (value 12) to go to the next page or
  125.     simply enough blank lines to reach the Lines Per Page total.  Virtually
  126.     all printers understand the form-feed character, and it usually gets
  127.     you to the next page much more quickly than a bunch of blank lines.
  128.  
  129. o   Eject Last Page determines if STeno will stop after the last line has
  130.     been printed or advance the paper to the beginning of the next page.
  131.  
  132.  
  133. The Accessory Title Changes!
  134. ----------------------------
  135.  
  136. The accessory title in the GEM "Desk" drop-down menu will now show "STeno:
  137. <filename>", where <filename> is either "Untitled" or the name of the
  138. current file.  This is the same information that STeno uses for the window
  139. title and is a really nice way to see what file you have loaded, especially
  140. if you like to load multiple STenos.
  141.  
  142. Since GEM limits desk accessory titles to 20 characters, the extension
  143. portion of the filename will not be shown if the title would exceed 20
  144. characters.  For example, "  STeno:  DESKTOP.INF" just fits (all
  145. accessories put 2 blanks at the beginning), but a long file name such as "
  146. STeno:  FILENAME.EXT" is too big, so STeno just shows:  "  STeno:  
  147. FILENAME".
  148.  
  149. Those of you who are using STeno from within MultiDesk will just see
  150. "STeno", since MultiDesk makes its own copy of the original name used and
  151. STeno's changes go unnoticed.
  152.  
  153.  
  154. STENOCFG.TTP Is Now Obsolete
  155. ----------------------------
  156.  
  157. The "Save Settings" command was added and all of the parameters changed by
  158. the STENOCFG.TTP utility can now be changed from within STeno.
  159.  
  160. ALT-G was used as the keyboard equivalent for this command since that's
  161. what STalker uses also.  This meant changing the keyboard shortcut for
  162. "Find Next" to something else:  Shift-ALT-A.  This is more in line with the
  163. keystrokes used by Microsoft Word on the Mac, which served as the basis for
  164. many of the other keyboard equivalents.
  165.  
  166. When you invoke the Save Settings commands, STeno will look for either
  167. STENO.ACC or STENO.PRG (depending on how it is currently being run) in the
  168. current directory.  If it can't find itself it will present you with a file
  169. selector asking you to locate STENO.ACC/PRG as appropriate.  It will then
  170. open the executable file and store the current settings inside it, making
  171. them the defaults for future sessions.  If you select the wrong file or if
  172. some other sort of error occurs while STeno updates the file a warning
  173. message will be displayed.  Note that for this feature to work you must
  174. *not* use a compression utility like DC*Squish or PACKER on the executable
  175. file.  You can compress the executable after you've saved your settings,
  176. but the Save Settings command has no chance of working on a compressed 
  177. file.
  178.  
  179. The following settings are saved:
  180.  
  181. o   The "Ignore upper/lower case differences" setting from the Find and
  182.     Change commands.  Note that this is now common to both commands, so
  183.     changing it in one place changes it in the other also.
  184.  
  185. o   The path for Open and Save.
  186.  
  187. o   The values from the Preferences dialog.
  188.  
  189. o   The font size.
  190.  
  191. o   The current window size and location.
  192.  
  193.     At startup time STeno checks this and will revert to the default size
  194.     if it determines that the stored size would be unuseable.  Such a
  195.     situation can arise fairly easily if you switch between a Moniterm and
  196.     a normal screen, or between mono and colour.  In the latter case it
  197.     happens if you position the STeno window in the bottom half of the
  198.     screen and then save the settings.  The saved location indicates
  199.     coordinates with an X value greater than 200, but the colour screen
  200.     only has 640x200 resolution so STeno simply creates a window the full
  201.     size of the screen.
  202.  
  203.  
  204. Word-Sized Cursor Movement and Text Selection
  205. ---------------------------------------------
  206.  
  207. Word-sized cursor movements are now possible using the Control key with the
  208. arrow keys.  For example, Control + Right Arrow moves the insertion point
  209. to the beginning of the next word.  A "word" is defined as a sequence of
  210. non-blank characters.
  211.  
  212. You can also select single or multiple words simply by double-clicking.  If
  213. you start a selection operation with a double-click rather than a
  214. single-click, STeno will keep whole words together in the selection range.
  215. To select a single word simply move the mouse pointer over it and
  216. double-click.
  217.  
  218.  
  219. New Preferences Dialog
  220. ----------------------
  221.  
  222. A new "Preferences..." command was added to the Options menu.  This brings
  223. up a dialog box that lets you set the accessory buffer size and the drive
  224. to use for the cut/copy/paste clipboard file.
  225.  
  226. A change to the clipboard drive will take effect right away, but a change
  227. in the accessory buffer size will only take effect after rebooting.
  228.  
  229. If the clipboard drive doesn't exist at startup time (you might have 
  230. specified a RAM Disk and then rebooted without it) STeno will use the 
  231. highest available drive.  STeno searches the bitmap returned by the
  232. Drvmap() call, starting with the bit corresponding to drive 'P' and working
  233. backwards.  This feature will mainly help users who boot from a floppy and
  234. want to use a RAM-Disk or their B drive for the clipboard.  Note that some
  235. RAM-Disks allow drive letters greater than 'P' - this is not officially
  236. supported by GEMDOS, and on TOS 1.4 an attempt to open a file on a
  237. nonexistent drive greater than 'P' sends the machine off into la-la land.
  238.  
  239. The buffer size setting is the same as before (as set by the STENOCFG 
  240. utility).  It determines how much memory STeno will grab from the system.
  241. Due to the overhead of the data structures and memory management used by
  242. STeno, this is *not* the same as the maximum file size, ie. a 32K buffer
  243. does not mean you'll be able to edit a 32K file.  Depending on the nature
  244. of the file (how many blank lines there are, average line length, etc.) the
  245. overhead is usually around 20-25%.  The alternative is much slower
  246. operation, especially with large files.
  247.  
  248. Still on the topic of memory consumption, the "STeno Info..." dialog now
  249. shows the size of the largest available block along with the other
  250. information it showed before.  STeno does its own memory management within
  251. the block it allocates from the system at startup time.  When operating as
  252. a program, STeno will simply get more memory from the system if it runs
  253. out, but this is something it can't do when running as an accessory due to
  254. the nature of GEMDOS and desk accessories.
  255.  
  256. There are two types of data that contend for memory in STeno:  the contents
  257. of each line, ie. the actual data; and the array of line pointers.  The
  258. line pointer array is one of the main reasons why STeno has reasonably
  259. quick editing operations, but it adds some overhead and is often the cause
  260. of an "out of memory" message.  Each entry in the line pointer array
  261. occupies 6 bytes, and the array itself must be in contiguous memory.  This
  262. means that a 1000 line file requires 6000 bytes in a single block of
  263. memory.  By now you can probably see the reason for adding the "Largest
  264. Block" display.  If you run out of memory before you suspect you should, it
  265. usually means that STeno could not find a single block big enough to allow
  266. it to increase the size of the line array.  You may have 7000 bytes free in
  267. a 1000 line file, but those 7000 bytes are probably scattered all over the
  268. buffer rather than in a single big chunk.
  269.  
  270. If you run into an "Out of memory" and need to add more lines there are two
  271. things you can do.  Obviously you can increase the overall buffer size via
  272. the "Preferences..." command, but that requires a re-boot before it takes
  273. effect.  The other way is simply to save your file and then load it back in
  274. again.  The reason this helps is that when you use the "Open..." or "New"
  275. commands, STeno will allocate roughly one fifth of the available space for
  276. the line array.  For a 32K buffer this means you'll start out with just
  277. over 6K or 1000 lines.  This will be decreased if necessary as a file gets
  278. loaded but the one fifth ratio seems to be pretty good for most text files.
  279. In the future I may consider putting a fixed upper limit on the number of
  280. lines, and allocating the necessary space at start-up time.  Naturally this
  281. would be configurable via the "Preferences..." dialog, but this approach is
  282. likely to be more confusing to the novice than the current (automatic)
  283. approach.  Feel free to put in your two cents worth on this issue,
  284. preferably via e-mail.
  285.  
  286.  
  287. Delete Line
  288. -----------
  289.  
  290. A "Delete Line" command has been added:  Shift-Delete.  This will delete
  291. the line the cursor is currently on, regardless of the cursor column within
  292. the line.
  293.  
  294.  
  295. Other Miscellaneous Changes and Bug Fixes
  296. -----------------------------------------
  297.  
  298. o   Cut and Copy now are available all of the time, rather than just when
  299.     there is currently text selected.  If you choose one of them when
  300.     nothing is selected then the current scrap will be cleared.
  301.  
  302. o   The SCRAP.TXT file used for the clipboard is now hidden according to
  303.     TOS 1.4.
  304.  
  305. o   The disappearing mouse problem that sometimes happened when the STeno
  306.     window was behind another one has been fixed.
  307.  
  308. o   Fixed a bug that caused a number of strange problems.  It was most
  309.     noticeable if a copy+paste was attempted when STeno was out of memory.
  310.     It was actually a problem in the code to join two lines when the first
  311.     is blank, so it could also have happened if you had the cursor on an
  312.     empty line and hit Delete.  It was the kind of bug that didn't show up
  313.     right away, but caused strange things (crashes, out of memory errors)
  314.     to happen later on.
  315.  
  316. o   Fixed a problem that caused STeno to temporarily go off into space if
  317.     you had text selected ahead of the portion of the file shown in the
  318.     window.  As soon as you did something to deselect that text (moving the
  319.     cursor or doing a Find Next for example) STeno would temporarily take a
  320.     picnic.
  321.  
  322. o   Fixed a problem in handling large files (more than 5461 lines).  This
  323.     was actually a bug in the Laser C code generator.  STeno keeps an array
  324.     of a structure with one element per line.  To access the data for a
  325.     particular line, the C code is something like:
  326.     "lines[line_number].data".  Laser C generated code that assumed the
  327.     array would never be larger than 32K, so since each structure element
  328.     is 6 bytes, and 6 * 5462 > 32K, things got pretty messed up.
  329.  
  330. o   Fixed a problem that occurred if you tried to Cut more than half of a
  331.     medium or large file.
  332.  
  333. o   STENO.PRG would lock up from many shell programs like Gulam if you
  334.     tried to invoke it twice - this has been fixed.
  335.  
  336.  
  337. Questions or Comments
  338. ---------------------
  339.  
  340. As always, questions, comments, and suggestions are welcome.  You can 
  341. reach us by mail, phone, or e-mail:
  342.  
  343.     Strata Software
  344.     94 Rowe Drive
  345.     Kanata Ontario Canada
  346.     K2L 3Y9
  347.     Phone/Fax:  (613) 591-1922
  348.  
  349. GEnie:      E.ROSENQUIST
  350. Bix:        e_rosenquist
  351. CompuServe: 72711,2503
  352.