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 | |
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).
-rw-r--r-- | consistency-of-experience.rst | 2 | ||||
-rw-r--r-- | maxthink-for-emacs.rst | 176 | ||||
-rw-r--r-- | vim-acme-design.rst | 79 | ||||
-rw-r--r-- | why-yzis.rst | 2 |
4 files changed, 257 insertions, 2 deletions
diff --git a/consistency-of-experience.rst b/consistency-of-experience.rst index 6ffaa44..e439ff2 100644 --- a/consistency-of-experience.rst +++ b/consistency-of-experience.rst @@ -3,7 +3,7 @@ Consistency of user experience or Contra-zenclavier :date: 2005-11-26T00:04:00 :category: computer -:tags: vim +:tags: vim, outliner (Answer to discussion caused by my `message on gmane.comp.editors.vim.outliner about creating Kate syntax highlighting 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/ diff --git a/vim-acme-design.rst b/vim-acme-design.rst new file mode 100644 index 0000000..a9954de --- /dev/null +++ b/vim-acme-design.rst @@ -0,0 +1,79 @@ +Design notes on plan9-for-vimspace +################################## + +:date: 1970-01-01T00:00:00 +:status: draft +:category: computer +:tags: vim, plan9, ACME + +When I have seen for the first time the screencast_ presenting ACME, +modular text editor from Plan9, I was intriguied by its design which +seemed to put Unix philosophy on steroids. However, in the same I was +driven away by the mouse-driven nature of the result. I am a strong +believer in Zenclavier_ and mouse is the first thing which breaks any +attempts of learning my fingers patterns of behavior. I remember I was +thinking when I saw the screencast whether it would be possible to +transfer somehow the modular nature of ACME to the vim world. I haven’t +came with anything, so I gave up then and forgot whole thing. + +So, I was very excited when looking for something else I found on GitHub +project_ trying to bring some Advantages of ACME text editor to the vim. +However, it is obviously in the early stages of development and it +didn’t give much of description on what’s going on (or what’s at least +planned to go on). So, I have asked_ for help, but then I decided that +actually what I was asking for (to summarize the screencast, separate +individual ideas, and try to relocate them to the vim universe) could be +done by myself. Better for annotation than screencast is actual paper, +so I have found (because of the great Bell Labs tradition of documenting +their design in standalone papers) Rob Pike’s paper_ describing design +of ACME. This article is basically commentary on this paper, trying to +identify individual features, and translate them to the vim universe. + +User Interface +============== + +Tag +--- + + The tag contains the name of the window (usually the name of the + associated file or directory), some built-in commands, and a scratch + area to hold arbitrary text. + +The tag looks very much like our good bad friend, toolbar, which can be +found in all GUI text editors and wordprocessors (including gvim). As +such opinions on it are rather mixed and some people (including me) +immediately switch them off. It is possible though that if the tag was +done right, it could be actually useful. ACME’s design offer one +possibly large advantage against normal toolbar in being very easily +modifiable. Just by pointing to it and editing its text one change the +content of the toolbar quite easily. + +Another problem with the normal toolbars (including the gvim ones) is +that they require using mouse which makes it unappealing for hard-core +rodent haters (like me ;)). However, this problem shouldn’t impossible +to overcome. Shortcut could be created for activating the toolbar and +then one could move in it (for example) with ``TAB`` and activate with +``ENTER``. Or there could be set of shortcuts for activating first, +second, etc. “button” in the toolbar (e.g., ``<Leader>t1`` or something +of that type). + +And yes I like very much possibility of calling not only “internal” +(however defined) commands, but also external scripts when the internal +command is not found with the given name. + +Hyperlinks in the body of text +------------------------------ + +x + + +.. _project: + https://github.com/plan9-for-vimspace/plan9-for-vimspace/ +.. _screencast: + https://www.youtube.com/watch?v=dP1xVpMPn8M +.. _Zenclavier: + http://archive.oreilly.com/pub/a/oreilly//news/zenclavier_1299.html +.. _asked: + https://github.com/plan9-for-vimspace/plan9-for-vimspace/issues/4 +.. _paper: + http://doc.cat-v.org/plan_9/4th_edition/papers/acme/ diff --git a/why-yzis.rst b/why-yzis.rst index f6b0bb4..5d16d99 100644 --- a/why-yzis.rst +++ b/why-yzis.rst @@ -3,7 +3,7 @@ Why lua? or questions about yzis :date: 2005-04-13T23:45:00 :category: computer -:tags: KDE, vim +:tags: KDE, vim, outliner (This article is a slightly edited version of my post to `comp.editors`_ newsgroup). |