Org mode 9.0 released
orgmode.org
orgmode.org
- 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!
The parent poster does have a point though, we don't have URI for emails...
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).
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.
The modular aspects of the UNIX philosophy are pretty cool; the data interchange format (un-typed \n-delimited strings) is irrational (and
dangerous).
JSON w/ a JSONLD @context and XSD type URIs may also contain newlines (which should be escaped)
Note that, with OSX bash, tab \t must be specified as $'\t'.
And, sometimes, it's \r\n instead of just \n (which is extra-format metadata).
And then Unicode. Oh yeah, unicodë.
\r\n is Windows, not Unix.
What about Unicode? (Btw, UTF-8 was created by unixers Rob Pike and Ken Thompson https://www.cl.cam.ac.uk/~mgk25/ucs/utf-8-history.txt )
When you're parsing a text file, or streaming lines of text delimited with /n, how do downstream programs know whether it's ASCII or unicode?
OTOH, I'll take SExps over JSON, thanks.
http://www.johndcook.com/blog/2010/06/30/where-the-unix-phil...
man page for ls and see if they built a ton onto the little program and not just write new programs.
(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.)
- 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.
Don't be put off by the website the product is much better than the site would imply.
http://www.giuspen.com/cherrytree/
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.
In that case, however there was a code snippet to repair them. You have to know and read the changelogs for them though.
Now again?
It's very frustrating.
Opening an old Excel or Word file does not randomly fail (last time I checked).
Or, if you pick some circa-2005 Java library, it still works.
So it is not clear why org-mode gets a free pass here. At least they could prompt you that "your stuff will not work" if you upgrade.
As for Java - it's mostly compatibile in source and in bytecode:
http://www.oracle.com/technetwork/java/javase/compatibility-...
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.
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.
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.
What might be nice is, for every release, to provide a script that would update your org files to the current standard.
Maybe such files even exist, but they would need to be closer to the users' hands.
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)
New Org linter library
org-lint can check syntax and report common issues in Org documents.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.
Still use it.
I'm with you, though. I wouldn't call it simple, but man is it easy to use.
"Nothing is difficult if you practice it enough"
"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. :-) )
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." :-) )
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.
It's a really great way of bootstrapping/seeding presentations.
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.
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.
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?
Spacemacs improves this for some modes, but it still won't allow custom bindings in any/most of them.
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?
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.
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!
https://github.com/melling/ios_topics/blob/master/README.org
https://github.com/melling/ComputerLanguages
https://github.com/melling/ErgonomicNotes/blob/master/README...
I need tasklists to be accessible on the phone.
Alternately, you can invoke the org project/publish system.:https://bitbucket.org/shoover/emacs.d/src/4f5461d826c92c749b...
It works great, emacs run better in android than in my desktop.
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.
1. org agenda integration into their todo lists 2. babel mode? i'd love to integrate code into some of study guides for interviews
love emacs, but i never feel like im using more than 1% of org mode's potential.
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.
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.
Apart from that their defaults are pretty good.
(use-package org
:bind ("C-c a" . org-agenda)
:config
(progn
(setq org-agenda-files '("~/org"))
(setq org-cycle-separator-lines 1)
(setq org-todo-keywords '((type "TODO" "PROG" "WAIT" "|" "DONE")))
(setq org-todo-keyword-faces '(("TODO" . "brightblack") ("WAIT" . "yellow")))))https://gist.github.com/TeMPOraL/a25fbf499e295537fa80e525fcc...
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.
(defmacro try-load-and-configure-library (lib &rest configuration)
(declare (indent defun))
`(when (locate-library (symbol-name ,lib))
(require ,lib)
,@configuration))In the org files, to collapse and clean up the outline visuals:
#+STARTUP: hidestars indent overview
In init.el (see [1] for define-keys macro): (define-keys org-mode-map
("\C-cl" . 'org-store-link)
("\C-cw" . 'copy-org-link-at-point)
;; Make links work like chasing definitions in source code.
("\M-." . 'org-open-at-point)
("\M-," . 'org-mark-ring-goto))
A helper [2] to quickly export a subtree to HTML is very
handy.[1]: https://bitbucket.org/shoover/emacs.d/src/4f5461d826c92c749b...
[2]: https://bitbucket.org/shoover/emacs.d/src/4f5461d826c92c749b...
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?
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.
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)And BTW you're very welcome.
Here is a link to the git repository of the org-file containing those changes:
> New option org-attach-commit
> When non-nil, commit attachments with git, assuming the document is in a git repository.
Anyone knows if it would work with org-store-link in magit? That would be handy.
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.