Mercurial > hg > xemacs-beta
diff lisp/hyperbole/kotl/EXAMPLE.kotl @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 4103f0995bd7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/hyperbole/kotl/EXAMPLE.kotl Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,479 @@ +;; -*- Mode: kotl -*- +"Kotl-4.0" ;; file-format + + 1 The outliner is a part of the Hyperbole information management system. + It produces hierarchically structured files consisting of trees of + cells. + + 1a A cell is an element of the outline which has its own display label + and unique, permanent identifier (idstamp). + + 1b Idstamps support the creation of hyperlinks to cells which are + maintained as the structure of an outline changes. + + 2 Features implemented include: + + 2a Full on screen editing (just like a Macintosh). Click to type in a + node (we call them cells) and just enter text. Structure is + automatically maintained for you. All of the standard Emacs editor + command set is supported both through keyboard and mouse interaction. + + 2b Advanced outline processing + + 2b1 Autonumbering: Full auto-numbering in Augment (1a2) or legal + (1.1.2) formats. Augment style is the default. Single level + autonumbering (only the last part of the level number is shown), + as commonly seen in outliner products, is also available, though + it has not been tested very much and so is not recommended. Use + {C-c C-l ?} to see the full set of label types and to select a + different label type. + + 2b2 Label Separators: By default, the outliner separates labels from + cell contents by two spaces. If you want to change the separator + for the current outline, use {C-c M-l}. {C-u C-c M-l} will + additionally change the default separator value used when new + outlines are created. For example, use the value ". " to get a + trailing period after each cell label. The separator must be at + least two characters long. + + 2b3 Cell Creation: {C-j} adds a new cell as a sibling following the + current cell. A non-negative prefix argument, {C-u C-j} or {C-c + a} adds the cell as a child of the current cell. {C-c p} adds the + cell as the sibling of the current cell's parent. + + 2b4 Cell and Tree Deletion: {C-c C-k} kills the current cell and its + entire subtree. {C-c k} kills the contents of a cell from point + through the end of the cell. {C-u C-c k} kills the entire + contents of the cell regardless of the location of point. You may + then yank the contents into another cell with {C-y}. + + 2b5 Tree Demotion and Promotion: Trees may be demoted or promoted by + hitting {TAB} or {M-TAB} respectively, as in most outliners today + (their sub-levels move with them). {M-0 TAB} and {M-0 M-TAB} will + demote and promote trees and will additionally refill each cell + which has not been specially marked to prevent refilling. + + You can also use a command line interface and either enter cell + ids or select the cells to operate upon by using your mouse. + + 2b6 Cell and Tree Filling: {M-q} or {M-j} refills a paragraph within a + cell so that its lines wrap within the current margin settings. + {C-c M-q} or {C-c M-j} refills all paragraphs within a cell. + {C-M-q} or {C-M-j} refills all cells within a tree. + + Set the variable, kotl-mode:refill-flag, to t if you want moving, + promoting, demoting, exchanging, splitting and appending cells to + also automatically refill each cell. + + 2b7 Cursor Movement: In addition to normal Emacs movement commands, + you can move within a cell or from one cell or tree to another. + + {C-c ,} - Move to the beginning of the current cell. + {C-c .} - Move to the end of the current cell. + + {C-c C-n} - Move to the next visible cell, regardless of level. + {C-c C-p} - Move to the prev visible cell, regardless of level. + + {C-c C-f} - Move forward to this cell's successor, if any. + {C-c C-b} - Move backward to this cell's predecessor, if any. + + {C-c C-d} - Move to first child of current cell, if any. + + {C-c C-u} - Move to parent cell of current cell, if any. + + {C-c <} - Move to the first sibling at the current level. + {C-c >} - Move to the last sibling at the current level. + + {C-c ^} - Move to the level 1 root of the current tree. + {C-c $} - Move to the last cell in the tree rooted at point. + + 2b8 Tree Movement and Copying: Entire outline trees can be moved or + copied with single commands. Simply invoke the desired command + and then double click with the Action Key on the desired root cell + for each argument for which you are prompted. + + Copying and moving only work within a single outline right now, so + don't use them to move trees across different outline files. You + can, however, copy an outline tree to a non-outline buffer with: + {C-c M-c} - Copy a koutline tree to a non-koutline buffer. + {C-c @} - Copy a koutline tree to an outgoing mail message. + + {C-c c} - Copy <tree> to follow as sibling of <cell>. + {C-u C-c c} - Copy <tree> to follow as first child of <cell>. + + {C-c C-c} - Copy <tree> to precede <cell>. + {C-u C-c C-c} - Copy <tree> as first child of the parent of <cell>. + + {C-c m} - Move <tree> to follow as sibling of <cell>. + {C-u C-c m} - Move <tree> to follow as first child of <cell>. + + {C-c C-m} - Move <tree> to precede <cell>. + {C-u C-c C-m} - Move <tree> as first child of the parent of <cell>. + + If you have mouse support under Hyperbole, you can move entire + trees with mouse clicks. Simply click the Assist Key within the + indentation to the left of a cell text and you will be prompted + for a tree to move. Double click the Action Key within the body + of the root cell of the tree to move and then double click within + the body of the root cell of the tree you want it to follow. + + 2b9 Cell Transposition: The move and copy commands rearrange entire + trees. The following two commands exchange the locations of two + cells. + + 2b9a {C-c e} prompts for two cell addresses and exchanges the cells. + + 2b9b {C-c t} does not prompt. It exchanges the current and + preceding cells. If there is no preceding cell it exchanges + the current and next cell. + + {C-c t} with a prefix argument of zero exchanges the cells in + which point and mark fall. + + {C-c t} with a non-zero numeric prefix argument, N, moves + the current tree past maximally the next N visible cells. If + there are fewer visible, it makes the current cell the last + cell in the outline. + + 2b10 Cell Splitting: You can split one cell into two adjacent cells + with {C-c s}. This leaves the cell contents preceding point in + the current cell, minus any trailing whitespace, and moves the + contents following point to a new sibling cell which is inserted + into the outline. {C-u C-c s} adds the new cell as the first + child of the original cell, rather than as its sibling. + + All cell attributes in the original cell are propagated to the new + one. + + 2b11 Cell Appending: {C-c +} appends the contents of a specified cell + to the end of another cell. + + 2b12 Hiding and Showing: Individual cells, branches, or particular + levels in the outline may be hidden or shown. These commands work + even when an outline buffer is read-only, e.g. when its file is + not checked out of a version control system yet. + + 2b12a {C-c C-h} - Hide (collapse) tree rooted at point. + {C-c C-s} - Show (expand) tree rooted at point. + + {C-c C-a} - Show (expand) all cells in the outline. + {C-x $} - Show all cells down to a particular level. The + user is prompted for the level or a prefix + argument may be given. + + {C-M-h} - Hide subtree at point, excluding root. + {M-x kotl-mode:show-subtree} - Show subtree at point. + + {C-c C-o} - Overview, show only first line of outline cells. + {C-c C-t} - Top-level, hide all cells below level 1 and show + only the first line of each level 1 cell. + + 2b12b A click or press of the Action Key within a cell's body, but + not on a button, toggles between hiding and showing the tree + rooted at point. + + 2b13 Cell Identifiers: Permanent ids are associated with each cell and + can be used in hyperlinks that are maintained as cells are + reordered in a file. (These ids may also be displayed in place of + the outline level relative ids. Use {C-c C-l id RET}.) Permanent + ids are numbered from 0, where 0 is the root node of the entire + outline. This node is never visible within the outline. + Permanent ids always begin with a 0, as in 012, to distinguish + them from relative ids. + + 2b14 Cell Attributes: Each cell has its own attribute list. The + attribute lists for the cells in the tree rooted at point can be + displayed by pressing the Assist Key. {C-c h} prompts for a kcell + id and displays its attributes. {C-u C-c h} prompts for a kcell + id and displays the attributes for it and its subtree; use 0 as + the kcell id to see attributes for all visible cells in the + outline. + + Use {C-c C-i} to add an attribute or to modify an existing + attribute to the cell at point. + + 2b15 File Insertion: The elements of another buffer or file may be + inserted into a koutline as a set of cells by using the {C-x i} + command. When prompted, you may use a buffer name or file name + from which to insert. + + 2b15a The cells will be inserted as the successors of the current + cell unless {C-u C-x i} is used and then they are inserted as + the initial children of the current cell. + + 2b15b See the documentation for the variables, kimport:mode-alist and + kimport:suffix-alist, for information on mode and + suffix-specific conversions performed on files before they are + inserted. This same conversion process applies if you invoke + {M-x kotl-mode RET} in a non-koutline buffer or if you perform + a generic file import as described in <@ 2b16>. + + 2b15c Use {M-x kotl-mode:insert-file-contents RET} to insert the + entire contents of a file into the current cell at the location + of point. + + 2b16 File Importation: The outliner presently supports conversion of + three types of files into koutline files. You can choose to + import a file into an existing koutline, following the tree at + point, or to create a new koutline of the imported file contents. + {M-x kimport:file RET} will select the importation type based on + the buffer or file name suffix of the file to import. Use one of + the following commands if you want to control the type of + importation explicitly. + + 2b16a Text Files + + 2b16a1 In a text buffer, use {M-x kotl-mode RET} to convert + the buffer into a koutline in-place. You will lose the old + format of the buffer when you do this. + + 2b16a2 Use {M-x kimport:text RET} and you will be prompted for a + text buffer or file to import and the new koutline buffer or + file to create from its text. It will also import the + contents, attributes and level structure of cells from a + koutline. + + With this command, your original file remains intact. + + 2b16b Star Outline Files: Star outlines are standard Emacs outlines + where each entry begins with one or more asterisk characters. + Use {M-x kimport:star-outline RET} and you will be prompted + for the star outline buffer or file to import and the new + koutline buffer or file to create. + + 2b16c Augment Files Numbered on the Right-Side: (Skip this if you are + unfamiliar with this sort of file.) Files exported from the + Augment system as text often have alphanumeric statement + identifiers on the right side. + + Use {M-x kimport:aug-post-outline RET} and you will be prompted + for the augment buffer or file to import and the koutline to + create. + + 2b17 View Specification: Flexible views of outlines may be specified + with succinct single character codes. + + 2b17a The current view spec is shown in the modeline after the buffer + name, delimited by <|>. + + 2b17b The current view spec is saved whenever the outline is saved. + The next time the outline is read in, this will be the initial + view. The standard initial viewspec is <|ben>. + + 2b17c {C-c C-v} prompts for a view spec string in which the following + codes are valid. Any invalid characters in a view spec are + ignored. + + 2b17c1 a: Show all cell levels and all lines in cells. + + 2b17c2 b: Turn on blank lines between cells. Without this code, + blank lines will be turned off. You can also use the + {C-c b} key binding to toggle line numbers on and off + independent of any other view settings. + + 2b17c3 cN: Hide any lines greater than N in each cell. 0 means + don't cutoff any lines. + + 2b17c4 e: Show ellipses when some content is hidden. + + 2b17c5 lN: Hide cells at levels deeper than N. 0 means don't hide + any cells. + + 2b17c6 n: Turn on the default label type. + n0: Display idstamps. + n1: Display alpha labels. + n2: Display partial alpha labels (don't use this). + n.: Display legal labels. + n*: Display star labels. + n~: Turn off labels. (n viewspec is removed from modeline). + + 2b17d Try a view spec of 'c2l1' to turn off blank lines, to clip each + cell after its second line, and to hide all cells below level + one. + + 2c Hyperlinks may be embedded in cells and may refer to other cells. + Explicit Hyperbole buttons may be created as usual via mouse drags, + see "(hyperbole.info)By Dragging". A klink is a special implicit + link button that jumps to a specific outline cell. + + 2c1 Here are three klink examples: + + 2c1a <@ 2b=06> jumps to the cell within this outline which has + permanent id `06' and relative id `2b', namely the preceding + sibling of this cell's parent. <@ 06> does the same thing, as + does <@ 2b>, though this latter form will not maintain the link + properly if the cell is moved elsewhere within the outline. + + 2c1b <EXAMPLE.kotl, 3=012 |c1e> displays the named file, starting at + the unimplemented features section whose permanent identifer is + 012, with the view specification of: blank lines turned off, + cutoff after one line per cell, and show ellipses for cells or + trees which are clipped. + + 2c1c <|ben> is a klink consisting of just a view specification. + When activated, it sets the view in the current outline to + display blank lines, ellipses following collapsed lines and + standard alphanumeric numbering. + + 2c2 There are a number of easy ways to insert klinks into koutlines. + If you have mouse support under Hyperbole, simply click the Action + Key within the indentation to the left of a cell text. If you + then double click on some cell, a link to that cell will be + inserted where you started. From a keyboard, use {C-c l} when in + a koutline or {C-h h o l} when not in a koutline to insert a + klink. + + 2d The outliner code runs on virtually any UNIX system. It supports dumb + terminal, X window, and NEXTSTEP (Display Postscript) displays. + + 3 Features remaining to be implemented: + + 3a Branch handling commands (all cells at same level). + + 3b Copying a single cell without its subtree. + + 3c Replacing one cell or one tree with another. + + 3d Transposing two trees, rather than two cells. + + 3e A small amount of work remains to enable setting different per level + fonts and colors, so that outline levels are visually easy to + distinguish. + + 3f Flexible view handling has been only partially implemented. + + 3g The code to export from koutlines to other formats has not yet been + written. Exporting to HTML, for example would be very useful. + + +"ben" ;; kvspec:current +74 ;; id-counter +alpha ;; label-type +3 ;; label-min-width +" " ;; label-separator +3 ;; level-indent + +;; depth-first kcell attributes +[[0 + (creator "weiner@oakhill.sps.mot.com" create-time "19951102:11:15:03" id-counter 74 file "/usr1/dingus/weiner/hypb/kotl/EXAMPLE.kotl")] + [20 + (creator "weiner" create-time "19940104:17:38:28")] + [34 + (creator "weiner@pts.mot.com" create-time "19940610:16:43:55")] + [35 + (creator "weiner@pts.mot.com" create-time "19940610:16:44:03")] + [4 + (creator "weiner" create-time "19940104:17:38:29")] + [5 + (creator "weiner" create-time "19940104:17:38:29")] + [6 + (creator "weiner" create-time "19940104:17:38:29")] + [14 + (creator "weiner" create-time "19940104:17:38:29")] + [67 + (creator "weiner@oakhill.sps.mot.com" create-time "19951028:04:29:13" no-fill t)] + [15 + (creator "weiner" create-time "19940104:17:38:29")] + [31 + (creator "weiner" create-time "19940306:18:11:43")] + [7 + (creator "weiner" create-time "19940104:17:38:29")] + [46 + (creator "weiner@oakhill.sps.mot.com" create-time "19950614:21:35:17")] + [43 + (creator "weiner@pts.mot.com" create-time "19940610:22:00:46")] + [22 + (creator "weiner" create-time "19940127:22:41:42")] + [32 + (creator "weiner@pts.mot.com" create-time "19940610:16:31:28")] + [41 + (creator "weiner@pts.mot.com" create-time "19940610:18:55:09")] + [42 + (creator "weiner@pts.mot.com" create-time "19940610:18:55:57")] + [33 + (creator "weiner@pts.mot.com" create-time "19940610:16:31:29")] + [47 + (creator "weiner@oakhill.sps.mot.com" create-time "19951022:22:59:26" no-fill t)] + [8 + (creator "weiner" create-time "19940104:17:38:29")] + [28 + (creator "weiner" create-time "19940128:22:50:44")] + [29 + (creator "weiner" create-time "19940128:22:50:54")] + [10 + (creator "weiner" create-time "19940104:17:38:29")] + [30 + (creator "weiner" create-time "19940129:00:27:59")] + [62 + (creator "weiner@oakhill.sps.mot.com" create-time "19951026:08:32:57" no-fill t)] + [70 + (creator "weiner@oakhill.sps.mot.com" create-time "19951030:19:18:49" no-fill t)] + [71 + (creator "weiner@oakhill.sps.mot.com" create-time "19951030:19:19:40" no-fill t)] + [73 + (creator "weiner@oakhill.sps.mot.com" create-time "19951030:19:23:09" no-fill t)] + [63 + (creator "weiner@oakhill.sps.mot.com" create-time "19951026:19:31:34" no-fill t)] + [64 + (creator "weiner@oakhill.sps.mot.com" create-time "19951026:19:33:01" no-fill t)] + [69 + (creator "weiner@oakhill.sps.mot.com" create-time "19951029:06:24:35" no-fill t)] + [68 + (creator "weiner@oakhill.sps.mot.com" create-time "19951029:06:24:27" no-fill t)] + [65 + (creator "weiner@oakhill.sps.mot.com" create-time "19951026:19:33:08" no-fill t)] + [66 + (creator "weiner@oakhill.sps.mot.com" create-time "19951026:19:33:15" no-fill t)] + [48 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:05:55:19" no-fill t)] + [57 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:10:07:06" no-fill t)] + [58 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:10:07:26" no-fill t)] + [49 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:05:55:55" no-fill t)] + [55 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:08:56:41" no-fill t)] + [50 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:05:57:26" no-fill t)] + [51 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:05:58:31" no-fill t)] + [56 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:08:57:09" no-fill t)] + [52 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:05:59:59" no-fill t)] + [53 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:06:00:48" no-fill t)] + [54 + (creator "weiner@oakhill.sps.mot.com" create-time "19951023:06:05:50" no-fill t)] + [26 + (creator "weiner" create-time "19940128:03:56:23")] + [27 + (creator "weiner" create-time "19940128:22:36:54")] + [59 + (creator "weiner@oakhill.sps.mot.com" create-time "19951024:03:40:05" no-fill t)] + [60 + (creator "weiner@oakhill.sps.mot.com" create-time "19951024:03:40:13" no-fill t)] + [61 + (creator "weiner@oakhill.sps.mot.com" create-time "19951024:03:40:42" no-fill t)] + [1 + (creator "weiner" create-time "19940104:17:38:29")] + [11 + (creator "weiner" create-time "19940104:17:38:29")] + [12 + (creator "weiner" create-time "19940104:17:38:29")] + [44 + (creator "bweiner@pts.mot.com" create-time "19940728:21:56:49")] + [36 + (creator "weiner@pts.mot.com" create-time "19940610:16:49:34")] + [37 + (creator "weiner@pts.mot.com" create-time "19940610:16:50:02")] + [38 + (creator "weiner@pts.mot.com" create-time "19940610:16:50:13")] + [13 + (creator "weiner" create-time "19940104:17:38:29")] + [16 + (creator "weiner" create-time "19940104:17:38:29")] + [74 + (creator "weiner@oakhill.sps.mot.com" create-time "19951101:21:56:21" no-fill t)] + nil nil nil nil nil nil nil nil nil nil nil nil nil nil]