12 ms·
Leo Editor
- craftyguy 8y agoSince the title gives absolutely no information about what this is, here's the description on the site: > Leo is a PIM, IDE and outliner that accelerates the work flow of programmers, authors and web designers. Outline nodes may appear in more than one place, allowing multiple organizations of data within a single outline. I still have no idea what this is after reading the front page other than being yet another IDE.
- kornish 8y agoClicking on "A Brief Summary of Leo" yields the following: Leo is: A fully-featured IDE, with many features inspired by Emacs. An outliner. Everything in Leo is an outline. A data manager, data manager and personal information manager. A powerful scripting environment. A tool for organizing and studying computer code. Extensible via a simple plugin architecture. A tool that plays well with IPython, Vim and Emacs. Written in 100% pure Python Leo’s unique features Leo completely integrates Python scripting and outlines. Simulating the following features in Vim, Emacs or Eclipse is possible, just as it is possible to simulate Python in assembly language… All commands and scripts have easy access to outline structure via a simple Python API. For example, p.b is the body text of the selected outline node. Scripts have full access to all of Leo’s sources. Clones create multiple views of an outline. Leo’s underlying data is a Directed Acyclic Graphs. As a result, Leo organizes data in completely new ways. Scripts and programs can be composed from outlines using outline-oriented directives. Importers convert flat text into outlines. @test and @suite scripts create unit tests automatically. @button scripts apply scripts to outline data.
- Cyphase 8y agoHere's the link: https://www.leoeditor.com/preface.html https://www.leoeditor.com/preface.html And for those on small screens: -- Leo is: -- * A fully-featured IDE, with many features inspired by Emacs. * An outliner. Everything in Leo is an outline. * A data manager, data manager and personal information manager. * A powerful scripting environment. * A tool for organizing and studying computer code. * Extensible via a simple plugin architecture. * A tool that plays well with IPython, Vim and Emacs. * Written in 100% pure Python -- Leo’s unique features -- Leo completely integrates Python scripting and outlines. Simulating the following features in Vim, Emacs or Eclipse is possible, just as it is possible to simulate Python in assembly language… * All commands and scripts have easy access to outline structure via a simple Python API. For example, p.b is the body text of the selected outline node. Scripts have full access to all of Leo’s sources. * Clones create multiple views of an outline. Leo’s underlying data is a Directed Acyclic Graphs. As a result, Leo organizes data in completely new ways. * Scripts and programs can be composed from outlines using outline-oriented directives. * Importers convert flat text into outlines. * @test and @suite scripts create unit tests automatically. * @button scripts apply scripts to outline data.
- grok2 8y agoI used it a while back in a previous incarnation of the editor. It is a "Outline Editor" for use in what is called "Literate Programming". My view of it was that you write documentation and embed code in the documentation and then you can use a mechanism the editor provides to output just the code (when you want to compile it or execute it). The editor made it easy to hierarchically organize and rearrange code the way you wanted it and had a way to output just the code for use in compilation etc. The current iteration seems to have added more features while basically being a outline editor -- imagine keeping code in Emacs's Org mode and being able to compile it. I liked it, but it felt like it didn't have all the bells-and-whistles of modern IDEs and required a different way of dealing with code.
- zokier 8y ago> imagine keeping code in Emacs's Org mode and being able to compile it. Something like this https://github.com/nakkaya/ferret https://github.com/nakkaya/ferret The whole source code is in literate form in one org file.
- keithnz 8y agowell that is very cool. Unfortunately the original HN posts title failed to mention that was meant for embedded control systems which is probablly why I missed reading it! The HN post can be found here :- https://news.ycombinator.com/item?id=14951116 https://news.ycombinator.com/item?id=14951116 and the literate source code is here ... https://github.com/nakkaya/ferret/blob/master/ferret.org https://github.com/nakkaya/ferret/blob/master/ferret.org
- grok2 8y agoNice. Someone actually used Literate programming to write something useful :-). The ferret org-mode info is very readable.
- sparkie 8y agoPerhaps the most insane example of literate programming is Axiom [https://en.wikipedia.org/wiki/Axiom_(computer_algebra_system) https://en.wikipedia.org/wiki/Axiom_(computer_algebra_system...], which is several books worth. It wasn't originally written in literate style, but it was a very large codebase which almost nobody understood. Tim Daly put an enormous amount of effort into making it literate, so that anybody can be introduced to it.
- msla 8y agoFirst, something which amused me: > “Word outlines are very useful. But Leo makes Word look like a clunky toy.”—Joe Orr Well, yes. Any text editor would make Word look like a clunky toy, because Word is a word processor. They don't do the same things, they aren't aimed at the same audiences, and they evolved different UI conventions because of that. That nitpick aside: It being written in Python is nice, and the fact outlines give your document something like a DOM which is accessible in a Python object tree is nice. It might be possible to massage this into something almost as nice as macros for languages like C# or Java.
- X6S1x6Okd1st 8y agoWhat do they mean by outline?
- agumonkey 8y agonested "paragraphs"
- sien 8y agoOutliner - like emacs org mode or what Scrivener will do. https://en.wikipedia.org/wiki/Outliner https://en.wikipedia.org/wiki/Outliner
- jacquesm 8y agoA tree based editor with nodes rather than lines.
- r618 8y agooutline is a node in hierarchical / tree structure - term used e.g. in OPML format which is a type of XML
- diminish 8y agopast https://hn.algolia.com/?query=Leo%20Editor&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0 https://hn.algolia.com/?query=Leo%20Editor&sort=byDate&dateR...
- gouggoug 8y agoI missed every single one of those past posts, so I'm glad OP posted it once again. There are many reposts that I'm also glad happen. They're often a reminder of something I've forgotten about and that I'm glad to see again, or sometimes they're just something I missed.
- kiliankoe 8y agoReposts are great, but I also enjoy comments linking to previous discussions. It's nice to have a look at what was said before.
- jacquesm 8y agoI've used Leo extensively for one large project, several smaller ones and all the DD work for 8 years until 1/1/2017. It's a very good and well thought out program, it's a bit like a cross between emacs org mode and python programming environment (rather than lisp) geared towards literate programming but very useful for other kinds of applications. I'd love to see a 'Google docs' style multi-user version of it, that would be an awesome tool, especially if it would be self hosted.
- dlbucci 8y agoWhat happened on 1/1/17 to make you stop using it?
- jacquesm 8y agoWe badly needed a multi-user capable tool so I hacked something that replicates the 2% of Leo's functionality that we need to get our work done. It's far from ideal but two years on there are a few tens of thousands of nodes in the system and it has already far outlived it's expected life-span (as always...). We really will do that rewrite one of these days though, especially with more than one job on the go at once the system will start to show its limitations. Even so, for a three day hack it has done remarkably well.
- jv22222 8y agoPlease write a blog post about it! That would be a great read :)
- jacquesm 8y agoIt's a one page PHP app that any HN'er could probably throw together in a day or two, and it would likely look better and work better than what I built so there isn't much honor in there, I needed a solution, not something that would serve as the basis for a nice write-up.
- 8y ago
- tbolt 8y agoUI looks ugly as sin
- jacquesm 8y agoSo does a chainsaw. But it gets the job done quickly and with a minimum of fuss. Eye candy is fine of you put form over function, personally I prefer fast and effective. Pretty is optional.
- dsies 8y agoI don’t think it has to be quite that black and white. It doesn’t have to have “eye candy” and it also doesn’t have to look like a 1998 Delphi project. Strive for the gray area and if that is not achievable... then yes, function over form.
- jacquesm 8y agoFeel free to use the extensive settings Leo has to customize it to your taste. Personally I prefer 'minimal' but I'm sure that if you work hard at it you can make it look pretty enough to suite you.
- fiddlerwoaroof 8y agoIf more things looked like a 1998 Delphi project, desktop UIs would be much nicer to deal with.
- lghh 8y agoI don't have to look at a chainsaw for 8 hours a day, either.
- jacquesm 8y agoForesters do and they would really be insulted if you made their main tool set look 'pretty' just for the sake of it. It's a tool, it needs to be reliable, powerful, easy to service and safe. There are lots of chainsaws that look prettier than Husqvarna's and Stihl and yet those are the ones that most professionals will use.
- stevesimmons 8y agoPeople use Leo in different ways... I used to use Leo for notes on everything I was working on. The killer feature for me was the tree outline pane could clone nodes. So I could have one subtree of say Projects, another of say my Jira tickets, a third on Talks and Blog Posts. And then have clones of the current ones all together in a subtree called Current. I would adjust their order each morning as my prioritised To Do list for the day. More recently, I have tried switching to orgmode. Some aspects are great. But I really miss Leo's tree pane 'table of contents' and its clonable nodes.
- methehack 8y agoNot sure if it'll help but you might try the emacs package "Deft" w/org mode. I use Deft as a table of contents over a searchable directory of .org files and it works well for my purposes.
- jadbox 8y agoSo you still use Leo or managed to switch to orgmode? I haven't used either, but have contemplating it. Currently, I'm using CherryTree, which is just okay.
- stevesimmons 8y agoI switched to orgmode. Mainly because I wanted to run the same core tools at work and at home. At work we are not allowed to run random software; every package needs to be registered, source security-tested, compiled from source in house, put in an internal repo, and then installed from there. So while at home I could do 'pip install leo', at work it was a mess of tracing dependencies (Qt), getting them registered, etc, etc. Plus at work, someone else had gone through this pain for Emacs and orgmode.
- jadbox 8y agoJust asking, why not just use a wiki-style note taking app instead?
- akaralar 8y ago
- gcbw2 8y ago(because there is no toplevel comment saying this): it is emacs' org mode on steroids. If you don't like org mode, move along. ...And some of the side effects of the steroids are already showing (e.g. "you can embed html in markdown". Really? So it is now an html renderer with markdown 'shortcuts'?)
- jamesrom 8y agoMarkdown has supported inline HTML since conception: https://daringfireball.net/projects/markdown/ https://daringfireball.net/projects/markdown/
- jadbox 8y agoHow is it better than orgmode? Which would be better for note taking?
- Skunkleton 8y agoOP didn't say better, rather "on steroids". Have you met steroid users?
- tomcam 8y agoThanks. That is one of the funniest, most offbeat comments I have ever read. It was a snort-milk-out-your-nose kind of laugh.
- nurettin 8y agoI did, they were the more powerful and less durable cousins of chimpanzees.
- syntaxfree 8y agoMy favourite term of emphasis is "on manifolds".
- lysium 8y agoCloning, or better: referencing nodes, is a feature I really miss in org-mode. Having both a list of tickets that I worked on and the list of current tickets, all having the same data, for example.
- Herodotus38 8y agoIn case the author is reading this there is a broken link for "screen-shots", looks like a simple mistake of not including the root.
- wumms 8y agoWorking link to the screenshots-page: https://www.leoeditor.com/screen-shots.html https://www.leoeditor.com/screen-shots.html
- dionna767675 8y agoOne of the best companies online Fiverr is the world's largest freelance services marketplace for lean entrepreneurs to focus on growth & create a successful business https://track.fiverr.com/visit/?bta=27228&nci=5490 https://track.fiverr.com/visit/?bta=27228&nci=5490
- patrickg_zill 8y agoSome years ago I tried to use Leo but could never really get in the "groove" of it. Now that I have more experience with outlining and have bumped into the limitations of what I use now, it deserves a second look.
- jskulski 8y agoHas anyone used this, org-mode or other literate programming tools for a full team project at scale (whatever that means, non-trivial multiple months, lots of code)? Did the team have to buy in or were they already users? How did it go- did it improve. I've used org-mode for about a year and a half and have found it helpful to to my productivity and feeling put together. I can see the potential for benefits to a team, but not many people want to learn emacs for a job if they don't already use it.
- nambit 8y agoI've used vim (+eclim) for a full team java project at scale in the way you want. Everyone on my team was still using an IDE though. Your project should ideally be independent of the IDE being used.
- thyrsus 8y agoWe use Leo to organize about 1000 puppet modules managing about 500 linux systems (50/50 real/virtual), of which 60% are "unique", a.k.a., pets, not cattle. Geppetto in Eclipse is the closest thing, but Geppetto only helps with puppet modules, not puppet nodes (hosts). The good: Leo provides rapid access to understanding the complexity. The bad: Leo XML file format is collaboration hostile, since resolving git conflicts in its multi-megabyte XML file is out of the question. The ugly: I've got perl code to translate the XML file to and from a directory of several thousand small files, one per Leo node, and far more git-conflict friendly. The worst: the version of Leo on which we're stuck used "sentinels" - specially formatted comments - to keep Leo's structure of the file in sync with external changes to the file. Never use that: use a new version of Leo and use its @clean format, which doesn't use sentinels. Not only are sentinels offensive to look at in the managed file, this version of Leo occasionally gets confused and tries to use "//" for puppet comments instead of "#". (Yes, some of what puppet (and thus Leo) is managing is php.) But we're stuck with this version of Leo, because when newer versions of Leo read our Leo XML file, many of the nodes lose their content, namely, a catastrophic lack of backward compatibility. It would take me at least a month of getting nothing else done to re-ingest our puppet configuration into a newer Leo.
- 8y ago
- juancampa 8y agoI'm watching the videos and the nodes look like a powerful abstraction. I'm not a fan of some of the terminology, for example, "clones" are not really clones but the opposite: references
- PurpleRamen 8y agoAnd in filesystems it's called hard link. Which might be more rasonable as we are talking about hierachies.
- algorias 8y agoI think the conceptual difference between a clone and a reference is that clones have no hierarchy. If I have two clones, then removing either one will cause the other one to become the "original".
- ptman 8y agoaliases?
- Timothycquinn 8y agoI love outliners but I am firmly in the single pane outlines camp like Ecco Pro and Omni Outliner (org mode also?). For some reason, I just can't swallow the two pane UI. I wonder if there has been any usability research on which model (single or two pane) is least obtrusive to flow of information to and from the user.
- fspeech 8y agoI have been using it forever (over 10 years) to organize financial data and do taxes. While I should credit Python because these are Python programs after all, it is really Leo that enables me to easily keep data organized. Queries can be ran by easily running Python scripts inside of Leo with results directed to the log panel, turning Leo into a light-weight IDE. For example the top node for accounting is like this: #@killcolor # accounting from datetime import date import pprint import math <<defs>> year = 2006 <<2006>> inc_year() <<2007>> inc_year() <<2008>> ... more data inc_year() <<2018>> inc_year(0) #update certain yearly balance records without advancing def runacct(argv): if len(argv) > 1: if argv[1] == 'q': transquery(argv[2].upper()) elif argv[1] == 'g': groupquery(argv[2].upper()) elif argv[1] == 'h': holdingquery(argv[2].upper()) elif argv[1] == 'm': if len(argv) == 3: monthquery(int(argv[2])) else: monthquery(int(argv[2]), int(argv[3])) elif ... many other query options else: balancequery() if __name__ == '__main__': from sys import argv runacct(argv)
- jtoledo 8y agoInteresting! How do you keep transaction records?
- fspeech 8y agoI use two classes to track accounts and transactions: class acct(object): # bank and brokerage account allacct = [] def __init__(self, name, balance, holdings=None): self.name = name self.balance = balance self.holdings = holdings self.xferamt = 0 self.accum = 0 # used to track cumulation ad hoc values acct.allacct.append(self) def buy(self, sec, amt, cost, day): rec = trans(('buy', sec, amt), -cost, day, self) self.balance -= cost if not self.holdings.has_key(sec): self.holdings[sec] = [0] self.holdings[sec][0] += amt self.holdings[sec].append(rec) ...... class trans(object): # transaction record object track cash invovled in each transaction allrec = [] def __init__(self, t, amt, day, where): try: self.type = t self.amt = amt self.date = date(year, month, day) self.where = where trans.allrec.append(self) except Exception as err: print t, amt, year, month, day, where raise err Then for each data line I just do any of the following: SOMEACCT.buy(...) SOMEACCT.sell(...) SOMEACCT.credit(...) SOMEACCT.debit(...) SOMEACCT.xfer(...) # classified by tax categories: SOMEACCT.int(...) SOMEACCT.div(...) SOMEACCT.fdiv(...) SOMEACCT.mint(...) SOMEACCT.mdiv(...) Then it is easy to query and do computations in any way one cares to write a function to do.
- BeetleB 8y agoI've wanted to use this for a few years, and finally dived in this year. The good: If you can wrap your head around it and spend a fair amount of time learning it, it is quite useful, and the claims on the web site no longer seem crazy. It's not my primary editor, but I can see I'll use this a lot (primarily an Emacs guy). The bad: Very poor documentation. A lot of the stuff on the site is outdated (so examples won't work). In my experience, people on the mailing list will help, so it makes up for the poor docs - but it is kind of off-putting. There's a ton of stuff it supports that are mentioned nowhere in the docs. Some hints: Learn how settings work, and dive into all the settings - you can do this from within Leo. You'll learn a lot more about Leo's capabilities that way (as well as make small tweaks to the pretty ugly UI). Changing a setting doesn't go into effect immediately - for that I think you can do: M-x reload-settings (honestly forgot the command). Some settings, though, involve quitting and restarting. Also, it's not really a great editor. Its power comes from nodes and scripting. So become very comfortable with nodes, and try to learn scripting immediately. I'm still a beginner at the latter, and sadly the docs just suck. So I slowly try, ask, learn more, make my own notes, etc. If I keep it enough to become much more knowledgeable, I'll probably end up writing a proper guide on using it. It very much is similar to Emacs in the sense that everything is a command/function. So you can reprogram it to do whatever you want.
- koliber 8y agoI heard about Leo about half a year ago. I got really excited, as from the way it was described, it mirrors the way I think. Unfortunately, I could not get it to run on MacOS.
- cjohansson 8y agoSame problem here
- mikestew 8y agoJust installed it tonight. High Sierra Python 3 installed via Homebrew pip3 install leo Ran fine right out of the box.
- cjohansson 8y agoYes it worked with `pip3 install leo` but not with `pip install leo`.
- koliber 8y agoI'll have to give it another go. I really wanted to try it out but was bummed that I could not get it running.
- PurpleRamen 8y agoAh yeah, Leo Editor. The Lotus Notes of the outliner-world. That thing is as powerful as horrible. So full of good ideas, and such a garbage in implementation. On the good side stands the ability to have an programmable outline, paired with a good enough editor to handle the content of nodes. Then there also directives, which are basically special commands for inline-usage. Things like @wrap to wrap lines, or @language <value> to define activate language-specific handling for the following code. @language is especially useful because you can combine several in one node. Finally there is also the relativ open ability to customize things with python. All of this combined a regular workflow I still use with Leo is to create a node with several @language-blocks on a node. One for code, one for data, one for Documentation. Then call a selfmade-function which extracts the code and data and executes it and save the result in a new node in the outline. Very useful to transform or generate data on the fly. There are also directives to load/save external files, with support for some fileformats to automagically handle the outline. But then again, on the bad side, as a dev I must say the whole projects has a horrible stench of foul code and ugly design. There is a huge amount of features which either work bad, don't work at all or even work in harmful ways (dataloss). The codebase is just a ragtag-compilation of random ideas from people which seems to have no clue about proper software development, and who are even proud to have come up with some shit they consider as smart. For anyone who wanna try out this software: don't except to much, and prepare for many hateful corners and a steep unnesseccary learning-curve. And save your data! Often.
- Tloewald 8y agoUpvoted based on your selection of Lotus Notes as the apotheosis of good ideas wrapped in awful implementation. I've never used Leo but just looking at the installation process turned me off the entire idea.
- porker 8y agoWish JetBrains would add these features to their IDEs. We need more literate programming today, not less. I've tried Leo a couple of times and like the concept _a lot_, but never got on with the implementation.
- elviejo 8y agoI agree with the need for more literate programming. Have you tried emacs with org-mode instead of Leo?
- porker 8y agoI'm a Windows user and so I've never really got into emacs. It's one of those pieces of software that like vim (beyond the ultra-basics) seems too daunting to get started with.
- onion-soup 8y agoIs this how internet looked in 60s?
- PythonicAlpha 8y agoIf here are some Leo people reading here: The "Screen Shots" link is broken. It should be: https://www.leoeditor.com/screen-shots.html https://www.leoeditor.com/screen-shots.html But currently it points to nowhere.