I love Org mostly for its ability to link to stuff. In my mind it's the big feature that sets it apart from using, say, a separate application to do my task management. For instance:
- When I'm reading email (in emacs), I can quickly create a TODO that links back to the current email I'm reading (most of my TODOs, in fact, link to an email, so this is very useful),
- For my org file where I keep notes about the servers I'm running, I might link to a specific line on a remote apache config,
- For a bug report I might link to a specific git commit in a project to look at later
Any TODO that is important gets scheduled, so that it is linked to from the agenda view. In this way it's very hard for me to lose track of anything, despite most of my work communication happening through email. In fact I now prefer email over using something like Basecamp, because org makes it easier for me to manage!
Because Emacs is an OS the way it should be — an extensible system with a unified UI instead of a pile of separate and hardly interoperable applications.
The more time I spend with UNIX and hear the "UNIX philosophy" used in place of argument when someone doesn't like the feature set of some software, the more I realize that we need to move on from UNIX. We should take more ideas from things like Emacs and the Lisp machines when designing our software, and less from UNIX.
You might enjoy The UNIX-HATERS Handbook [1], published in 1994. It offers a still-relevant critical perspective on the UNIX paradigm, birthed in a context that had been exposed to alternatives.
(For some additional perspective, I don't really hate UNIX, I still recall how much of a breath of fresh air it was coming from Windows, but I think it, much like the X server, is really showing its age.)
Emacs has very few self-contained mega packages; in its own way, Emacs software is built by chaining together smaller packages. Many packages are little more than extensions to other packages.
But their interop is better. Besides Emacs packages having much greater "contact surface" (packages can augment other packages, if needed), the biggest problem with UNIX philosophy is using unstructured text as exchange medium. It leads to huge waste and proliferation of bugs, as each tool or script you use has to have its own custom (and bug-ridden) parser, and outputs its own unstructured and usually undocumented data format. This is one of those moments the history of computing took a huge step backwards. All that recent push for passing JSON around instead of plaintext? That's just rediscovering what we've lost when UNIX came along.
You don't have to use $'', you can also use literal tabs (ctrl-v to insert literals). The main difference between macOS and Linux that people notice is that macOS sed doesn't itself interpret \t (so you have to use literal tabs or $'' there).
It is, but I still use it as editor and development environment (I left out integrated on purpose). Beauty of Emacs is that it is what you need/want it to be, at least in my opinion and experience. What drove me away from Vim initially is Vimscript, which I didn't mind for years, but after I decided to learn Lisp and for that purpose jumped to Emacs for few months, after I went back to Vim I was pretty disgusted. I enjoyed Vim (I use NeoVim btw) as it is, modal editing and everything, but opening init.vim made my stomach hurt every time.
Well. org-mode has its own extensible URI system of sorts.
My email links are formatted mu4e:msgid:<message identifier>. My git links are magit:<project path>::commit@<git SHA>. Remote files are just file:/ssh:<user>@<server>:<remote path>. You could write your own for whatever you want, gmail links say (although then you could just use a plain old HTTP link).
We have message-ids, but those only let you find a message if you already know how to find a message store that contains it. Add an imap server name and user id, and you're most of the way there...
Org links are great. I admire your email linking setup. I never got email working in Emacs. As a Windows user relying on Gmail, there is significant friction. Thankfully AutoHotKey gives me Emacs keybindings in Gmail and I can actually link to messages if need be with normal http links.
Reading through the list of changes, I am very happy that I moved away from org mode.
- New syntax for export blocks
- org-file-apps no longer accepts S-expressions as commands
- Preparation and completion functions in publishing projects change signature
- Old Babel header properties are no longer supported
So in other words, for the classes I teach every two years, I can forget about being able to open up my previous files and have them just work. This was a constant battle and is pretty much unique to org mode.
I have experienced the same thing at least twice in the last 5 years ... automated scripts for compiling and uploading >50 .org files for a course website, suddenly fails. Spend 3 days chasing down why. Small naming change in an org function.
In that case, do not update. Emacs and Org-mode are showing gear signs that the development is active, the software is constantly improving, and bugs are constantly getting squashed.
It is in your hands if you want to keep using the same version of org-mode and Emacs, or update to the latest and greatest and fix few necessary backward incompatible changes.
The ORG-NEWS also provide elisp snippets that help quickly make those fixes for you. So if you choose to update, give some time to read through ORG-NEWS.
Excel or Word will randomly fail if the file is old enough. But ok, so Word/Excel can upconvert files if needed. Fair. But does a new document opened in the current Office program look the same? And I mean precisely the same, with fonts and sizes and indentation saved? And what about UI? Don't features appear/disappear?
As for Java - it's mostly compatibile in source and in bytecode:
like with org-mode, the compatibility is broken in some weird cases.
Consider also the file formats. Both Office formats and Java bytecode are binary formats not meant to be read by humans[0]. They can afford backward-compatibility measures. Nobody will bat an eye when new updated version of an opcode will get called CALL2, CALL3, CALL_FIXED, etc. Nor will they care if version flags start showing up in document formatting tags.
Org-mode, on the other hand, is a thin layer of visual formatting over a plain text file. Except in few cases (links, folding), it doesn't change the visible contents of the file compared to opening it as unformatted text! In org-mode, your text file is your UI. It is meant to be edited by hand. So you can't clutter the file with backward-compatibility measures.
Now org-mode provides some elisp scripts to upconvert older documents. They probably don't cover every case, but that's kind of normal - you can't cover everything, and e.g. the cases discussed here today are some pretty advanced / rare ones. Still, it's cheap to manually fix org-mode files - you can just open it and take a look! Try that with Java bytecode or Office formats. You can't - hence the additional effort in ensuring compatibility between versions.
--
[0] - Yes, I know new Office format is zipped XML; it's still not meant to be read or modified manually.
You have zero loss of data, it's still in a future-proof plaintext file. Changes are mostly trivial. So I wouldn't say it's such a big sin against future-proofing. Improving the design vs. retaining backwards compatibility is a tradeoff.
Yes. "But it's just text, so you can access it in any program" is an attractive (and in a sense, perfectly valid) argument, but it's the same problem with Markdown's different slightly incompatible flavours.
You are right that the org developers often make changes that break old code, documents, and habits. I was often enough upset about this in the past. But to be fair, they are really trying to make org more powerful and more consistent, and 90% of the changes are necessary for that even though they are painful.
All though not a direct replacement I use use a program called CherryTree which is amazing, it does all the usual stuff (hierarchical notes) etc, what I really like is you can do everything from the keyboard and it allows you to embed code and stuff as well.
Don't be put off by the website the product is much better than the site would imply.
One of the things I like is that you can store notes in an SQLite DB and that makes syncing easy via Dropbox, if you pass it the path to the storage file on the CLI it will open that as well so I have it bound to a hotkey combination which lets me quickly open it, edit and close so it stays out the way when I don't need it and is there when I do.
For lecture notes/papers/website documents, a system of Pandoc and scripts does all that I need (usually Pandoc is sufficient). For my calendar, first I moved to the system that came with my email, then eventually to a small script I wrote so I could have things the way I like.
I do read this thread, and I'm very receptive to the "oh-no-please-dont-break-backward-compatibility-again" complaints.
The best course of action is (1) to try to find help on the mailing list for new functions to ease the migration to the new syntactic rules (there is one already in the release notes) and (2) to raise your voice on the mailing list and support those who share the same view.
I've been a release manager for 9.0, not the real maintainer, so things may have slipped in directions I didn't have time to carefully review. If I manage to get involved again as a real maintainer, I will enforce syntactic stability and backward compatibility as much as possible.
How about putting together an upgrade tool in the same spirit of python's 2to3 [1]? If not actually a corrective tool it could discover and report likely outmoded constructs. Or even form the basis of a proper org-lint?
In anycase, it must be said that many of us simply could not stay organized without efforts like yours, and we're greatly appreciative! (couldn't write a grant without it anymore)
The one that hit hard was when they changed the exporters (I believe it was the change from 7 to 8). Documentation was limited, but it included gems reminding the reader that it's a lot of work to write documentation, but rest assured that it would eventually happen. Nothing was automated and frankly, I couldn't even figure out a non-automated way to update the files, as I could not find a replacement for some of the functionality I had been using.
I really recommend everyone to try it.
The power of org mode lies in its simplicity.
No fancy gui, not too many features but allows creating and extending.
When you need to be productive you need a simple tool so you do not spend your time being busy instead of working
I absolutely agree with this. And as reformed vi user and current emacs acolyte, everyone should use emacs for everything always.
But... I really wish someone would spend some time building some first class alternative implementations of org-mode. I say this not because I want to escape emacs (I'll never go!), but because I wish org-mode would replace Markdown. It's a better format. People outside the emacs world just think I'm weird for using it. If Vim/Atom/Sublime/Eclipse/Netbeans/Etc all supported org as a format, then I wouldn't have to use anything else.
"Simplicity"?! <Cough> It took me quite a few hours to learn. :-)
At first, I was a bit frustrated and thought "Because of recommendations, I just spent X hours learning a tool where the GUI applications can be learned in minutes?! Was this a good use of my life?"
Then I realized the usability I had -- and that it was the closest thing I ever got to paper and pencil with a keyboard; I didn't need to think so it was not in the way when I wrote down notes.
Yes, another classic case of "ease of use" vs "ease of learning". It's easy to conflate the terms (and most people usually mean "ease of learning" when they say "ease of use").
I'm with you, though. I wouldn't call it simple, but man is it easy to use.
What the GP was referencing was the old argument of us Emacs users:
"There is a difference with efficiency of easy learning and efficiency when using". It implies that the cost of learning Emacs is small, per year of bliss using it. (Why would you downgrade to something else if you know Emacs?)
I guess, something like this for a musician: "This was a hard piece of music to learn, but it is sure to get me laid many times." :-)
(Sorry about the preconceived opinion about why people learn to play an instrument, it is obviously jealousy since I can't even clap hands to most of my favorite music. :-) )
Learning to play an instrument "to get laid" is a guaranteed way to be mediocre at said instrument :) Practicing for the wrong reasons is pretty much bad practice.
Only joking, I know enough music people to get that a lot of musicians are nerdier than I am.
But the music people I know would still have appreciated that joke, so either drink more coffee or sleep more? :-)
(You could counter with "If those people knows you, then they obviously don't have much of a sense of humour anyway -- which is another proof of the heterogeneity of musicians backgrounds." :-) )
>"Simplicity"?! <Cough> It took me quite a few hours to learn. :-)
For me, 7 years ago, it was literally: "Watch a 45 minute talk on it on Youtube, and I'm good to go"
The learning curve is very shallow. You can do useful stuff with minimal learning. Once you start customizing, though, it takes more effort. Even that, initially, was just reading people's posts on how they customized it and tweaking that.
Definitely not difficult to get into. Just don't do it by reading the manual. All Emacs manuals are written as references, not as manuals.
While I agree with people trying it, I also just want to give the other side. I tried it for a few weeks, and stopped. For some people it is perfect, but I found it didn't integrate well with anything else.
Like much of Emacs, it assumes you want to spend your whole life in org-mode. If that's not compatible with your life (and for me it's not. Sometimes I'm on another computer, sometimes an android device, sometimes in Eclipse), then org-mode will fight you constantly.
The export function is stellar (although I had to hack the OOo support to work on Windows); HTML exports look great (well, after using the right stylesheet).
It's a really great way of bootstrapping/seeding presentations.
I've tried to use org mode several times. Its functionality is truly great, but having to use emacs to use it is too much of a hurdle for me. I struggle to remember all the emacs key combinations, so in the end I just give up and revert to text files.
It would be great if someone ported org mode out of emacs. I've tried the Sublime Text org mode package[0] but it's still too bare to be useful. Does anyone know of an alternative way to use it?
Are you more of a vim person? If so, spacemacs might be something to use. Sure, it is slow and buggy in some rarely-used layers, but other than that it is a really neat experience. The org mode layer sees quite some love, and works well.
I tried spacemacs for a month, but the problem is reading vim guides doesn't quite work, reading emacs guides doesn't quite work, and there isn't good enough spacemacs documentation.
You can try evil-mode which is just the vi interface, Spacemacs is more of a packaged solution that happens to include the vi interface. Having used vi interfaces in other editors (VS, IntelliJ, Eclipse, NetBeans, Atom, Sublime, VSCode, etc.), based on my experiences, evil gives the most accurate vim experience.
The other editors don't have modes in the same way the emacs does though. What I find frustrating is if your in the package manager mode for example, then your keybindings break.
Spacemacs improves this for some modes, but it still won't allow custom bindings in any/most of them.
I used spacemacs for a while just so I could use Org mode. But I just couldn't adapt to it. I love Vim in the console, and the Spacemacs experience is just different enough that it didn't gel with how I work.
What is it about org-mode that you find attractive? For me org-mode is inseparable from emacs. I find it hard to imagine what you'd be looking for in another editor and how it would work.
You can write an org file manually using any editor. Org-mode just provides a lot of tools to make this easier and more efficient. How would these tools look in another environment? Lots of GUI buttons?
It really does seem inseparable from emacs. I've not seen another system come close to matching the power of orgmode in any other editor, and I'm beginning to think it won't happen.
I use org mode, and thought it would be a gentle way of establishing some familiarity with emacs. But whenever I want to do anything other than the slightest edits to my todo files I open the file in vim! Emacs just has no built in functionality, everything has to be implemented. It's like raising a baby - teach it eat, drink, crawl. Eventually it will be somewhat capable, but then I can't simply fire it up on another machine. Maybe I'm missing something, but every time I look up the simplest edit, I'm presented with 30 lines of code. Maybe the gentle approach is not the way to get going with emacs. Anyway, point being I'm also looking for a vim alternative.
> Emacs just has no built in functionality, everything has to be implemented. It's like raising a baby - teach it eat, drink, crawl.
Sorry if I seem negative but it looks like you only scratched the surface of a vanilla Emacs install and gave up shortly afterwards.
Most functionality in Emacs comes in 3rd-party packages. Configuring Emacs is for the most part an integration job (and if you're using Prelude or Spacemacs, this is all done for you by the community.)
I do agree Emacs can be daunting at first, its a vast ecosystem on top of an alien VM, but learning it is well worth the time spent!
How about Spacemacs? It has Vim bindings (by default), comes with a very reasonable set of plugins for generic tasks, and has bundles available for most languages.
Emacs is definitely more of a platform you can build your own editor on, choose whichever parts you like and then you get an editor perfect for your needs.
Vim is more of an integrated "this is what you get and it's this way or the highway" sort of deal. Of course there's some extensibility but nowhere near to the same degree.
What are Org users doing for mobile access? Using the phone to ssh to an emacs? Using mobile org? I also saw an Org plugin for an iOS editor. How do you keep it synched?
I was never happy with the workflow of automatically syncing mobile org, so I gave up. A scheduled task on the desktop exports org to HTML in a Dropbox folder. Read-only HTML on mobile is good enough for my use in most cases. I capture with Google Keep if needed.
MobileOrg does that, and it can sync up with your phone's calendar. I use it exclusively for capture and sync to PC when home thru ssh. I don't use the calendar sync as I use a physical agenda, but works nicely except time ranges don't get synced to phone's calendar.
sshing into my PC with emacs. With Evil mode (vim modes and keybindings for emacs, without loosing emacs' ones) it's perfectly usable. Don't need an extra app for that IMO.
For 1: I think the best way to start is to simply schedule your important TODOs (C-c C-s), so that you see them on the weekly agenda view. This is how I started, and then I slowly started to incorporate things like tags when I realized I needed some more organization. (And make sure to add your org files to `org-agenda-files`.)
That's a mostly up-to-date list of supported languages, with links to example usage.
Technically, org-babel will support any language, but some have more interoperability with the overall system than others. At the simplest, you'll get syntax highlighting, tangle, and noweb support. At the most complex, you can execute them inside emacs/org and get the results, feed those into more blocks, etc. (making it very much like a python notebook or similar concept, but for any supported language).
You can even see the org file generating each of those pages.
Anyone have any org-mode config settings that they've found invaluable? I finally have my normal emacs config mostly working how I want it, so why not go in and add more stuff to it with org-mode!
I use org-mode's agenda as kanban board, so adding a global shortcut for agenda is invaluable.
Also more states. And I typically use a blank line between tree branches. Without altering org-cycle-separator-lines, it will be eaten up by last leaf of previous branch which I found annoying.
As you can tell, I'm a huge user of agenda and org-capture, and also keep my org files synced via Dropbox.
I don't document my configs much, so friendly reminder for readers of mine (and others) - you can find documentation for any variable from within Emacs, by pressing C-h v (or M-x describe-variable), and for any function by pressing C-h f (or M-x describe-function).
try-load-and-configure-library is a small macro I wrote long before I found out about use-package.
More and more I keep wanting to try emacs or vim, because nothing else seems to work as far as productivity. I've tried Evernote and a bunch of other applications, nothing seems to be useful (to me). I always stick to my notepads of paper and pens, that may never change.
I do mostly front end work, so the tools I'm constantly in is in iTerm 2, Adobe products, Mail, Sublime, and Transmit for SFTP.
Would there be any benefit of spending time learning these? Where does one even begin?
Start Emacs, hit Ctrl-h and then t (C-h t in emacs lingo). Brings up the tutorial, it's a quick intro to editing. Now open an org mode file, and open the Org mode info manual: Ctrl-h and then i, then m, which'll bring up a prompt, type "org" and hit enter (C-h i m org RET). By time you'll find your way to use it. Both emacs and org-mode lend themselves to excessive customisation, and learning a bit of Elisp unlocks incredible power.
There are a myriad of packages and tens of starter kits like Spacemacs out there, it's quite possible that looking at these, one does not know where to start. I suggest you start with vanilla emacs and build up your personal and most-fitting experience. Takes some time but definitely worth it. It's like a city, you may have read ten tourist guides, but until you go out there and explore, you know nothing.
That said, this is my set of most basic "sanitisation settings" for emacs:
(setf
;; Always open a new buffer if default is occupied.
async-shell-command-buffer 'new-buffer
;; UI.
visible-bell t
uniquify-buffer-name-style 'forward
save-interprogram-paste-before-kill t
font-lock-maximum-decoration nil
;; Search help more extensively.
apropos-do-all t
;; Ignore case when completing file names in minibuffer.
read-file-name-completion-ignore-case t
read-buffer-completion-ignore-case t
completion-ignore-case t
completion-styles '(initials substring partial-completion)
find-file-suppress-same-file-warnings t
enable-recursive-minibuffers t
;; Save bookmarks after each bookmark command.
bookmark-save-flag t
;; Do not ring the bell when killing in r/o buffers, put the
;; kill in the kill ring but do not modify the buffer.
kill-read-only-ok t
;; Search modes default to regexps.
search-default-mode t)
(setq-default save-place t)
This looks great, thanks for the detailed response with providing what to actually press. Looking at downloading it now but man there are a lot of versions here. http://gnu.mirrors.hoobly.com/gnu/emacs/
> nothing else seems to work as far as productivity
What doesn't work, exactly?
If you're trying to replace note taking on paper, you might want to dip a toe into Emacs and org-mode land and see how it feels. (My suggestion is to just start out slowly and play around with it.)
If you don't feel productive in just manipulating text, I'd check out vim. It really is the superior text editor!
Personally, I think you should begin with plain ole emacs, and start with the emacs tutorial, and work your way up from there. Once you're comfortable navigating buffers, creating files, and reading emacs manuals, check out the org mode manual. If you find yourself intrigued, you'll dig deeper.
Bunch of logins, trying to sync with devices, I fail to use it because it's a lot easier to think clearly with writing things out. Thanks for the suggestion, I think you're right and instead of looking at all the big packages just go vanilla.
The built-in Emacs tutorial is fine for learning basic navigation. But to configure your emacs, buy the ebook "Mastering Emacs." I bought it and deepened my knowledge, but I've also given it to newish users of Emacs as a one-stop shop for getting the good stuff going.
The most crucial thing for me is the inheritance of org-block face by src-blocks. Now finally I'm once again able to use fixed-width font for all codes and variable-width font for all normal notes, which greatly optimizes the reading experience. This has been an issue since org 8.2.1
For me, the biggie is better embedded code support. For example, with RMarkdown, I can embed chunks of... R code in Markdown and have them executed with results put in line. Org mode, by contrast, has had support for dozens of languages for quite some time.
Beyond that, flexibility in rendered output formats. Markdown doesn't really provide any mechanisms for when you want some things to be different between the HTML and LaTeX -> PDF output. Org-mode supports multi output format issues quite neatly.
Little things such as supporting in-document cross references work in Org-mode, but not Markdown. If you've ever needed to do something like "As seen in Figure [X]", know that with Markdown you'll be doing some hacks. Org-mode? Just works.
- When I'm reading email (in emacs), I can quickly create a TODO that links back to the current email I'm reading (most of my TODOs, in fact, link to an email, so this is very useful),
- For my org file where I keep notes about the servers I'm running, I might link to a specific line on a remote apache config,
- For a bug report I might link to a specific git commit in a project to look at later
Any TODO that is important gets scheduled, so that it is linked to from the agenda view. In this way it's very hard for me to lose track of anything, despite most of my work communication happening through email. In fact I now prefer email over using something like Basecamp, because org makes it easier for me to manage!