Leo is a hierarchical editor with a tree view of nodes, which can be in Markdown, ReST, code, and create compound docs a la literate programming from nodes, etc.
The killer feature imo is nodes can be cloned to multiple places in the tree. So you could have, for example, group notes by project in one master last, plus another sub-tree for clones from the master list of your own current projects.
Leo's web site may look clunky and old-fashioned. But don't let that put you off!
-- EDIT --
For what it's worth, I do oscillate between Leo and Emacs org-mode. I'd probably stay 100% with org-mode if there were a way to clone nodes. Does anyone know if this is possible?
I believe that what you are explaining is essentially the equivalent to a symbolic/hard link.
As far as I know, one of the goals of org-mode is to have a format that does not diverge from pain text.
Similar to markdown, an org-mode file is always completely readable as pain text, whether using emacs it not.
That means the only way to have an updated "copy" (reference) of a tree would be to automatically copy any changes made to every copy of that tree. That would either require some sort of run-time mark (that would disappear as soon as you kill the buffer), or special syntax.
As far as I know, org-mode does not have such a feature.
From http://leoeditor.com/tutorial-pim.html, it looks like a 'clone' means that the node is presented in several places in the document, but each of those several places bring you back to one, single node.
It seems like org-mode ought to be able to do this, too.
At least, it's weird that emacs/vim _can't_ do something. I can't remember the last time anyone said that about, well, anything :)
A clone is not a copy. When you clone a node in leo, the same node can appear in multiple places at once. If you edit any of the clones, the original is updated.
One use case: You're trying to fix a big in code. You can create a new node and place under it clones of all relevant code (which may exist across multiple files) for the bug. And not just code but also collateral for tests (e.g. unit test or input files that reproduce the bug etc). Oh and might as well clone the bug report as well.
So all that you need to work with the bug conveniently under one node. Just edit there and all relevant files get updated.
Leo is powerful and has a decent user base. It is the closest thing I've found to Emacs in the Python world. Unfortunately the documentation is really bad and I just don't have time to learn it without good documentation. I toyes with the idea of becoming a master at it just so I can write proper docs but life is too short.
With all respect, leo looks like it is an editor from the 90's with its windows 95-looks. For me, that's mostly a sign that the developers do not adhere to modern development standards. As such, why would I invest time in using a dying product/project?
With all respect, a lot of design has devolved, and was actually better in the nineties. In my humble and absolutely personal opinion this goes for software UIs, and for cars (exteriors, not technology). Leo is fine. Atom is not (to name a random example, whre not even the technology holds up).
No, I wasn't even young in the nineties. Just youngerish.
You're just making assumptions. Why does a UI have to be trendy to be good? Seems like a big leap to get from the UI to the development method to the health of the project.
Ehh, they actually are very well refined interfaces. True they are text oriented, but that ages well I think.
I'm not trying to imply Leo doesn't have polish, just that native UIs age poorly compared to, say, readline/curses interfaces. The expectations are completely different, and UIs have changed a lot in 20+ years.
That's not far from the truth. Leo has a horrible broken codebase and the devs are not the most competent around. The project is a prime example of everything bad going in software-development.
But, while lacking, they have the right spirit and are constantly trying to do better. If someone can adapt to the myriad of quirks and failures, it can be a very powerful tool. As an outliner it's definitly better than org-mode. But it might be good to have profund python-knowledge to take advantage of the scripting-ability to make it really useful.
Fun fact. Nulis means zero (0) in Lithuanian. I wonder what other product names unintentionally hit some word in some exotic language. One from top of my head was https://en.wikipedia.org/wiki/Mazda_Laputa (we know what "la puta" means in Spanish)
Why did they choose that word? Did it have a meaning in another language besides Spanish or did they just like the sound?
Edit: found my own answer on Wikipedia, it's the latin taxonomy word for a feline:
> It was named after Leopardus pajeros, the Pampas cat, which is native to the Patagonia plateau region of southern Argentina.[3] But pajero in Spanish is also a common term of abuse, usually translated as "wanker" or "tosser", thus perhaps why alternative names have been used for many markets. It is known as the Mitsubishi Montero (meaning "mountain hunter"[4]) in the Americas (except Brazil and Jamaica), and Spain, while in the United Kingdom it is known as the Mitsubishi Shogun. https://www.wikiwand.com/en/Mitsubishi_Pajero
I actually wrote a quick web app [1] to translate a word from a ton of languages into english (so writers could see if their "made up" words would have any meaning to any demographic), but it could be used here by just putting your product/brand name in. (Please note it's actually hitting Google Translate 50 times since they don't have bulk translate, so results may take a second.)
Fun fact: Nullis seems to mean zero in Ukrainian, Pesian, Latvian, and Estonian as well, while also meaning "no" in Welsh, Latin, and Irish.
Interesting, good to know. I think we can blame that on Google Translate [1], I guess. Dunno where to find better (automated) translations, but I'd be happy to use that source (as long as it has an API) instead!
I'm not a Vim user anymore,
but this is definitely the most interesting (also, peculiar) approach
to a non-coder's writing tool I've come across over many years of text editor geekery.
I tried to hack together something similar for Plan9's Acme and Sam,
but unfortunately those efforts led nowhere.
I don't like markdown either though, the extra markup interferes with my thinking. Though there is no UI modality, I feel it adds a cognitive modality where I need to switch between thinking about the actual content, and the translation from text semantics to markdown syntax.
But I suppose I could stick to plaintext with these apps. A subtle rich text editing possibility would be appreciated too though.
Edit: Scandinavian keyboards require pressing shift to get /. So accessing the search bar doesn't seem to work at all.
Oh! There is an edit/preview mode, it's just global. I think I like it.
I'm not sure what good the Affero GPL license is good for in this case. The resulting software cannot be distributed under it: It depends on React as a critical and integral component to its functionality. I cannot distribute the resulting software under AGPL, because it contains known patents I lack the right to distribute under the terms of the AGPL license.
Fun fact: nulis/menulis in Bahasa Indonesia is 'writing'
Author replied:I think this is where I got the idea for the name from =) Was looking for something that sounds awesome and relevant, and somehow stumbled upon this word.
This would be more useful if like project gutenberg (wordpress editor redesign) each card/block could be "structured data" (image, text, table, etc) - it would be pretty neat tool to use for a Knowledge base.
It´s a interesting approach. I like to organize my ideas on a different kind of trees. I created Sorter for personal use https://github.com/vitogit/sorter
Like the look of this a lot. I'm a fan of mind maps for getting work done. I might suggest that unless you think that a large portion of your audience are vim users then you might use ijkl instead of hjkl. For a non-vim user ijkl is completely natural but hjkl will be annoying.
You prefer they use something that 'feels' natural to you over a very commonly used pattern?
Left/Up/Down/Right on the same middle row is more intuitive than putting Up on a higher row IMO. On my thinkpad "i" is not centered above "k" (the way Up/Down arrow keys are aligned), it's offset over both "j" and "k", so when not looking at my keys while typing this will likely cause more errors.
I've personally never seen I/JKL before and over the years I've come to believe Vim made the right choice by use HJKL on the 'home row', so I might be biased. I can put my four fingers on all 4 keys at once with HJKL, but I can't with I/JKL.
This is a standard starting position (just shifted over one key left):
Up being to the right of Left and to the left of Down is intuitive to you? I'd say Up and Down being as their name suggests would be more intuitive....
This is kind of the same idea behind Xanadu[1] right?
I fail to see the benefits of this multidimensional navigation through text. Getting lost seems way to easy in this kind of interfaces.
As I understand it, xanadu's goal is to interstitch documents, in a similar manner (I just realized) to git blame; documents are composed of original text, and pieces of other documents, recursively. So you can traverse the history not just of the document, but the blocks of text as they get referenced and pointed to by newer documents. I can't remember though if those blocks were meant to be updated as the original does, or if they're treated immutably.
This on the other hand has a much simpler goal: organizing your documents into a tree. Afaict, it can be treated/navigated like a file system, except that theres no distinction between file and directory.
Curious why the readme is only available in image format, also, was there a mistake? It says Ctrl + l is to create a node to the left, but then it says "for example, use ctrl +l to create a new card to the right."
Actually I came up with the name by using google translate. I've put in related words like writing/ideas/thinking/etc, and then scrolled through translations until I've stumbled upon a cool sounding one =)
A suggestion: I'd recommend using Tree Notation (https://github.com/breck7/treeprogram) for your storage format, instead of JSON. (disclaimer: author of TN)
I can actually help you build your own language on top of TN using some new tools, if interested, which might be very useful to you. Email is in profile.
First, it would support current functionality, so you wouldn't lose anything. So everything that it adds is a net gain.
Second and biggest benefit, I believe it would allow them to add features more easily because they'd easily be able to build a simple and well structured Nulis DSL in Tree Notation that removes a lot of the incidental complexity of their current code.
Third, it would make their "nls" files human readable and writeable. No more quotes or brackets, et cetera. With a few tweaks to their current implementation, folks could then drop in more file structures that can then be visualized and edited in nls.
Best and most general option that I know of is Org mode (Emacs). But regardless, I'm glad more people are picking up on the power of hierarchical text editing (and interfaces more friendly to non-programmers are a reasonably good thing). But if you really want to go all the way, and get arbitrary directed graphs of text content, check out org-brain.
Because Nulis is written in React, frontend and backend are pretty much separate. Mongo/Node just create an api and send/receive trees formatted as one big json object. Backend is very simple, and should be easy to replace with anything else.
Also, you can just use file>save/open feature, which saves a tree as a json file, purely from the frontend.
The desktop version of the app can work without the backend at all(server used just for cloud sync, all trees are saved as files).
Note that Desktop is in a very early version, Mac/Windows are not tested at all. I'll keep updating it and making it more stable as I continue the development.
Would someone use this? I think a text editor is a pretty good tree editor as it is but then again, as a programmer I see everything as parse trees anyway :)
Leo is a hierarchical editor with a tree view of nodes, which can be in Markdown, ReST, code, and create compound docs a la literate programming from nodes, etc.
The killer feature imo is nodes can be cloned to multiple places in the tree. So you could have, for example, group notes by project in one master last, plus another sub-tree for clones from the master list of your own current projects.
Leo's web site may look clunky and old-fashioned. But don't let that put you off!
-- EDIT --
For what it's worth, I do oscillate between Leo and Emacs org-mode. I'd probably stay 100% with org-mode if there were a way to clone nodes. Does anyone know if this is possible?