home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume14 / jove4.9 / part19 < prev    next >
Text File  |  1988-04-27  |  43KB  |  1,209 lines

  1. Subject:  v14i075:  Jove, an emacs variant, version 4.9, Part19/21
  2. Newsgroups: comp.sources.unix
  3. Sender: sources
  4. Approved: rsalz@uunet.UU.NET
  5.  
  6. Submitted-by: Jonathan Payne <jpayne@cs.rochester.edu>
  7. Posting-number: Volume 14, Issue 75
  8. Archive-name: jove4.9/part19
  9.  
  10. #! /bin/sh
  11. # This is a shell archive.  Remove anything before this line, then unpack
  12. # it by saving it into a file and typing "sh file".  To overwrite existing
  13. # files, type "sh file -c".  You can also feed this as standard input via
  14. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  15. # will see the following message at the end:
  16. #        "End of archive 19 (of 21)."
  17. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  18. if test -f './doc/jove.1' -a "${1}" != "-c" ; then 
  19.   echo shar: Will not clobber existing file \"'./doc/jove.1'\"
  20. else
  21. echo shar: Extracting \"'./doc/jove.1'\" \(41172 characters\)
  22. sed "s/^X//" >'./doc/jove.1' <<'END_OF_FILE'
  23. X.\" ditroff -ms
  24. X.de IQ
  25. X\\fI\\$1\\fP
  26. X..
  27. X.de dc
  28. X.NH 2
  29. X\\$1
  30. X.if '\\$2'(variable)' (variable)
  31. X.if !'\\$2'(variable)' (\\$2)
  32. X.LP
  33. X..
  34. X.nr LL 6.5i
  35. X.nr LT 6.5i
  36. X.EH 'USD:17-%''JOVE Manual for UNIX Users'
  37. X.OH 'JOVE Manual for UNIX Users''USD:17-%'
  38. X.LP
  39. X.TL
  40. JOVE Manual for UNIX Users
  41. X.AU
  42. Jonathan Payne
  43. X(revised for 4.3BSD by Doug Kingston and Mark Seiden)
  44. X.AI
  45. X.AB no
  46. X.AE
  47. X.NH 1
  48. Introduction
  49. X.XS \n(PN
  50. X\*(SN Introduction
  51. X.XE
  52. X.LP
  53. X\s-2JOVE\s0*
  54. X.FS
  55. X*\s-2JOVE\s0 stands for Jonathan's Own Version of Emacs.
  56. X.FE
  57. is an advanced, self-documenting, customizable real-time display editor.
  58. It (and this tutorial introduction) are based on the original EMACS
  59. editor and user manual written at M.I.T. by Richard Stallman+.
  60. X.FS
  61. X+Although \s-2JOVE\s0 is meant to be compatible with EMACS,
  62. and indeed many of the basic commands are very similar,
  63. there are some major differences between the two editors,
  64. and you should not rely on their behaving identically.
  65. X.FE
  66. X.LP
  67. X\s-2JOVE\s0 is considered a
  68. X.I display 
  69. editor because normally the text being
  70. edited is visible on the screen and is updated automatically as you
  71. type your commands.
  72. X.LP
  73. It's considered a
  74. X.I real-time 
  75. editor because the display is updated very
  76. frequently, usually after each character or pair of characters you type.
  77. This minimizes the amount of information you must keep in your
  78. head as you edit.
  79. X.LP
  80. X\s-2JOVE\s0 is 
  81. X.I advanced 
  82. because it provides facilities that go beyond
  83. simple insertion and deletion:
  84. filling of text;
  85. automatic indentations of programs;
  86. view more than one file at once;
  87. and dealing in terms of characters, words, lines, sentences and paragraphs.
  88. It is much easier
  89. to type one command meaning "go to the end of the paragraph" than to
  90. find the desired spot with repetition of simpler commands.
  91. X.LP
  92. X.I Self-documenting 
  93. means that at almost any time you can easily
  94. find out what a command does,
  95. or to find all the commands that pertain to a topic.
  96. X.LP
  97. X.I Customizable
  98. means that you can change the definition of \s-2JOVE\s0 commands
  99. in little ways.
  100. For example, you can rearrange the command set;
  101. if you prefer to use arrow keys for the four basic cursor motion commands
  102. X(up, down, left and right), you can.
  103. Another sort of customization is
  104. writing new commands by combining built in commands.
  105. X.NH 1
  106. The Organization of the Screen
  107. X.XS \n(PN
  108. X\*(SN The Organization of the Screen
  109. X.XE
  110. X.LP
  111. X\s-2JOVE\s0 divides the screen up into several sections.
  112. The biggest of these sections is used to display the text you are editing.
  113. The terminal's cursor shows the position of \fIpoint\fP,
  114. the location at which editing takes place.
  115. While the cursor appears to point \fIat\fP a character,
  116. point should be thought of as between characters;
  117. it points \fIbefore\fP the character that the cursor appears on top of.
  118. Terminals have only one cursor,
  119. and when output is in progress it must appear where the typing is being done.
  120. This doesn't mean that point is moving;
  121. it is only that \s-2JOVE\s0 has no way of
  122. showing you the location of point except when the terminal is idle.
  123. X.LP
  124. The lines of the screen are usually available for displaying text but
  125. sometimes are pre-empted by typeout from certain commands (such as a
  126. listing of all the editor commands).
  127. Most of the time,
  128. output from commands like these is only desired for a short period of time,
  129. usually just long enough to glance at it.
  130. When you have finished looking at the output,
  131. you can type Space to make your text reappear.
  132. X(Usually a Space that you type inserts itself, but when there is typeout on
  133. the screen, it does nothing but get rid of that).
  134. Any other command executes normally,
  135. X.I after
  136. redrawing your text.
  137. X.NH 2
  138. The Message Line
  139. X.XS \n(PN 5n
  140. X\*(SN The Message Line
  141. X.XE
  142. X.LP
  143. The bottom line on the screen, called the
  144. X\fImessage line\fP,
  145. is reserved for printing messages and for accepting input from the user,
  146. such as filenames or search strings.
  147. When
  148. X\s-2JOVE\s0 
  149. prompts for input,
  150. the cursor will temporarily appear on the bottom line, waiting for you
  151. to type a string.
  152. When you have finished typing your input, you can
  153. type a Return to send it to \s-2JOVE\s0.
  154. If you change your mind about running the command that is waiting for input,
  155. you can type Control-G to abort,
  156. and you can continue with your editing.
  157. X.LP
  158. When \s-2JOVE\s0 is prompting for a filename,
  159. all the usual editing facilities can be used to fix typos and such;
  160. in addition, \s-2JOVE\s0 has the following extra functions:
  161. X.IP "^N"
  162. Insert the next filename from the argument list.
  163. X.IP "^P"
  164. Insert the previous filename from the argument list.
  165. X.IP "^R"
  166. Insert the full pathname of the file in the current buffer.
  167. X.LP
  168. Sometimes you will see \fB--more--\fP on the message line.
  169. This happens when typeout from a command is too long to fit in the screen.
  170. It means that if you type a Space the next screenful of typeout will be
  171. printed.
  172. If you are not interested,
  173. typing anything but a Space will cause the rest of the output to be discarded.
  174. Typing C-G will discard the output and print \fIAborted\fP where the \fB--more--\fP was.
  175. Typing any other command will discard the rest of the output and
  176. also execute the command.
  177. X.LP
  178. The message line and the list of filenames from the shell command that
  179. invoked \s-2JOVE\s0 are kept in a special buffer called
  180. X\fIMinibuf\fP that can be edited like any other buffer.
  181. X.NH 2
  182. The Mode Line
  183. X.XS \n(PN 5n
  184. X\*(SN The Mode Line
  185. X.XE
  186. X.LP
  187. At the bottom of the screen, but above the message line, is the
  188. X\fImode line\fP.  The mode line format looks like this:
  189. X.DS I
  190. X\fBJOVE (major minor)   Buffer: bufr  "file" *\fP
  191. X.DE
  192. X\fImajor\fP is the name of the current \fImajor mode\fP.
  193. At any time, \s-2JOVE\s0 can be in only one major mode at a time.
  194. Currently there are only four major modes: \fIFundamental\fP,
  195. X\fIText\fP, \fILisp\fP and \fIC\fP.
  196. X.LP
  197. X\fIminor\fP is a list of the minor modes that are turned on.
  198. X\fBAbbrev\fP means that \fIWord Abbrev\fP mode is on;
  199. X\fBAI\fP means that \fIAuto Indent\fP mode is on;
  200. X\fBFill\fP means that \fIAuto Fill\fP mode is on;
  201. X\fBOvrWt\fP means that \fIOver Write\fP mode is on.
  202. X\fBDef\fP means that you are in the process of defining a keyboard macro.
  203. This is not really a mode,
  204. but it's useful to be reminded about it.
  205. The meanings of these modes are described later in this document.
  206. X.LP
  207. X\fIbufr\fP is the name of the currently selected \fIbuffer\fP.
  208. Each buffer has its own name and holds a file being edited;
  209. this is how \s-2JOVE\s0 can hold several files at once.
  210. But at any given time you are editing only one of them,
  211. the \fIselected\fP buffer.
  212. When we speak of what some command does to "the buffer",
  213. we are talking about the currently selected buffer.
  214. Multiple buffers makes it easy to switch around between several files,
  215. and then it is very useful that
  216. the mode line tells you which one you are editing at any time.  (You
  217. will see later that it is possible to divide the
  218. screen into multiple \fIwindows\fP, each showing a different buffer.  If you
  219. do this, there is a mode line beneath each window.)
  220. X.LP
  221. X\fIfile\fP is the name of the file that you are editing.
  222. This is the default filename for commands that expect a filename as input.
  223. X.LP
  224. The asterisk at the end of the mode line means that there are changes in
  225. the buffer that have not been saved in the file.
  226. If the file has not been changed since it was read in or saved,
  227. there is no asterisk.
  228. X.NH 1
  229. Command Input Conventions
  230. X.XS \n(PN
  231. X\*(SN Command Input Conventions
  232. X.XE
  233. X.LP
  234. X.NH 2
  235. Notational Conventions for ASCII Characters
  236. X.XS \n(PN 5n
  237. X\*(SN Notational Conventions for ASCII Characters
  238. X.XE
  239. X.LP
  240. In this manual,
  241. X"Control" characters
  242. X(that is, characters that are typed with the Control key
  243. and some other key at the same time)
  244. are represented by "C-" followed by another character.
  245. Thus,
  246. C-A is the character you get when you type A with the Control key
  247. X(sometimes labeled CTRL) down.
  248. Most control characters when present in the \s-2JOVE\s0
  249. buffer are displayed with a caret; thus, ^A for C-A.
  250. Rubout (or DEL) is displayed as ^?, escape as ^[.
  251. X.NH 2
  252. Command and Filename Completion
  253. X.XS \n(PN 5n
  254. X\*(SN Command and Filename Completion
  255. X.XE
  256. X.LP
  257. When you are typing the name of a \s-2JOVE\s0 command, you need type only
  258. enough letters to make the name unambiguous.  At any point in the course of
  259. typing the name, you can type question mark (?) to see a list of all the
  260. commands whose names begin with the characters you've already typed; you can
  261. type Space to have \s-2JOVE\s0 supply as many characters as it can; or you
  262. can type Return to complete the command if there is only one possibility.
  263. For example, if you have typed the letters "\fIau\fP" and you then type a
  264. question mark, you will see the list
  265. X.DS I
  266. X   auto-execute-command
  267. X   auto-execute-macro
  268. X   auto-fill-mode
  269. X   auto-indent-mode
  270. X.DE
  271. If you type a Return at this point, \s-2JOVE\s0 will complain by ringing
  272. the bell, because the letters you've typed do not unambiguously specify a
  273. single command.  But if you type Space, \s-2JOVE\s0 will supply the
  274. characters "\fIto-\fP" because all commands that begin "\fIau\fP" also
  275. begin "\fIauto-\fP".  You could then type the letter "\fIf\fP" followed
  276. by either Space or Return, and \s-2JOVE\s0 would complete the entire
  277. command.
  278. X.LP
  279. Whenever \s-2JOVE\s0 is prompting you for a filename, say in the
  280. X\fIfind-file\fP command, you also need only type enough of the name to
  281. make it unambiguous with respect to files that already exist.  In this
  282. case, question mark and Space work just as they do in command completion,
  283. but Return always accepts the name just as you've typed it, because you
  284. might want to create a new file with a name similar to that of an
  285. existing file.  The variable \fIbad-filename-extensions\fP contains a
  286. list of words separated by spaces which are to be considered bad
  287. filename extensions, and so will not be counted in filename completion.
  288. The default is ".o" so if you have jove.c and jove.o in the same
  289. directory, the filename completion will not complain of an ambiguity
  290. because it will ignore jove.o.
  291. X
  292. X.NH 1
  293. Commands and Variables
  294. X.XS \n(PN
  295. X\*(SN Commands and Variables
  296. X.XE
  297. X.LP
  298. X\s-2JOVE\s0 is composed of \fIcommands\fP
  299. which have long names such as
  300. X\fInext-line\fP.
  301. Then \fIkeys\fP such as C-N are connected to
  302. commands through the \fIcommand dispatch table\fP.
  303. When we say that C-N moves the cursor down a line,
  304. we are glossing over a distinction which is unimportant for ordinary use,
  305. but essential for simple customization:
  306. it is the command \fInext-line\fP which knows how to move a down line,
  307. and C-N moves down a line because it is connected to that command.
  308. The name for this connection is a \fIbinding\fP; we say that the key
  309. C-N \fIis bound to\fP the command \fInext-line\fP.
  310. X.LP
  311. Not all commands are bound to keys.  To invoke a command that isn't bound
  312. to a key, you can type the sequence ESC X, which is bound to the command
  313. X\fIexecute-named-command\fP.  You will then be able to type the name of
  314. whatever command you want to execute on the message line.
  315. X.LP
  316. Sometimes the description of a command will say
  317. X"to change this, set the variable \fImumble\-foo\fP".
  318. A variable is a name used to remember a value.
  319. X\s-2JOVE\s0 contains variables which are there so that you can change
  320. them if you want to customize.
  321. The variable's value is examined by some command,
  322. and changing that value makes the command behave differently.
  323. Until you are interesting in customizing \s-2JOVE\s0,
  324. you can ignore this information.
  325. X.NH 2
  326. Prefix Characters
  327. X.XS \n(PN 5n
  328. X\*(SN Prefix Characters
  329. X.XE
  330. X.LP
  331. Because there are more command names than keys,
  332. X\s-2JOVE\s0 provides
  333. X\fIprefix characters\fP to increase the number of commands that can
  334. be invoked quickly and easily.
  335. When you type a prefix character \s-2JOVE\s0 will wait
  336. for another character before deciding what to do.
  337. If you wait more than a second or so,
  338. X\s-2JOVE\s0 will print the prefix character on the
  339. message line as a reminder and leave the cursor down there until you type your next
  340. character.
  341. There are two prefix characters built into \s-2JOVE\s0:
  342. Escape and Control-X.
  343. How the next character is interpreted depends on which
  344. prefix character you typed.
  345. For example,
  346. if you type Escape followed by B you'll run \fIbackward-word\fP,
  347. but if you type Control-X followed by B you'll run \fIselect-buffer\fP.
  348. Elsewhere in this manual, the Escape key is indicated as "ESC", which is
  349. also what \s-2JOVE\s0 displays on the message line for Escape.
  350. X.NH 2
  351. Help
  352. X.XS \n(PN
  353. X\*(SN Help
  354. X.XE
  355. X.LP
  356. To get a list of keys and their associated commands,
  357. you type ESC X \fIdescribe-bindings\fP.
  358. If you want to describe a single key,
  359. ESC X \fIdescribe-key\fP will work.  A description of an
  360. individual command is available by using ESC X \fIdescribe-command\fP,
  361. and descriptions of variables by using  ESC X \fIdescribe-variable\fP.
  362. If you can't remember the name of the thing you want to know about,
  363. ESC X \fIapropos\fP will tell you if a command or variable has a given
  364. string in its name.  For example, ESC X \fIapropos describe\fP will
  365. list the names of the four describe commands mentioned briefly in this
  366. section.
  367. X.NH 1
  368. Basic Editing Commands
  369. X.XS \n(PN
  370. X\*(SN Basic Editing Commands
  371. X.XE
  372. X.LP
  373. X.NH 2
  374. Inserting Text
  375. X.XS \n(PN 5n
  376. X\*(SN Inserting Text
  377. X.XE
  378. X.LP
  379. To insert printing characters into the text you are editing,
  380. just type them.
  381. All printing characters you type are inserted into the text at
  382. the cursor (that is, at \fIpoint\fP),
  383. and the cursor moves forward.
  384. Any characters after the cursor move forward too.
  385. If the text in the buffer is FOOBAR,
  386. with the cursor before the B,
  387. then if you type XX,
  388. you get FOOXXBAR,
  389. with the cursor still before the B.
  390. X.LP
  391. To correct text you have just inserted,
  392. you can use Rubout.
  393. Rubout deletes the character \fIbefore\fP the cursor (not the one that the
  394. cursor is on top of or under; that is the character \fIafter\fP the
  395. cursor).
  396. The cursor and all characters after it move backwards.
  397. Therefore,
  398. if you typing a printing character and then type Rubout,
  399. they cancel out.
  400. X.LP
  401. To end a line and start typing a new one,
  402. type Return.
  403. Return operates by inserting a \fIline-separator\fP,
  404. so if you type Return in
  405. the middle of a line,
  406. you break the line in two.
  407. Because a line-separator is just a single character,
  408. you can type Rubout at the
  409. beginning of a line to delete the line-separator and join it with the
  410. preceding line.
  411. X.LP
  412. As a special case, if you type Return at the end of a line and there are
  413. two or more empty lines just below it, \s-2JOVE\s0 does not insert a
  414. line-separator but instead merely moves to the next (empty) line.  This
  415. behavior is convenient when you want to add several lines of text in the
  416. middle of a buffer.  You can use the Control-O (\fInewline-and-backup\fP)
  417. command to "open" several empty lines at once; then you can insert the new
  418. text, filling up these empty lines.  The advantage is that \s-2JOVE\s0 does
  419. not have to redraw the bottom part of the screen for each Return you type,
  420. as it would ordinarily.  That "redisplay" can be both slow and distracting.
  421. X.LP
  422. If you add too many characters to one line,
  423. without breaking it with Return,
  424. the line will grow too long to display on one screen line.
  425. When this happens,
  426. X\s-2JOVE\s0 puts an "!" at the extreme right margin,
  427. and doesn't bother to display the rest of the line unless the
  428. cursor happens to be in it.
  429. The "!" is not part of your text;
  430. conversely,
  431. even though you can't see the rest of your line,
  432. it's still there,
  433. and if you break the line,
  434. the "!" will go away.
  435. X.LP
  436. Direct insertion works for printing characters and space,
  437. but other
  438. characters act as editing commands and do not insert themselves.
  439. If you need to insert a control character,
  440. Escape,
  441. or Rubout,
  442. you must first \fIquote\fP it by typing the Control-Q command first.
  443. X.NH 2
  444. Moving the Cursor
  445. X.XS \n(PN 5n
  446. X\*(SN Moving the Cursor
  447. X.XE
  448. X.LP
  449. To do more than insert characters,
  450. you have to know how to move the cursor.
  451. Here are a few of the commands for doing that.
  452. X.IP "C-A" 15n
  453. Move to the beginning of the line.
  454. X.IP "C-E" 15n
  455. Move to the end of the line.
  456. X.IP "C-F" 15n
  457. Move forward over one character.
  458. X.IP "C-B" 15n
  459. Move backward over one character.
  460. X.IP "C-N" 15n
  461. Move down one line,
  462. vertically.
  463. If you start in the middle of one line,
  464. you end in the middle of the next.
  465. X.IP "C-P" 15n
  466. Move up one line,
  467. vertically.
  468. X.IP "ESC <" 15n
  469. Move to the beginning of the entire buffer.
  470. X.IP "ESC >" 15n
  471. Move to the end of the entire buffer.
  472. X.IP "ESC ," 15n
  473. Move to the beginning of the visible window.
  474. X.IP "ESC ." 15n
  475. Move to the end of the visible window.
  476. X.NH 2
  477. Erasing Text
  478. X.XS \n(PN 5n
  479. X\*(SN Erasing Text
  480. X.XE
  481. X.LP
  482. X.IP "Rubout" 15n
  483. Delete the character before the cursor.
  484. X.IP "C-D" 15n
  485. Delete the character after the cursor.
  486. X.IP "C-K" 15n
  487. Kill to the end of the line.
  488. X.LP
  489. You already know about the Rubout command which deletes the character
  490. before the cursor.
  491. Another command,
  492. Control-D,
  493. deletes the character
  494. after the cursor,
  495. causing the rest of the text on the line to shift left.
  496. If Control-D is typed at the end of a line,
  497. that line and the next line are joined together.
  498. X.LP
  499. To erase a larger amount of text,
  500. use the Control-K command,
  501. which kills a line at a time.
  502. If Control-K is done at the beginning or
  503. middle of a line,
  504. it kills all the text up to the end of the line.
  505. If Control-K is done at the end of a line,
  506. it joins that line and the next line.
  507. If Control-K is done twice, it kills the rest of the line and the line
  508. separator also.
  509. X.NH 2
  510. Files \(em Saving Your Work
  511. X.XS \n(PN 5n
  512. X\*(SN Files \(em Saving Your Work
  513. X.XE
  514. X.LP
  515. The commands above are sufficient for creating text in the \s-2JOVE\s0 buffer.
  516. The more advanced \s-2JOVE\s0 commands just make things easier.
  517. But to keep any text permanently you must put it in a \fIfile\fP.
  518. Files are the objects which
  519. X.UX
  520. uses for storing data for a length of time.
  521. To tell \s-2JOVE\s0 to read text into a file,
  522. choose a filename,
  523. such as \fIfoo.bar\fP,
  524. and type C-X C-R \fIfoo.bar\fP<return>.
  525. This reads the file \fIfoo.bar\fP so that its contents appear on the screen
  526. for editing.
  527. You can make changes,
  528. and then save the file by typing C-X C-S (save-file).
  529. This makes the changes permanent and actually changes the file \fIfoo.bar\fP.
  530. Until then,
  531. the changes are only inside \s-2JOVE\s0,
  532. and the file \fIfoo.bar\fP is not really changed.
  533. If the file \fIfoo.bar\fP doesn't exist,
  534. and you want to create it,
  535. read it as if it did exist.
  536. When you save your text with C-X C-S the file will be created.
  537. X.NH 2
  538. Exiting and Pausing \(em Leaving \s-2JOVE\s0
  539. X.XS \n(PN 5n
  540. X\*(SN Exiting and Pausing \(em Leaving \s-2JOVE\s0
  541. X.XE
  542. X.LP
  543. The command C-X C-C (\fIexit-jove\fP) will terminate the \s-2JOVE\s0
  544. session and return to the shell.  If there are modified but 
  545. unsaved buffers, \s-2JOVE\s0 will ask you for confirmation, and you
  546. can abort the command, look at what buffers are
  547. modified but unsaved using C-X C-B (\fIlist-buffers\fP), save the 
  548. valuable ones, and then exit.  If what you want to do, on the other hand,
  549. is \fIpreserve\fP the editing session but return to the shell temporarily
  550. you can (under Berkeley 
  551. X.UX
  552. only) issue the command ESC S (\fIpause-jove\fP), do your 
  553. X.UX 
  554. work within the c-shell, then return to \s-2JOVE\s0 using the 
  555. X\fIfg\fP command to resume editing at the point where you paused.
  556. For this sort of situation you might consider using an \fIinteractive
  557. shell\fP (that is, a shell in a \s-2JOVE\s0 window) which lets you use
  558. editor commands to manipulate your 
  559. X.UX 
  560. commands (and their output) while never leaving the editor.
  561. X(The interactive shell feature is described below.)
  562. X.NH 2
  563. Giving Numeric Arguments to \s-2JOVE\s0 Commands
  564. X.XS \n(PN 5n
  565. X\*(SN Giving Numeric Arguments to \s-2JOVE\s0 Commands
  566. X.XE
  567. X.LP
  568. Any \s-2JOVE\s0 command can be given a \fInumeric argument\fP.
  569. Some commands interpret the argument as a repetition count.
  570. For example,
  571. giving an argument of ten to the C-F command (forward-character) moves forward
  572. ten characters.
  573. With these commands,
  574. no argument is equivalent to an argument of 1.
  575. X.LP
  576. Some commands use the value of the argument,
  577. but do something peculiar (or nothing) when there is no argument.
  578. For example,
  579. ESC G (\fIgoto-line\fP) with an argument \fBn\fP
  580. goes to the beginning of the \fBn\fP'th line.
  581. But ESC G with no argument doesn't do anything.
  582. Similarly, C-K with an argument kills that many lines, including their line
  583. separators.  Without an argument, C-K when there is text on the line to the
  584. right of
  585. the cursor kills that text; when there is no text after the cursor, C-K
  586. deletes the line separator.
  587. X.LP
  588. The fundamental way of specifying an argument is to use ESC followed
  589. by the digits of the argument, for example, ESC 123 ESC G to go to line
  590. X123. Negative arguments are allowed,
  591. although not all of the commands know what to do with one.
  592. X.LP
  593. Typing C-U means do the next command four times.
  594. Two such C-U's multiply the next command by sixteen.
  595. Thus,
  596. C-U C-U C-F moves forward sixteen characters.
  597. This is a good way to move forward quickly,
  598. since it moves about 1/4 of a line on most terminals.
  599. Other useful combinations are:
  600. C-U C-U C-N (move down a good fraction of the screen),
  601. C-U C-U C-O (make "a lot" of blank lines),
  602. and C-U C-K (kill four lines \(em note that typing C-K four times
  603. would kill 2 lines).
  604. X.LP
  605. There are other,
  606. terminal-dependent ways of specifying arguments.
  607. They have the same effect but may be easier to type.
  608. If your terminal
  609. has a numeric keypad which sends something recognizably different from
  610. the ordinary digits,
  611. it is possible to program \s-2JOVE\s0 to to allow use of
  612. the numeric keypad for specifying arguments.
  613. X.NH 2
  614. The Mark and the Region
  615. X.XS \n(PN 5n
  616. X\*(SN The Mark and the Region
  617. X.XE
  618. X.LP
  619. In general,
  620. a command that processes an arbitrary part of the buffer
  621. must know where to start and where to stop.
  622. In \s-2JOVE\s0,
  623. such commands usually operate on the text between point and \fIthe mark\fP.
  624. This body of text is called \fIthe region\fP.
  625. To specify a region,
  626. you set point to one end of it and mark at the other.
  627. It doesn't matter which one comes earlier in the text.
  628. X.IP "C-@" 15n
  629. Set the mark where point is.
  630. X.IP "C-X C-X" 15n
  631. Interchange mark and point.
  632. X.LP
  633. For example,
  634. if you wish to convert part of the buffer to all upper-case,
  635. you can use the C-X C-U command,
  636. which operates on the text in the region.
  637. You can first go to the beginning of the text to be capitalized,
  638. put the mark there, move to the end, and then type C-X C-U.
  639. Or,
  640. you can set the mark at the end of the text,
  641. move to the beginning,
  642. and then type C-X C-U.
  643. C-X C-U runs the command \fIcase-region-upper\fP,
  644. whose name signifies that the region,
  645. or everything between point and mark,
  646. is to be capitalized.
  647. X.LP
  648. The way to set the mark is with the C-@ command or (on some
  649. terminals) the C-Space command.
  650. They set the mark where point is.
  651. Then you can move point away,
  652. leaving mark behind.  When the mark is set, "[Point pushed]" is printed on
  653. the message line.
  654. X.LP
  655. Since terminals have only one cursor,
  656. there is no way for \s-2JOVE\s0 to show you where the mark is located.
  657. You have to remember.
  658. The usual solution to this problem is to set the mark and then use it soon,
  659. before you forget where it is.
  660. But you can see where the mark is with
  661. the command C-X C-X which puts the mark where point was and point
  662. where mark was.
  663. The extent of the region is unchanged,
  664. but the cursor and point are now at the previous location of the mark.
  665. X.NH 2
  666. The Ring of Marks
  667. X.XS \n(PN 5n
  668. X\*(SN The Ring of Marks
  669. X.XE
  670. X.LP
  671. Aside from delimiting the region,
  672. the mark is also useful for remembering a spot that you may want to go back to.
  673. To make this feature more useful,
  674. X\s-2JOVE\s0 remembers 16 previous locations of the mark.
  675. Most commands that set the mark push the old mark onto this stack.
  676. To return to a marked location, use C-U C-@.
  677. This moves point to where the mark was,
  678. and restores the mark from the stack of former marks.
  679. So repeated use of this command moves point to all of the old
  680. marks on the stack,
  681. one by one.
  682. Since the stack is actually a ring,
  683. enough uses of C-U C-@ bring point back to where it was originally.
  684. X.LP
  685. Some commands whose primary purpose is to move point a great distance
  686. take advantage of the stack of marks to give you a way to undo the
  687. command.
  688. The best example is ESC <,
  689. which moves to the beginning of the buffer.
  690. If there are more than 22 lines between the beginning of
  691. the buffer and point,
  692. ESC < sets the mark first,
  693. so that you can use C-U C-@ or C-X C-X to go back to where you were.
  694. You can change the number of lines from 22 since it is kept in the variable \fImark-threshold\fP.
  695. By setting it to 0,
  696. you can make these commands always set the mark.
  697. By setting it to a very large number you can prevent these commands from ever
  698. setting the mark.
  699. If a command decides to set the mark,
  700. it prints the message \fI[Point pushed]\fP.
  701. X.NH 2
  702. Killing and Moving Text
  703. X.XS \n(PN 5n
  704. X\*(SN Killing and Moving Text
  705. X.XE
  706. X.LP
  707. The most common way of moving or copying text with \s-2JOVE\s0 is to kill it,
  708. and get it back again in one or more places.
  709. This is very safe
  710. because the last several pieces of killed text are all remembered,
  711. and it is versatile,
  712. because the many commands for killing syntactic units
  713. can also be used for moving those units.
  714. There are also other ways of moving text for special purposes.
  715. X.NH 2
  716. Deletion and Killing
  717. X.XS \n(PN 5n
  718. X\*(SN Deletion and Killing
  719. X.XE
  720. X.LP
  721. Most commands which erase text from the buffer save it so that you can
  722. get it back if you change your mind,
  723. or move or copy it to other parts of the buffer.
  724. These commands are known as \fIkill\fP commands.
  725. The rest of the commands that erase text do not save it;
  726. they are known as \fIdelete\fP commands.
  727. The delete commands include C-D and Rubout,
  728. which delete only one character at a time,
  729. and those commands that delete only spaces or line separators.
  730. Commands that can destroy significant amounts of nontrivial data generally kill.
  731. A command's
  732. name and description will use the words \fIkill\fP or \fIdelete\fP to
  733. say which one it does.
  734. X.IP "C-D" 20n
  735. Delete next character.
  736. X.IP "Rubout" 20n
  737. Delete previous character.
  738. X.IP "ESC \\\\\\\\" 20n
  739. Delete spaces and tabs around point.
  740. X.IP "C-X C-O" 20n
  741. Delete blank lines around the current line.
  742. X.IP "C-K" 20n
  743. Kill rest of line or one or more lines.
  744. X.IP "C-W" 20n
  745. Kill region (from point to the mark).
  746. X.IP "ESC D" 20n
  747. Kill word.
  748. X.IP "ESC Rubout" 20n
  749. Kill word backwards.
  750. X.IP "ESC K" 20n
  751. Kill to end of sentence.
  752. X.IP "C-X Rubout" 20n
  753. Kill to beginning of sentence.
  754. X.NH 2
  755. Deletion
  756. X.XS \n(PN 5n
  757. X\*(SN Deletion
  758. X.XE
  759. X.LP
  760. The most basic delete commands are C-D and Rubout.
  761. C-D deletes the character after the cursor,
  762. the one the cursor is "on top of" or "underneath".
  763. The cursor doesn't move.
  764. Rubout deletes the character before the cursor,
  765. and moves the cursor back.
  766. Line separators act like normal characters when deleted.
  767. Actually,
  768. C-D and Rubout aren't always \fIdelete\fP commands;
  769. if you give an argument,
  770. they \fIkill\fP instead.
  771. This prevents you from losing a great deal of text by typing a large
  772. argument to a C-D or Rubout.
  773. X.LP
  774. The other delete commands are those which delete only formatting
  775. characters:
  776. spaces,
  777. tabs,
  778. and line separators.
  779. ESC \\ (\fIdelete-white-space\fP)
  780. deletes all the spaces and tab characters before and after point.
  781. C-X C-O (\fIdelete-blank-lines\fP) deletes all blank lines after the current line,
  782. and if the current line is blank deletes all the blank
  783. lines preceding the current line as well
  784. X(leaving one blank line, the current line).
  785. X.NH 2
  786. Killing by Lines
  787. X.XS \n(PN 5n
  788. X\*(SN Killing by Lines
  789. X.XE
  790. X.LP
  791. The simplest kill command is the C-K command.
  792. If issued at the beginning of a line,
  793. it kills all the text on the line,
  794. leaving it blank.
  795. If given on a line containing only white space (blanks and tabs)
  796. the line disappears.
  797. As a consequence,
  798. if you go to the front of a non-blank line and type two C-K's,
  799. the line disappears completely.
  800. X.LP
  801. More generally,
  802. C-K kills from point up to the end of the line,
  803. unless it is at the end of a line.
  804. In that case,
  805. it kills the line separator following the line,
  806. thus merging the next line into the current one.
  807. Invisible spaces and tabs at the end of the line are ignored when
  808. deciding which case applies,
  809. so if point appears to be at the end of the line,
  810. you can be sure the line separator will be killed.
  811. X.LP
  812. C-K with an argument of zero kills all the text before
  813. point on the current line.
  814. X.NH 2
  815. Other Kill Commands
  816. X.XS \n(PN 5n
  817. X\*(SN Other Kill Commands
  818. X.XE
  819. X.LP
  820. A kill command which is very general is C-W (\fIkill-region\fP),
  821. which kills everything between point and the mark.*
  822. X.FS
  823. X*Often users switch this binding from C-W to C-X C-K because it is too
  824. easy to hit C-W accidentally.
  825. X.FE
  826. With this command,
  827. you can kill and save contiguous characters,
  828. if you first set the mark at one end of them and go to the other end.
  829. X.LP
  830. Other syntactic units can be killed, too;
  831. words,
  832. with ESC Rubout and ESC D;
  833. and, sentences,
  834. with ESC K and C-X Rubout.
  835. X.NH 2
  836. Un-killing
  837. X.XS \n(PN 5n
  838. X\*(SN Un-killing (Yanking)
  839. X.XE
  840. X.LP
  841. Un-killing (yanking) is getting back text which was killed.
  842. The usual way to
  843. move or copy text is to kill it and then un-kill it one or more times.
  844. X.IP "C-Y" 10n
  845. Yank (re-insert) last killed text.
  846. X.IP "ESC Y" 10n
  847. Replace re-inserted killed text with the previously killed text.
  848. X.IP "ESC W" 10n
  849. Save region as last killed text without killing.
  850. X.LP
  851. Killed text is pushed onto a \fIring buffer\fP called the \fIkill
  852. ring\fP that remembers the last 10 blocks of text that were killed.
  853. X(Why it is called a ring buffer will be explained below).
  854. The command C-Y (\fIyank\fP) reinserts the text of the most recent kill.
  855. It leaves the cursor at the end of the text,
  856. and puts the mark at the beginning.
  857. Thus,
  858. a single C-Y undoes the C-W.
  859. X.LP
  860. If you wish to copy a block of text,
  861. you might want to use ESC W (\fIcopy-region\fP),
  862. which copies the region into the kill ring without removing it from the buffer.
  863. This is approximately equivalent to C-W followed by C-Y,
  864. except that ESC W does not mark the buffer as
  865. X"changed" and does not cause the screen to be rewritten.
  866. X.LP
  867. There is only one kill ring shared among all the buffers.
  868. After visiting a new file,
  869. whatever was last killed in the previous file is still on top of the kill ring.
  870. This is important for moving text between files.
  871. X.NH 2
  872. Appending Kills
  873. X.XS \n(PN 5n
  874. X\*(SN Appending Kills
  875. X.XE
  876. X.LP
  877. Normally,
  878. each kill command pushes a new block onto the kill ring.
  879. However,
  880. two or more kill commands immediately in a row (without any other
  881. intervening commands) combine their text into a
  882. single entry on the ring,
  883. so that a single C-Y command gets it all back as it was before it was killed.
  884. This means that you don't have to kill all the text in one command;
  885. you can keep killing line after line,
  886. or word after word,
  887. until you have killed it all,
  888. and you can still get it all back at once.
  889. X.LP
  890. Commands that kill forward from 
  891. X.I point 
  892. add onto the end of the previous
  893. killed text.
  894. Commands that kill backward from 
  895. X.I point
  896. add onto the beginning.
  897. This way,
  898. any sequence of mixed forward and backward kill
  899. commands puts all the killed text into one entry without needing rearrangement.
  900. X.NH 2
  901. Un-killing Earlier Kills
  902. X.XS \n(PN 5n
  903. X\*(SN Un-killing Earlier Kills
  904. X.XE
  905. X.LP
  906. To recover killed text that is no longer the most recent kill,
  907. you need the ESC Y (\fIyank-pop\fP) command.
  908. The ESC Y command can be used
  909. only after a C-Y (yank) command or another ESC Y.
  910. It takes the un-killed
  911. text inserted by the C-Y and replaces it with the text from an earlier
  912. kill.
  913. So,
  914. to recover the text of the next-to-the-last kill,
  915. you first use C-Y to recover the last kill,
  916. and then discard it by use of ESC Y to move back to the previous kill.
  917. X.LP
  918. You can think of all the last few kills as living on a ring.
  919. After a C-Y command,
  920. the text at the front of the ring is also present in the buffer.
  921. ESC Y "rotates" the ring bringing the previous string of text to the front
  922. and this text replaces the other text in the buffer as well.
  923. Enough ESC Y commands can rotate any part of the ring to the front,
  924. so you can get at any killed text so long as it is recent enough
  925. to be still in the ring.
  926. Eventually the ring rotates all the way
  927. around and the most recently killed text comes to the front
  928. X(and into the buffer) again.
  929. ESC Y with a negative argument rotates the ring backwards.
  930. X.LP
  931. When the text you are looking for is brought into the buffer,
  932. you can stop doing ESC Y's and the text will stay there.
  933. It's really just a copy of what's at the front of the ring,
  934. so editing it does not change what's in the ring.
  935. And the ring,
  936. once rotated,
  937. stays rotated,
  938. so that doing another C-Y gets another copy of what you rotated to the
  939. front with ESC Y.
  940. X.LP
  941. If you change your
  942. mind about un-killing,
  943. C-W gets rid of the un-killed text, even
  944. after any number of ESC Y's.
  945. X.NH 1
  946. Searching
  947. X.XS \n(PN
  948. X\*(SN Searching
  949. X.XE
  950. X.LP
  951. The search commands are useful for finding and moving to arbitrary
  952. positions in the buffer in one swift motion.
  953. For example,
  954. if you just ran the spell program on a paper
  955. and you want to correct some word,
  956. you can use the search commands to move directly to that word.  There are
  957. two flavors of search: \fIstring search\fP and \fIincremental search\fP.
  958. The former is the default flavor\(emif you want to use incremental search
  959. you must rearrange the key bindings (see below).
  960. X.NH 2
  961. Conventional Search
  962. X.XS \n(PN 5n
  963. X\*(SN Conventional Search
  964. X.XE
  965. X.LP
  966. X.IP "C-S" 15n
  967. Search forward.
  968. X.IP "C-R" 15n
  969. Search backward.
  970. X.LP
  971. To search for the string "FOO" you type "C-S FOO<return>".
  972. If \s-2JOVE\s0 finds
  973. FOO it moves point to the end of it; otherwise \s-2JOVE\s0 prints an error
  974. message and leaves point unchanged.
  975. C-S searches forward from point
  976. so only occurrences of FOO after point are found.
  977. To search in the other direction use C-R.
  978. It is exactly the same as C-S except it searches in the opposite direction,
  979. and if it finds the string,
  980. it leaves point at the beginning of it,
  981. not at the end as in C-S.
  982. X.LP
  983. While \s-2JOVE\s0 is searching it prints the search string on the message line.
  984. This is so you know what \s-2JOVE\s0 is doing.
  985. When the system is heavily loaded and
  986. editing in exceptionally large buffers,
  987. searches can take several (sometimes many) seconds.
  988. X.LP
  989. X\s-2JOVE\s0 remembers the last search string you used,
  990. so if you want to search for the same string you can type "C-S <return>".
  991. If you mistyped the last search string,
  992. you can type C-S followed by C-R.
  993. C-R,
  994. as usual,
  995. inserts the default search string into the minibuffer,
  996. and then you can fix it up.
  997. X.NH 2
  998. Incremental Search
  999. X.XS \n(PN 5n
  1000. X\*(SN Incremental Search
  1001. X.XE
  1002. X.LP
  1003. This search command is unusual in that is is \fIincremental\fP;
  1004. it begins to search before you have typed the complete search string.
  1005. As you type in the search string,
  1006. X\s-2JOVE\s0 shows you where it would be found.
  1007. When you have typed enough characters to identify the place you want,
  1008. you can stop.
  1009. Depending on what you will do next,
  1010. you may or may not need to terminate the search explicitly with a Return first.
  1011. X.LP
  1012. The command to search is C-S (\fIi-search-forward\fP).
  1013. C-S reads in characters and positions the cursor at the first
  1014. occurrence of the characters that you have typed so far.
  1015. If you type C-S and then F,
  1016. the cursor moves in the text just after the next "F".
  1017. Type an "O",
  1018. and see the cursor move to after the next "FO".
  1019. After another "O",
  1020. the cursor is after the next "FOO".
  1021. At the same time,
  1022. the "FOO" has echoed on the message line.
  1023. X.LP
  1024. If you type a mistaken character,
  1025. you can rub it out.
  1026. After the FOO,
  1027. typing a Rubout makes the "O" disappear from the message line,
  1028. leaving only "FO".
  1029. The cursor moves back in the buffer to the "FO".
  1030. Rubbing out the "O" and "F" moves the cursor back to where you
  1031. started the search.
  1032. X.LP
  1033. When you are satisfied with the place you have reached,
  1034. you can type a Return,
  1035. which stops searching,
  1036. leaving the cursor where the search brought it.
  1037. Also,
  1038. any command not specially meaningful in searches stops
  1039. the searching and is then executed.
  1040. Thus,
  1041. typing C-A would exit the search and then move to the beginning of the line.
  1042. Return is necessary only if the next character you want to type is a printing
  1043. character,
  1044. Rubout,
  1045. Return,
  1046. or another search command,
  1047. since those are the characters that have special meanings inside the search.
  1048. X.LP
  1049. Sometimes you search for "FOO" and find it,
  1050. but not the one you hoped to find.
  1051. Perhaps there is a second FOO that you forgot about,
  1052. after the one you just found.
  1053. Then type another C-S and the cursor will find the next FOO.
  1054. This can be done any number of times.
  1055. If you overshoot,
  1056. you can return to previous finds by rubbing out the C-S's.
  1057. X.LP
  1058. After you exit a search,
  1059. you can search for the same string again by typing just C-S C-S:
  1060. one C-S command to start the search and then
  1061. another C-S to mean "search again for the same string".
  1062. X.LP
  1063. If your string is not found at all,
  1064. the message line says "Failing I-search".
  1065. The cursor is after the place where \s-2JOVE\s0 found as much of
  1066. your string as it could.
  1067. Thus,
  1068. if you search for FOOT and there is no FOOT,
  1069. you might see the cursor after the FOO in FOOL.
  1070. At this point there are several things you can do.
  1071. If your string was mistyped,
  1072. you can rub some of it out and correct it.
  1073. If you like the place you have found,
  1074. you can type Return or some other \s-2JOVE\s0 command
  1075. to "accept what the search offered".
  1076. Or you can type C-G,
  1077. which undoes the search altogether and positions you back where you started
  1078. the search.
  1079. X.LP
  1080. You can also type C-R at any time to start searching backwards.
  1081. If a search fails because the place you started was too late in the file,
  1082. you should do this.
  1083. Repeated C-R's keep looking backward for more occurrences of the last search string.
  1084. A C-S starts going forward again.
  1085. C-R's can be rubbed out just like anything else.
  1086. X.NH 2
  1087. Searching with Regular Expressions
  1088. X.XS \n(PN 5n
  1089. X\*(SN Searching with Regular Expressions
  1090. X.XE
  1091. X.LP
  1092. In addition to the searching facilities described above,
  1093. X\s-2JOVE\s0
  1094. can search for patterns using regular expressions.
  1095. The handling of regular expressions in \s-2JOVE\s0 is like that of \fIed(1)\fP
  1096. or \fIvi(1)\fP, but with some notable additions.
  1097. The extra metacharacters understood by \s-2JOVE\s0 are \e<,
  1098. X\e>,
  1099. X\e\|| and \e\|{.
  1100. The first two of these match the beginnings and endings of words;
  1101. Thus the search pattern,
  1102. X"\|\e<Exec" would match all words beginning with the letters "Exec".
  1103. X.LP
  1104. An \e\|| signals the beginning of an alternative \(em that is, the
  1105. pattern "foo\e\||bar" would match either "foo" or "bar".  The "curly
  1106. brace" is a way of introducing several sub-alternatives into a pattern.
  1107. It parallels the [] construct of regular expressions, except it specifies
  1108. a list of alternative words instead of just alternative characters.  So
  1109. the pattern "foo\e\|{bar,baz\e\|}bie" matches "foobarbie" or "foobazbie".
  1110. X.LP
  1111. X\s-2JOVE\s0 only regards metacharacters as special if the variable
  1112. X\fImatch-regular-expressions\fP is set to "on".
  1113. The ability to have \s-2JOVE\s0 ignore these characters is useful if
  1114. you're editing a document about patterns and regular expressions or
  1115. when a novice is learning \s-2JOVE\s0.
  1116. X.LP
  1117. Another variable that affects searching is \fIcase-ignore-search\fP.  If
  1118. this variable is set to "on" then upper case and lower case letters are
  1119. considered equal.
  1120. X.NH 1
  1121. Replacement Commands
  1122. X.XS \n(PN
  1123. X\*(SN Replacement Commands
  1124. X.XE
  1125. X.LP
  1126. Global search-and-replace operations are not needed as often in \s-2JOVE\s0
  1127. as they are in other editors,
  1128. but they are available.
  1129. In addition to
  1130. the simple Replace operation which is like that found in most editors,
  1131. there is a Query Replace operation which asks,
  1132. for each occurrence of the pattern,
  1133. whether to replace it.
  1134. X.NH 2
  1135. Global replacement
  1136. X.XS \n(PN 5n
  1137. X\*(SN Global Replacement
  1138. X.XE
  1139. X.LP
  1140. To replace every occurrence of FOO after point with BAR,
  1141. you can do, e.g., "ESC R FOO<return>BAR" as the \fIreplace-string\fP command
  1142. is bound to the ESC R.
  1143. Replacement takes place only between point and the end of the buffer
  1144. so if you want to cover the whole buffer you must go to the beginning first.
  1145. X.NH 2
  1146. Query Replace
  1147. X.XS \n(PN 5n
  1148. X\*(SN Query Replace
  1149. X.XE
  1150. X.LP
  1151. If you want to change only some of the occurrences of FOO,
  1152. not all,
  1153. then the global \fIreplace-string\fP is inappropriate;
  1154. Instead,
  1155. use, e.g., "ESC Q FOO<return>BAR", to run the command \fIquery-replace-string\fP.
  1156. This displays each occurrence of FOO and waits for you to say whether
  1157. to replace it with a BAR.
  1158. The things you can type when you are shown an occurrence of FOO are:
  1159. X.IP "Space" 15n
  1160. to replace the FOO.
  1161. X.IP "Rubout" 15n
  1162. to skip to the next FOO without replacing this one.
  1163. X.IP "Return" 15n
  1164. to stop without doing any more replacements.
  1165. X.IP "Period" 15n
  1166. to replace this FOO and then stop.
  1167. X.IP "! or P" 15n
  1168. to replace all remaining FOO's without asking.
  1169. X.IP "C-R or R" 15n
  1170. to enter a recursive editing level,
  1171. in case the FOO needs to be edited rather than just replaced with a BAR.
  1172. When you are done,
  1173. exit the recursive editing level with C-X C-C and the next FOO will
  1174. be displayed.
  1175. X.IP "C-W" 15n
  1176. to delete the FOO, and then start editing the buffer.
  1177. When you are finished editing whatever is to replace the FOO,
  1178. exit the recursive editing level with C-X C-C
  1179. and the next FOO will be displayed.
  1180. X.IP "U" 15n
  1181. move to the last replacement and undo it.
  1182. X.LP
  1183. Another alternative is using \fIreplace-in-region\fP which is just like
  1184. X\fIreplace-string\fP except it searches only within the region.
  1185. X.LP
  1186. END_OF_FILE
  1187. if test 41172 -ne `wc -c <'./doc/jove.1'`; then
  1188.     echo shar: \"'./doc/jove.1'\" unpacked with wrong size!
  1189. fi
  1190. # end of './doc/jove.1'
  1191. fi
  1192. echo shar: End of archive 19 \(of 21\).
  1193. cp /dev/null ark19isdone
  1194. MISSING=""
  1195. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ; do
  1196.     if test ! -f ark${I}isdone ; then
  1197.     MISSING="${MISSING} ${I}"
  1198.     fi
  1199. done
  1200. if test "${MISSING}" = "" ; then
  1201.     echo You have unpacked all 21 archives.
  1202.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1203. else
  1204.     echo You still need to unpack the following archives:
  1205.     echo "        " ${MISSING}
  1206. fi
  1207. ##  End of shell archive.
  1208. exit 0
  1209.