|
|
1.1 root 1: .\" @(#)jove.3 6.1 (Berkeley) 5/30/86
2: .\"
3: .NH 1
4: Directory Handling
5: .XS \n(PN
6: \*(SN Directory Handling
7: .XE
8: .LP
9: To save having to use absolute pathnames when you want to edit a nearby file
10: \s-2JOVE\s0 allows you to move around the
11: .UX
12: filesystem just as the c-shell does.
13: These commands are:
14: .IP "cd dir" 15n
15: Change to the specified directory.
16: .IP "pushd [dir]"
17: Like \fIcd\fP, but save the old directory on the directory stack.
18: With no directory argument, simply exchange the top two directories
19: on the stack and \fIcd\fP to the new top.
20: .IP "popd"
21: Take the current directory off the stack and \fIcd\fP to the directory now
22: at the top.
23: .IP "dirs"
24: Display the contents of the directory stack.
25: .LP
26: The names and behavior of these commands were chosen to mimic those in the c-shell.
27: .NH 1
28: Editing C Programs
29: .XS \n(PN
30: \*(SN Editing C Programs
31: .XE
32: .LP
33: This section details the support provided by \s-2JOVE\s0
34: for working on C programs.
35: .NH 2
36: Indentation Commands
37: .XS \n(PN 5n
38: \*(SN Indentation Commands
39: .XE
40: .LP
41: To save having to lay out C programs "by hand", \s-2JOVE\s0
42: has an idea of the correct indentation of a line,
43: based on the surrounding context.
44: When you are in C Mode, \s-2JOVE\s0 treats tabs specially \(em
45: typing a tab at the beginning of a new line means "indent to
46: the right place".
47: Closing braces are also handled specially, and are indented
48: to match the corresponding open brace.
49: .NH 2
50: Parenthesis and Brace Matching
51: .XS \n(PN 5n
52: \*(SN Parenthesis and Brace Matching
53: .XE
54: .LP
55: To check that parentheses and braces match the way you think they do,
56: turn on \fIShow Match\fP mode (ESC X show-match-mode). Then, whenever
57: you type a close brace or parenthesis, the cursor moves momentarily to
58: the matching opener, if it's currently visible. If it's not visible,
59: \s-2JOVE\s0 displays the line containing the matching opener on the message
60: line.
61: .NH 2
62: C Tags
63: .XS \n(PN 5n
64: \*(SN C Tags
65: .XE
66: .LP
67: Often when you are editing a C program,
68: especially someone else's code,
69: you see a function call and wonder what that function does.
70: You then search for the function within the current file and if you're
71: lucky find
72: the definition, finally returning to the original spot when you are done.
73: However, if are unlucky, the function turns out to be external
74: (defined in another file) and
75: you have to suspend the edit,
76: \fIgrep\fP for the function name in every .c that might contain it,
77: and finally visit the appropriate file.
78: .LP
79: To avoid this diversion or the need to remember which
80: function is defined in which file,
81: Berkeley
82: .UX
83: has a program called \fIctags(1)\fP, which
84: takes a set of source files and looks for function
85: definitions, producing a file called \fItags\fP as its output.
86: .LP
87: \s-2JOVE\s0 has a command called C-X T (\fIfind-tag\fP)
88: that prompts you for the name of a function (a \fItag\fP), looks up
89: the tag reference in the previously constructed tags file,
90: then visits the file containing that tag in a new buffer,
91: with point positioned at the definition of the function.
92: There is another version of this command, namely \fIfind-tag-at-point\fP,
93: that uses the identifier at
94: .I point.
95: .LP
96: So, when you've added new functions to a module, or moved some old
97: ones around, run the \fIctags\fP program to regenerate the \fItags\fP file.
98: \s-2JOVE\s0 looks in the file specified in the \fItag-file\fP variable. The
99: default is "./tags", that is, the tag file in the current directory. If you
100: wish to use an alternate tag file, you use C-U\ C-X\ T, and \s-2JOVE\s0 will
101: prompt for a file name. If you find yourself specifying the same file again
102: and again, you can set \fItag-file\fP to that file, and run
103: \fIfind-tag\fP with no numeric argument.
104: .LP
105: To begin an editing session looking for a particular tag, use
106: the \fI\-t tag\fP command line option to \s-2JOVE\s0.
107: For example, say you wanted to look at the file containing the tag
108: \fISkipChar\fP, you would invoke \s-2JOVE\s0 as:
109: .DS I
110: .I
111: % jove \-t SkipChar
112: .R
113: .DE
114: .NH 2
115: Compiling Your Program
116: .XS \n(PN 5n
117: \*(SN Compiling Your Program
118: .XE
119: .LP
120: You've typed in a program or altered an existing one and now you
121: want to run it through the compiler to check for errors.
122: To save having to suspend the edit,
123: run the compiler,
124: scribble down error messages, and then resume the edit,
125: \s-2JOVE\s0 allows you to compile your code while in the editor.
126: This is done with the C-X C-E (\fIcompile-it\fP) command.
127: If you run \fIcompile-it\fP with no argument
128: it runs the
129: .UX
130: \fImake\fP
131: program into a buffer;
132: If you need a special command or want to pass arguments to \fImake\fP,
133: run \fIcompile-it\fP with any argument (C-U is good enough) and you
134: will be prompted for the command to execute.
135: .LP
136: If any error messages are produced, they are treated specially by \s-2JOVE\s0.
137: That treatment is the subject of the next section.
138: .NH 2
139: Error Message Parsing and Spelling Checking
140: .XS \n(PN
141: \*(SN Error Message Parsing
142: \*(SN Spelling Checking
143: .XE
144: .LP
145: \s-2JOVE\s0 knows how to interpret the error messages from many
146: .UX
147: commands;
148: In particular,
149: the messages from \fIcc\fP,
150: \fIgrep\fP and \fIlint\fP can be understood.
151: After running the \fIcompile-it\fP command,
152: the \fIparse-errors\fP command is automatically executed,
153: and any errors found are displayed in a new buffer.
154: The files whose names are found in parsing the error messages are each
155: brought into \s-2JOVE\s0 buffers and the point is positioned at the first error
156: in the first file.
157: The commands \fIcurrent-error\fP, C-X C-N (\fInext-error\fP), and
158: C-X C-P (\fIprevious-error\fP)
159: can be used to traverse the list of errors.
160: .LP
161: If you already have a file called
162: \fIerrs\fP containing, say, c compiler messages then you can get \s-2JOVE\s0 to interpret the messages by
163: invoking it as:
164: .DS I
165: .I
166: % jove \-p errs
167: .R
168: .DE
169: .LP
170: \s-2JOVE\s0 has a special mechanism for checking the the spelling of a document;
171: It runs the
172: .UX
173: spell program into a buffer.
174: You then delete from this buffer all those words that are not spelling
175: errors and then \s-2JOVE\s0 runs the \fIparse-spelling-errors\fP command to
176: yield a list of errors just as in the last section.
177: .NH 1
178: Simple Customization
179: .XS \n(PN
180: \*(SN Simple Customization
181: .XE
182: .LP
183: .NH 2
184: Major Modes
185: .XS \n(PN 5n
186: \*(SN Major Modes
187: .XE
188: .LP
189: To help with editing particular types of file, say a paper or a C program,
190: \s-2JOVE\s0 has several \fImajor modes\fP.
191: These are as follows:
192: .NH 3
193: Text mode
194: .XS \n(PN 10n
195: \*(SN Text mode
196: .XE
197: .LP
198: This is the default major mode. Nothing special is done.
199: .NH 3
200: C mode
201: .XS \n(PN 10n
202: \*(SN C mode
203: .XE
204: .LP
205: This mode affects the behavior of the tab and parentheses characters.
206: Instead of just inserting the tab, \s-2JOVE\s0 determines
207: where the text "ought" to line up for the C language and tabs to that position
208: instead. The same thing happens with the close brace and close parenthesis;
209: they are tabbed to the "right" place and then inserted.
210: Using the \fIauto-execute-command\fP command, you can make \s-2JOVE\s0 enter
211: \fIC Mode\fP whenever you edit a file whose name ends in \fI.c\fP.
212: .NH 3
213: Lisp mode
214: .XS \n(PN 10n
215: \*(SN Lisp mode
216: .XE
217: .LP
218: This mode is analogous to \fIC Mode\fP,
219: but performs the indentation needed to lay out Lisp programs properly.
220: Note also the \fIgrind-s-expr\fP command that prettyprints an
221: \fIs-expression\fP and the \fIkill-mode-expression\fP command.
222: .NH 2
223: Minor Modes
224: .XS \n(PN 5n
225: \*(SN Minor Modes
226: .XE
227: .LP
228: In addition to the major modes,
229: \s-2JOVE\s0 has a set of minor modes.
230: These are as follows:
231: .NH 3
232: Auto Indent
233: .XS \n(PN 10n
234: \*(SN Auto Indent
235: .XE
236: .LP
237: In this mode,
238: \s-2JOVE\s0 indents each line the same way as that above it. That is,
239: the Return key in this mode acts as the Linefeed key ordinarily does.
240: .NH 3
241: Show Match
242: .XS \n(PN 10n
243: \*(SN Show Match
244: .XE
245: .LP
246: Move the cursor momentarily to the matching opening parenthesis when a closing
247: parenthesis is typed.
248: .NH 3
249: Auto Fill
250: .XS \n(PN 10n
251: \*(SN Auto Fill
252: .XE
253: .LP
254: In \fIAuto Fill\fP mode,
255: a newline is automatically inserted when the line length
256: exceeds the right margin.
257: This way,
258: you can type a whole paper without having to use the Return key.
259: .NH 3
260: Over Write
261: .XS \n(PN 10n
262: \*(SN Over Write
263: .XE
264: .LP
265: In this mode,
266: any text typed in will replace the previous contents.
267: (The default is for new text to be inserted and "push" the old along.)
268: This is useful for editing an already-formatted diagram in which you
269: want to change some things without moving other things around on the
270: screen.
271: .NH 3
272: Word Abbrev
273: .XS \n(PN 10n
274: \*(SN Word Abbrev
275: .XE
276: .LP
277: In this mode, every word you type is compared to a list of word
278: abbreviations; whenever you type an abbreviation, it is replaced
279: by the text that it abbreviates.
280: This can save typing if a particular word or phrase must be entered
281: many times.
282: The abbreviations and their expansions are held in a file that looks like:
283: .DS I
284: abbrev:phrase
285: .DE
286: This file can be set up in your \fI~/.\|joverc\fP with the \fIread-word-abbrev-file\fP command.
287: Then, whenever you are editing a buffer in \fIWord Abbrev\fP mode,
288: \s-2JOVE\s0 checks for the abbreviations you've given.
289: See also the commands
290: \fIread-word-abbrev-file\fP,
291: \fIwrite-word-abbrev-file\fP,
292: \fIedit-word-abbrevs\fP,
293: \fIdefine-global-word-abbrev\fP,
294: \fIdefine-mode-word-abbrev\fP,
295: and \fIbind-macro-to-word-abbrev\fP,
296: and the variable \fIauto-case-abbrev\fP.
297: .NH 2
298: Variables
299: .XS \n(PN 5n
300: \*(SN Variables
301: .XE
302: .LP
303: \s-2JOVE\s0 can be tailored to suit your needs by changing the
304: values of variables.
305: A \s-2JOVE\s0 variable can be given a value with the \fIset\fP command,
306: and its value displayed with the \fIprint\fP command.
307: .LP
308: The variables \s-2JOVE\s0 understands are listed along with the commands
309: in the alphabetical list at the end of this document.
310: .NH 2
311: Key Re-binding
312: .XS \n(PN 5n
313: \*(SN Key Re-binding
314: .XE
315: .LP
316: Many of the commands built into \s-2JOVE\s0 are not bound to
317: specific keys.
318: The command handler in
319: \s-2JOVE\s0 is used to invoke these commands and is activated
320: by the \fIexecute-extended-command\fP command (ESC X).
321: When the name of a command typed in is unambiguous,
322: that command will be executed.
323: Since it is very slow to have
324: to type in the name of each command every time it is needed,
325: \s-2JOVE\s0 makes it possible to \fIbind\fP commands to keys.
326: When a command is
327: \fIbound\fP to a key any future hits on that key will invoke that command.
328: All the printing characters are initially bound to the
329: command \fIself-insert\fP.
330: Thus, typing any printing character causes it to be inserted into the text.
331: Any of the existing commands can be bound to any key.
332: (A \fIkey\fP may actually be a \fIcontrol character\fP
333: or an \fIescape sequence\fP as explained previously under
334: \fICommand Input Conventions\fP).
335: .LP
336: Since there are more commands than there are keys,
337: two keys are treated as \fIprefix\fP commands.
338: When a key bound to one of the prefix commands is typed,
339: the next character
340: typed is interpreted on the basis that it was preceded by one of the
341: prefix keys.
342: Initially ^X and ESC are the prefix keys and
343: many of the built in commands are initially bound to these "two stroke" keys.
344: (For historical reasons, the Escape key is often referred to as "Meta").
345: .NH 2
346: Keyboard Macros
347: .XS \n(PN 5n
348: \*(SN Keyboard Macros
349: .XE
350: .LP
351: Although \s-2JOVE\s0 has many powerful commands,
352: you often find that you have a task that no individual command can do.
353: \s-2JOVE\s0 allows you to define your own commands from sequences
354: of existing ones "by example";
355: Such a sequence is termed a \fImacro\fP.
356: The procedure is as follows:
357: First you type the \fIstart-remembering\fP command,
358: usually bound to C-X (.
359: Next you "perform" the commands which as they are being executed are
360: also
361: remembered, which will constitute the body of the macro.
362: Then you give the \fIstop-remembering\fP command, usually bound to
363: C-X ).
364: You now have a \fIkeyboard macro\fP.
365: To run this command sequence again,
366: use the command \fIexecute-keyboard-macro\fP, usually bound to
367: C-X E.
368: You may find this bothersome to type and re-type,
369: so there is a way to bind the macro to a key.
370: First,
371: you must give the keyboard macro a name using the
372: \fIname-keyboard-macro\fP command.
373: Then the binding is made with the \fIbind-macro-to-key\fP command.
374: We're still not finished because all this hard work will be lost
375: if you leave \s-2JOVE\s0.
376: What you do is to save your macros into a file
377: with the \fIwrite-macros-to-file\fP command.
378: There is a corresponding \fIread-macros-from-file\fP command to retrieve
379: your macros in the next editing session.
380: .NH 2
381: Initialization Files
382: .XS \n(PN 5n
383: \*(SN Initialization Files
384: .XE
385: .LP
386: Users will likely want to modify the default key bindings to their liking.
387: Since it would be quite annoying to have to set up the bindings
388: each time \s-2JOVE\s0 is started up,
389: \s-2JOVE\s0 has the ability to read in a "startup" file.
390: Whenever \s-2JOVE\s0 is started,
391: it reads commands from the file \fI.\|joverc\fP in the user's home directory.
392: These commands are read as
393: if they were typed to the command handler (ESC X) during an edit.
394: There can be only one command per line in the startup file.
395: If there is a file \fI/usr/lib/jove/joverc\fP,
396: then this file will be read before the user's
397: .I .\|joverc
398: file.
399: This can be used to set up a system-wide default startup mode for
400: \s-2JOVE\s0
401: that is tailored to the needs of that system.
402: .LP
403: The \fIsource\fP command can be used to read commands from a specified file
404: at any time during an editing session,
405: even from inside the \fI.\|joverc\fP file.
406: This means that a macro can be used to change the key bindings,
407: e.g., to enter a mode,
408: by reading from a specified file which contains all the necessary bindings.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.