From 5a1084215f49bdcc8635d615f3f575f4e0d0dc2b Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Wed, 6 Dec 2023 14:11:14 -0800 Subject: [PATCH 1/3] Add initial draft of koutliner documentation --- interactive-demos/KOUTLINER.kotl | 125 +++++++++++++++++++++++++++++++ interactive-demos/koutliner | 74 ++++++++++++++++++ 2 files changed, 199 insertions(+) create mode 100644 interactive-demos/KOUTLINER.kotl create mode 100644 interactive-demos/koutliner diff --git a/interactive-demos/KOUTLINER.kotl b/interactive-demos/KOUTLINER.kotl new file mode 100644 index 00000000..5d92d98d --- /dev/null +++ b/interactive-demos/KOUTLINER.kotl @@ -0,0 +1,125 @@ +;; -*- Mode: kotl -*- +"Kotl-4.0" ;; file-format + + 1. The Koutliner is part of the Hypberbole information management + system. + + 2. The Koutliner produces hierarchically structered files + consisting of trees of cells. + + + 2a. A Cell is an element of the outline which has its own display + label and unique, permanent identifier (idstamp). + + + 2b. Idstamps support the creation of hyperlinks to cells which + are maintained as the structure of the outline changes. + + + 3. Starting a Koutline: + + 3a. First things first, go ahead and create a file that has the + extension ".ktol". It should start with the 1. at the + top. You'll just go ahead and add some text to that first + cell, and when you are ready to add another cell just use {C-j}. + + + 3b. Using {C-j} launches a new cell as a sibling after the + current cell. To add a cell that is a non-negative prefix + argument, use {C-u C-j} or {C-c a} which will add the cell as + a child of the current cell. Examples of this are used above. + Using {C-j} on 1. creates 2. whereas using {C-u C-j} on 2. creates 2a. + From there though we use {C-j} again to create 2b. + + 3c. Now that we know how to create more cells and add a child to + the current cell, lets talk about the autonumbering. Full + auto-numbering in Augment (1a2) or legal (1.1.2) formats. You + can change the format by using {C-c C-l} and select and + option. For the purpose of this I am using the legal format + because I find it easier to refer to, but feel free to use + whichever you are more comfortable with. + + + 3d. Great, we got our auto-numbering how we want it, let's talk + label seperators. By default the Koutliner seperates labels + from cell contents by two spaces. If you would like to change + the serperator for the current outline, use {C-c M-l}. Go + ahead and try that out and change it to ": " (no quotation + marks). Feel free to change it back if you'd like, or change + it to anything else! Now let's say you really like having the + seperator being ": ", and would like that to be the default + for all Koutliner files from now on, you can change that with + {C-u C-c M-l}. + + + 3e. We've covered how to create cells, change the numbering and + change the seperators, now it's time to talk about how to delete + cells. To test this out, create a child of this cell {C-u C-j}, + and when it takes you to that cell you realize that you really + don't need it. Well, luckily deleting it is as simple as {C-c C-k}. + Go ahead and run that, and the cell will be deleted! + + + 3f. Now lets say you simply want to get rid of the contents of a + cell without getting rid of the cell as a whole. Go ahead and + run {C-u C-c k}. You don't want to delete all the contents of + the cell, just from that cursor to the end of it? Well + Koutliner has got you covered with {C-c k}! + + + 3g. Sometimes you don't want to delete a cell, you just want to + move the position of it so your Koutline has a better + flow. Let's go ahead and test this by creating two children + of our current cell. With {C-u C-j} then {C-j}. + + + 3g1. Secondly we want this cell second. + + 3g2. Firstly, we want this cell first. To make that happen we + use {C-c m} which will prompt us with which cell we want + to move, and which cell we want afterwards. Go ahead and + change the positions of these two cells. + + + + + +"ben" ;; kvspec:current +18 ;; id-counter +alpha ;; label-type +4 ;; label-min-width +". " ;; label-separator +3 ;; level-indent + +;; depth-first kcell attributes +[[0 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:01:16" id-counter 18)] + [1 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:01:16")] + [2 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:01:49")] + [4 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:02:12")] + [5 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:02:21")] + [7 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:03:23")] + [9 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:03:34")] + [10 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:03:42")] + [11 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:05:32")] + [12 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:07:24")] + [13 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:07:53")] + [14 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:07:54")] + [15 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:08:19")] + [17 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:08:54")] + [18 + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:09:04")] + nil nil nil nil] diff --git a/interactive-demos/koutliner b/interactive-demos/koutliner new file mode 100644 index 00000000..13ded2fd --- /dev/null +++ b/interactive-demos/koutliner @@ -0,0 +1,74 @@ +;; -*- Mode: kotl -*- +"Kotl-4.0" ;; file-format + + 1: The Kourliner is part of the Hypberbole information management + system. + + 2: The Koutliner produces hierarchically structered files + consisting of trees of cells. + + 2.1: A Cell is an element of the outline which has its own display + label and unique, permanent identifier (idstamp). + + 2.2: Idstamps support the creation of hyperlinks to cells which + are maintained as the structure of the outline changes. + + 3: Starting a Koutline: + + 3.1: First things first, go ahead and create a file that has the + extension ".ktol". It should start with the 1. at the + top. You'll just go ahead and add some text to that first + cell, and when you are ready to add another cell just use {C-j}. + + 3.2: Using {C-j} launches a new cell as a sibling after the + current cell. To add a cell that is a non-negative prefix + argument, use {C-u C-j} or {C-c a} which will add the cell as + a child of the current cell. Examples of this are used + above. Using {C-j} on 1. creates 2. whereas using {C-u C-j} + on 2. creates 2a. From there though, we use {C-j} again to + create 2b. + + 3.3: Now that we know how to create more cells and add a child to + the current cell, lets talk about the autonumbering. Full + auto-numbering in Augment (1a2) or legal (1.1.2) formats. You + can change the format by using {C-c C-l} and select and + option. For the purpose of this I am using the legal format + because I find it easier to refer to, but feel free to use + whichever you are more comfortable with. + + 3.4: Great, we got our auto-numbering how we want it, let's talk + label seperators. By default the Koutliner seperates labels + from cell contents by two spaces. If you would like to change + the serperator for the current outline, use {C-c M-l}. Go + ahead and try that out and change it to ": " (no quotation + marks). Feel free to change it back if you'd like, or change + it to anything else! Now let's say you really like having the + seperator being ": ", and would like that to be the default + for all Koutliner files from now on, you can change that with + {C-u C-c M-l}. + + 3.5: We've covered how to create cells, change the numbering and + change the seperators, now it's time to talk about how to delete + cells. To test this out, create a child of this cell {C-u C-j}, + and when it takes you to that cell you realize that you really + don't need it. Well, luckily deleting it is as simple as {C-c + C-k}. Go ahead and run that, and the cell will be deleted! + + 3.6: Now lets say you simply want to get rid of the contents of a + cell without getting rid of the cell as a whole. Go ahead and + run {C-u C-c k}. You don't want to delete all the contents of + the cell, just from that cursor to the end of it? Well + Koutliner has got you covered with {C-c k}! + + 3.7: Sometimes you don't want to delete a cell, you just want to + move the position of it so your Koutline has a better + flow. Let's go ahead and test this by creating two children + of our current cell. With {C-u C-j} then {C-j}. + + + 3.7.1: Secondly we want this cell second. + + 3.7.2: Firstly, we want this cell first. To make that happen we + use {C-c m} which will prompt us with which cell we want + to move, and which cell we want afterwards. Go ahead and + change the positions of these two cells. From a4351ccd3fe155aa5944f27b48b76ffdefff2bbe Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Wed, 6 Dec 2023 14:13:24 -0800 Subject: [PATCH 2/3] Removed old file --- interactive-demos/koutliner | 74 ------------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 interactive-demos/koutliner diff --git a/interactive-demos/koutliner b/interactive-demos/koutliner deleted file mode 100644 index 13ded2fd..00000000 --- a/interactive-demos/koutliner +++ /dev/null @@ -1,74 +0,0 @@ -;; -*- Mode: kotl -*- -"Kotl-4.0" ;; file-format - - 1: The Kourliner is part of the Hypberbole information management - system. - - 2: The Koutliner produces hierarchically structered files - consisting of trees of cells. - - 2.1: A Cell is an element of the outline which has its own display - label and unique, permanent identifier (idstamp). - - 2.2: Idstamps support the creation of hyperlinks to cells which - are maintained as the structure of the outline changes. - - 3: Starting a Koutline: - - 3.1: First things first, go ahead and create a file that has the - extension ".ktol". It should start with the 1. at the - top. You'll just go ahead and add some text to that first - cell, and when you are ready to add another cell just use {C-j}. - - 3.2: Using {C-j} launches a new cell as a sibling after the - current cell. To add a cell that is a non-negative prefix - argument, use {C-u C-j} or {C-c a} which will add the cell as - a child of the current cell. Examples of this are used - above. Using {C-j} on 1. creates 2. whereas using {C-u C-j} - on 2. creates 2a. From there though, we use {C-j} again to - create 2b. - - 3.3: Now that we know how to create more cells and add a child to - the current cell, lets talk about the autonumbering. Full - auto-numbering in Augment (1a2) or legal (1.1.2) formats. You - can change the format by using {C-c C-l} and select and - option. For the purpose of this I am using the legal format - because I find it easier to refer to, but feel free to use - whichever you are more comfortable with. - - 3.4: Great, we got our auto-numbering how we want it, let's talk - label seperators. By default the Koutliner seperates labels - from cell contents by two spaces. If you would like to change - the serperator for the current outline, use {C-c M-l}. Go - ahead and try that out and change it to ": " (no quotation - marks). Feel free to change it back if you'd like, or change - it to anything else! Now let's say you really like having the - seperator being ": ", and would like that to be the default - for all Koutliner files from now on, you can change that with - {C-u C-c M-l}. - - 3.5: We've covered how to create cells, change the numbering and - change the seperators, now it's time to talk about how to delete - cells. To test this out, create a child of this cell {C-u C-j}, - and when it takes you to that cell you realize that you really - don't need it. Well, luckily deleting it is as simple as {C-c - C-k}. Go ahead and run that, and the cell will be deleted! - - 3.6: Now lets say you simply want to get rid of the contents of a - cell without getting rid of the cell as a whole. Go ahead and - run {C-u C-c k}. You don't want to delete all the contents of - the cell, just from that cursor to the end of it? Well - Koutliner has got you covered with {C-c k}! - - 3.7: Sometimes you don't want to delete a cell, you just want to - move the position of it so your Koutline has a better - flow. Let's go ahead and test this by creating two children - of our current cell. With {C-u C-j} then {C-j}. - - - 3.7.1: Secondly we want this cell second. - - 3.7.2: Firstly, we want this cell first. To make that happen we - use {C-c m} which will prompt us with which cell we want - to move, and which cell we want afterwards. Go ahead and - change the positions of these two cells. From efee55a70203caeaf8e48272357fd3bb7e17cf8a Mon Sep 17 00:00:00 2001 From: Hank Greenburg Date: Sun, 7 Jan 2024 13:08:57 -0800 Subject: [PATCH 3/3] Rough finish of koutliner interactive demo --- interactive-demos/KOUTLINER.kotl | 98 +++++++++++++++++++++++++++++++- 1 file changed, 95 insertions(+), 3 deletions(-) diff --git a/interactive-demos/KOUTLINER.kotl b/interactive-demos/KOUTLINER.kotl index 5d92d98d..ec1d90d4 100644 --- a/interactive-demos/KOUTLINER.kotl +++ b/interactive-demos/KOUTLINER.kotl @@ -79,13 +79,89 @@ use {C-c m} which will prompt us with which cell we want to move, and which cell we want afterwards. Go ahead and change the positions of these two cells. + + 3h. Now let's say we want to promote/demote our cells. We can do + that with {M-TAB} and {SHIFT-TAB}. This will also move the + children of the parent cell. To test this out, let's go ahead + and do {M-TAB} to the below cell! + + 3i. Movement within a Koutline file + + 3i1. Now that we have enough knowledge to get the basic + movement down, here is a list of commands for cursor + movement, + {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. + + 3i2. And here is a list of tree movement commands. + {[M-down]} - Move current tree past prefix arg same level trees. + {[M-up]} - Move current tree back prefix arg same level trees. + + {C-c c} - Copy to follow as sibling of . + {C-u C-c c} - Copy to follow as first child of . + + {C-c C-c} - Copy to precede . + {C-u C-c C-c} - Copy as first child of the parent of . + + {C-c m} - Move to follow as sibling of . + {C-u C-c m} - Move to follow as first child of . + + {C-c C-m} - Move to precede . + {C-u C-c C-m} - Move as first child of the parent + of . + 4. Finally, org table support + + 4a. You have to use the first line of your cell to label the + tables because the tables can only have blank spaces to their + left + + 4b. Here are a couple of examples + |--------------------------------+---------------------------| + | Promotion Inside Org Table | Demotion Inside Org Table | + |--------------------------------+---------------------------| + | {M-0 Shift-TAB} or {M-0 M-TAB} | {M-0 TAB} | + | {C-c C-,} | {C-c C-.} | + | {C-c C-<} | {C-c C->} | + |--------------------------------+---------------------------| + + |-----------------------------+----------------------------| + | Promotion Outside Org Table | Demotion Outside Org Table | + |-----------------------------+----------------------------| + | {Shift-TAB} or {M-TAB} | {TAB} | + | {M-left} | {M-right} | + | {C-c C-,} | {C-c C-.} | + | {C-c C-<} | {C-c C->} | + |-----------------------------+----------------------------| + + To toggle table editing on/off, press the Action Key on any + of the table | symbols and then edit the same way you would + any Org Table. + + 5. For more information please check out "EXAMPLE.kotl" or + {C-h h k i}  "ben" ;; kvspec:current -18 ;; id-counter +38 ;; id-counter alpha ;; label-type 4 ;; label-min-width ". " ;; label-separator @@ -93,7 +169,7 @@ alpha ;; label-type  ;; depth-first kcell attributes [[0 - (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:01:16" id-counter 18)] + (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:01:16" id-counter 38)] [1 (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:01:16")] [2 @@ -122,4 +198,20 @@ alpha ;; label-type (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:08:54")] [18 (creator "hankgreenburg@Hanks-MBP.lan" create-time "20231206:22:09:04")] - nil nil nil nil] + [26 + (creator "hank@hank-archbtw" create-time "20240107:20:53:30")] + [22 + (creator "hank@hank-archbtw" create-time "20240107:20:40:18")] + [24 + (creator "hank@hank-archbtw" create-time "20240107:20:40:46")] + [29 + (creator "hank@hank-archbtw" create-time "20240107:21:00:02")] + [33 + (creator "hank@hank-archbtw" create-time "20240107:21:02:34")] + [36 + (creator "hank@hank-archbtw" create-time "20240107:21:03:08")] + [37 + (creator "hank@hank-archbtw" create-time "20240107:21:04:09")] + [38 + (creator "hank@hank-archbtw" create-time "20240107:21:07:25")] + nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil]