Annotation of 43BSDReno/share/doc/usd/17.jove/jove.3, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.