diff options
author | Matěj Cepl <mcepl@cepl.eu> | 2016-07-05 00:41:08 +0200 |
---|---|---|
committer | Matěj Cepl <mcepl@cepl.eu> | 2016-07-05 00:43:19 +0200 |
commit | cd72b4ed60d4680d8a8ce0a093d3763343d2cdc5 (patch) | |
tree | 69b91735e242ce3003f34118bafc93bcd3cbf192 /maxthink-for-emacs.rst | |
parent | 872c24670c7f7fdf738efdcf54bd3e8f77b10758 (diff) | |
download | blog-source-cd72b4ed60d4680d8a8ce0a093d3763343d2cdc5.tar.gz |
Start of the design paper on vim-ACME.
Also, added ancient paper on MaxThink for Emacs (then).
Diffstat (limited to 'maxthink-for-emacs.rst')
-rw-r--r-- | maxthink-for-emacs.rst | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/maxthink-for-emacs.rst b/maxthink-for-emacs.rst new file mode 100644 index 0000000..d4a58a4 --- /dev/null +++ b/maxthink-for-emacs.rst @@ -0,0 +1,176 @@ +My ideas about possible MaxThink-mode +===================================== + +:date: 2002-09-20T06:00:00 +:category: computer +:tags: vim, emacs, outliner, design + +(This is a very old draft of a paper I have sent to RMS asking +for his feedback on extension of the Emacs’s ``outline-mode`` to +support what I remembered from MaxThink_ by Neil Larsen; +org-mode_ didn’t exist yet, and not long after that I have met +VimOutliner_ anyway). + +First of all, when I have contemplated about this report on +MaxThink, I have came to conclusion, that just remodelling of +Outline-mode probably shall not be enough (I am not a programmer, +so I may be wrong). For example, I guess that some special +(certainly text-based) data format should be invented. Tree with +around hundred levels would be very inefficiently saved when +every level would begin with hundred of asterisks. + +Another substantial difference (IMHO) is that in Outline-mode +branches are deemed to be just headlines and majority of text is +supposed to be body text (aka leaf). On the other hand, there is +nothing like body text in MaxThink, only leaves and each leaf can +have a subtree (for the sake simplicity I do not make in this +document a difference between individual leaves and subtrees -- +each leaf is possible subtree, maybe with none children). Another +idea is that leaves tends to be *very* short for better movement +and processing (just couple of lines, maybe paragraphs when it is +a quotation or like). + +Basics +------ + +Fast movement +~~~~~~~~~~~~~ + +The very idea of Mr. Larsen (author of MaxThink) is that browsing +through any set of data should be as fast as possible given the +intuitive memory (or what's the name) expires in some two seconds or +so. Therefore, in order to make really intuitive knowledge base, you +need to be able to browse it *fast*. I mean, really fast. + +Therefore, his MaxThink (as well as his other program, Houdini, +for making hyperlinked knowledge networks—but, it seems to me +to be much less useful than MaxThink) uses modal design. In +browsing mode you need only arrow keys (no Ctrl-, Alt-, or +anything else). When your cursor is on the proper leaf of the +tree, just press [TAB] and you are in very simple editor for the +particular leaf (with wrapping, but otherwise, just plain text). +Out of this mode you get either by [ESC] or by making other leaf +(see below for description of hotkeys F7-10). + +Certainly, I suppose that maxthink-mode (or whatever will be its +name) shall follow EMACS standards of user-interface, but it is +necessary to keep *speed* of browsing and simplicity. In the +further text I shall describe MaxThink as it functions now. + +View +~~~~ + +There is only limited number of levels on the screen in a given moment +(you can change it while browsing by Ctrl-[<-] amd Ctrl-[->] for +collapsing or expansion), so when you switch to any deeper /higher +level, whole view shifts so that parent of actual level is on the top +of the screen and as many of its children as fits to the screen below +(slightly intended and numbered). + +Every leaf in the whole tree has its address based on the decimal +numbering of leaves (top leaf is 0; the first level leafs are +0.1, 0.2, etc.; the second level leaves are 0.1.1, 0.1.2, 0.2.3, +etc.). Relative addresses and addressing of group of leaves are +both possible. Whenever possible user can select item by arrow +keys movement, rather than by just typing address(es), which is +also always possible. + +Certainly, there is unlimited depth of the tree (or very high, I +have never seen a tree deeper than 100 levels), so that asterisks +(as in current Outline mode) are certainly not satisfactory +solution and some more advanced one should be found (e.g., whole +actual address of the actual leaf may be shown on a mode-line and +leaves on one level should be numbered by ordinary numbers or in +Chicago-manual-of-Style-outline-numbering style; A.I.1.a. etc.). + +There are also some kind of bookmarks available (similar to ones +in Netscape or any other www browser) and symlinks (where a +leaf is just a mirror-image of another one). + +Inserting new leaf +~~~~~~~~~~~~~~~~~~ + +While the cursor is on a leaf you can press couple of hotkeys to +create new leafs (F10 for sibling below the actual leaf, F9 one +above, F8 is for child, and F7 for brother of parent below the +parent's leaf). The same options are available from a menu, but +hardly used by myself. + +Any number of leaves can be selected and copied/moved/deleted +etc. to make parents/siblings/children of target leaf. + +Advanced functions +------------------ + +What makes MaxThink something more than just powerful outliner +are advanced functions for fast and mighty reorganization of +tree. Sorting is obvious (on selected leaves or all on the given +level of current subtree). Dividing/joining of actual leaf (or +selected leaves) by words/lines/paragraphs is self-describing. +Other simple option is randomizing given leafs on one level +(sometimes, when you cannot find a solution in given order, it +helps to mess things and start afresh). + +There is also computer aided binsorting (i.e., putting things in +different bins, no relation with a type of sorting algorythm). +Try to imagine, that you have couple of hundred leaves long list +to be organized in separate categories. You can use cut/paste +method but it is too slow. You can also, create couple of new +leaves in the top of the list and mark them as bins. Than you +start the function BINSORT and you are asked in sequence for +position of each leaf (remember, categories as well as any leaf +in MaxThink are numbered so one tick on keyboard is enough to say +which category is the one, if there is only up to nine of them; +but you can use arrow keys as well), then it is moved to so +created category (i.e., subtree). I have binsorted five hundred +topics in beautiful outline in a hour. Try it with plain cutting +and pasting. + +Another function is simple. It's called LOCK and you just staple +a current leaf (or subtree under current leaf) to your cursor and +moves with it until you find the best position for it and let it +be there (by [ESC]). + +There is also a function called GATHER. When you switch it on, +you can pick leaves up while browsing in some temporary memory +and than throw them in some new place (either with move or copy). + +Another function is called PRIORITIZE (isn't it beautifuly +bureaucratic word! :-). It is based on presumption, that it is +much more simple to find *one* most important thing in the given +list of items, than to sort them. So, this very simple function +asks you which of items from the list is the most important one +(BTW, every function has usually some sensible defaults—in +this case list of all items on the current level of current +subtree). Then it hides your pick and asks you again, ... until +the list is sorted. Incredibly simple and stupid, but very +efficient (especially with huge lists, which are really difficult +to organize). + +Sometimes it is usefull to mark some items on huge list (here +MaxThink makes things simple by just inserting ten equal signs) +and recreate an outline by one operation where all non-marked +leaves are subtopics of makred leave directly precedent (these +equal signs are of course deleted when non-needed). Inverse +function is available as well. + +Some funny things +----------------- + +There are some other things as well. Additional program makes a +tree from any directory and its subdirectories on your harddrive, +so you can analyze it with MaxThink. You can add by a hotkey +date/time while editing a leaf. Program is able to divide whole +tree while printing on more sheets of paper, so you can setup +(e.g., in your local gym) with a tree of any size. Tree can be +exported to some wordprocessors (MaxThinks has export to +WordPerfect and M$-Word, but in a free world it just cries for +export to LaTeX). + + +.. _MaxThink: + http://maxthink.com/ +.. _org-mode: + http://orgmode.org/ +.. _VimOutliner: + http://vimoutliner.cepl.eu/ |