Hacker News new | ask | show | jobs
by Rochus 1567 days ago
E.g. more typing, or you have to look to the screen when navigating; in Crossline - even more than in Ecco Pro - I can operate with shortcuts, but shortcuts optimized for an outliner, not just an editor with structured formating; Crossline allows me to look at the people I discuss with during the meeting and take structured notes at the same time without taking my hands off the keyboard and without looking to my laptop; of course one could build something like Crossline on top of Emacs (with limitations), but there is a point where you start to fight the fact that Emacs is an editor infrastructure, not a general purpose GUI toolkit; that's why I implemented Crossline in C++ using (modified) Qt.
2 comments

I'm also a huge Ecco fan and definitely understand your motivation for creating Crossline, but the particular features you mention aren't really ones where org-mode is currently lacking, especially given org-roam.

Where I think org-mode is still somewhat lacking compared to Ecco is in being able to display the same item in multiple places in an outline and be able to edit any one of them (as well as the whole column UI for setting that up easily). But there are solid moves in that direction, e.g., the org-transclusion package is now pretty decent. There's also another more recent one whose name escapes me.

Crossline supports true "transclusion" links, so you can e.g. compose outlines from existing outline items with navigable forward and backward references; this is very useful e.g. for specification authoring.
I found a similar problem with Org mode when it comes to writing elisp code to handle org documents - it's almost all based on text parsing vs nodes. So simple automations I can program in a node based editor like the Leo Editor took a lot of effort in Org mode.

As an example, if you want the body (text) of a node, you have to get the substring from the beginning to the end. There wasn't (probably still isn't) an API to get the body. If you want to do a depth-first/breadth-first traversal of nodes, it's not as straightforward as one would think.

I hope someone comes up with a node based API for Org mode.

I implemented my own NoSql database for Crossline which supports an efficient storage and traversal of outline items (see https://github.com/rochus-keller/Udb). Even if there was a dedicated API in Emacs/Org-mode it's still file based text buffer interpretation and management behind the scenes.
Nah - the only pain would be in loading/saving. The idea would be that all this information would be in memory and updated live. So when you use node based APIs, it doesn't need to do any parsing. It would have a node object, and the body would be an attribute, and subnodes would be links to other nodes, etc. Only when saving/loading would it then need to convert (serialize) to a text representation.

This is how the Leo editor does it - it's in Python and it can handle a fairly large number of nodes before any slowdown is noticeable.

If you're trying to do non-parsing automations in org, take a look at vulpea. It's roughly the same engine that powers the current version of org-roam. A good example application of this is the vino wine database: https://github.com/d12frosted/vino
Thanks, but is there something like that for plain org? I use org-roam for a few limited use cases. Most of my org stuff is not related to notes, and I don't put it in org-roam.
vulpea is designed to be usable under plain org; it's a separate package from org-roam.