Org-mode
Original author(s) | Carsten Dominik |
---|---|
Developer(s) | Carsten Dominik et al. |
Stable release | 8.2.10 / October 2014[1] |
Written in | Emacs lisp |
Type | Personal information management, Notetaking, Outlining, Literate programming… |
License | GPL |
Website |
orgmode |
Org-mode (also: Org mode)[2] is an editing and organizing mode for notes, planning, and authoring in the free software text editor Emacs. It is characterized by a flexible and versatile system which adapts to various workflows, simple and complex,[3] and by an extensive and extensible function (structured text editing, personal organization, web publishing, programming, etc.),[4] which can integrate with a large variety of external systems and resources.[5]
Org-mode was created by Carsten Dominik in 2003, originally to organize his life and work as a scientist,[6] and since the first release numerous users and developers helped him to improve this free software package,[7] which has grown to over 127,000 lines of code.[8] Org-mode is part of Emacs[9] as a major mode — although it is also released separately, and newer versions of Org-mode than the ones shipped with Emacs are often available. Bastien Guerry is the current maintainer, in cooperation with an active development community.[10]
System
As briefly described by Org system author Carsten Dominik, "Org-mode does outlining, note-taking, hyperlinks, spreadsheets, TODO lists, project planning, GTD, HTML and LaTeX authoring, all with plain text files in Emacs."[11]
All functionality is optional, to adapt to different use cases with diverse degrees of complexity. From the Org-mode home page, on simplicity and depth: "At its core, Org-mode is a simple outliner for note-taking and list management. You can learn the basics for using it in five minutes.[12] This may be all you need, and Org-mode will not impose more complex features on you. [...] The full feature set is both broad and deep, easy to access, but unobtrusive."[13]
Most aspects of Org-mode's behavior are customizable, in the standard Emacs manner, either by setting variables directly in the .emacs init file, or by using the more user-friendly Customize interface.[14]
The Org system is based on plain text files with a simple markup. A full functionality implies the use of Emacs — available for most operating systems (Unix, Linux, Apple's OS X, MS Windows, Android, etc.) — or alternatively the use of Vim plugins or Org mobile apps for subsets of the functionality. However, Org's plain text files are directly readable and flexibly editable like any text document and by any text editor (including mobile editors), searchable with common tools such as grep, etc., and manipulable by most programming languages, which results in the maximum available portability and integration between different computers, mobile devices, and operating systems.[15] Emacs and other text editors can be configured to use UTF-8 for international compatibility.[16] Plain text, as a universal open format standard, is also considered by digital archives a high confidence format for long-term data preservation.[17][18]
The system includes a lightweight markup language designed to be easy to write and read in plain text files (similar in function to Markdown, reStructuredText, Textile, etc., with a different implementation), to be exportable (to .html, .tex, .pdf, .odt, etc.), and also to enable functionality, for text formatting such as *bold*, /italic/, =code=, ~verbatim~, _underlined_, +strike-through+, :tags/drawers:, [[links]], | tables |, - lists, 1. ordered lists, - [X] checklists/tasks, * headlines/projects
...
In addition to the Org markup, embedded LaTeX markup can also be used to represent mathematical symbols and formulae.
Functionality
Org-mode, also known as the Emacs Org mode, has specific support for a number of uses, such as maintaining to-do lists, project planning, and writing web pages. For example, to-do items can optionally be given priorities and deadlines, subdivided into simple steps (nested sub-to-dos and/or checklists), and given tags and properties. An agenda for the items to be done this week or day can then be automatically generated by Org-mode.[19]
Other examples of functionality include:
Plain text hierarchical documents or outlines,[20] which for instance can have the same function (structured notes, brainstorming...) and be exported as mind maps in tree form. There is optional indentation for a cleaner outline view.
Structure editing, with a comprehensive set of functions. For example, list items, including subitems, can be quickly moved up/down in a list — to order by priority (first thing first), etc. — using the key bindings M-up and M-down (M = Meta/Alt). If the list is ordered, renumbering is automatic. Also, C-c ^ (C = Ctrl) can automatically sort entries in the active region in a number of ways; it also sorts tables.
Capture, a method used to quickly note down ideas, thoughts or links, and then file them away, edit them or categorize them later. Or, for example, when distractions appear during work hours, they can be promptly noted down to do them later at a suitable time, increasing concentration and efficiency at work. Templates are used for capture items, context (such as external link, timestamp, etc.), and target locations. E.g., among the various target types (where the captured item should be placed) there are file, heading, or a date tree in a file, that is a calendar in the form of an outline of years, months and days. There are many possible ways to use Org-mode, and for instance alternatives or complements to agenda views can be options such as the aforementioned date trees in one file, or simple calendar files compatible with any mobile text editor (e.g. hours.org, days.org, months.org, years.org). Any of these options can include schedules and references to other files (e.g. projects, task lists and notes for work and study, free time, people, etc.).[21] Also, a simpler alternative or complement to Org's capture method can be Emacs' custom find-file dedicated keys, such as <C-f1>, to directly open most used .org files for quick notes.[22]
Search options (links, tags, properties, agenda), in addition to those in Emacs (incremental search, helm,[23] deft,[24] Emacs grep, occur, etc.). E.g., with property searches like C-c / p, Org files can be used as searchable databases.[25]
Org files as interconnected pages of a personal wiki, with external links like [[file:Topic.org][topic]]
or, using link abbreviations for absolute paths, [[wiki:Topic][topic]]
. Other methods for quick file and buffer (opened file) navigation are Emacs' Dired, Buffer Menu, Speedbar, and Sr-Speedbar. Also, Org-velocity and Emacs' Deft are similar to Notational Velocity.
Org-mode can be used as a distributed issue tracker, by storing .org files in a distributed revision control system such as Git. Developers of the Org-babel extension to Org-mode (for integration with programming languages) used Org-mode in this way to track bugs and feature requests.[26]
Add-on packages, contributed by different developers in a wide variety from, for example, generic exporters to any user-defined markup format such as Wikipedia's markup (org-export-generic, org-export), to flashcard learning systems implementing SuperMemo's algorithms (org-drill, org-learn).[27]
And, for instance: tree visibility cycling, quick table and spreadsheet editing, 2D and 3D information graphs, habit tracking, views, work time clocking, effort estimates, attachments, archiving, appointment reminders, automatic web publishing, customizable hook variables, etc.[28][29]
There is extensive functionality related to integration with other systems.
Integration
Org-mode can integrate with:
- RSS feeds. Org-mode can add and change entries based on information found in RSS and Atom feeds.
- Non-Org text files, using on them the Org-mode structure, list, table, and link editing via Org minor modes (Orgstruct, Orgtbl, org-link-minor-mode).
- Calfw, a calendar table view in Emacs, using calfw-org for the Org agenda. Calfw also displays iCalendar (Google Calendar, etc.).[30]
- Emacs' BBDB[31] to link to contact details for people. An alternative is org-contacts.[32]
- Emacs email and news clients such as Gnus, VM and Wanderlust, to link to emails or newsgroup messages. Also, links like
mailto:...
can open any external default email application, such as Mozilla Thunderbird. - Outlook, using org-outlook to create tasks from Outlook items, and open Outlook links in Org-mode.[33]
- Web browsers like Firefox, to link to URLs (e.g. with Ctrl key binding C-c C-l):
[[http://example.com][description]]
. Bare URLs likehttp://example.com
are also enabled as links by default. - Any files, via absolute or relative hyperlinks (C-u C-c C-l), integrating with Emacs and default applications. E.g., a bare
file+sys:anyfile.pdf
is an active file link. - Images, such as
[[/images/image.jpg]]
, which can be linked and exported. Images can also be shown graphically integrated with the Org text on Emacs, using org-toggle-inline-images (C-c C-x C-v), org-startup-with-inline-images and, new in Org 8, org-image-actual-width. - Mobile phones (smartphones) and tablets, by synchronizing Org files (e.g. with WebDAV, Dropbox, Unison, SyncToy...), and using one or several of the available mobile integrations for Android, iOS, and other platforms (e.g. Emacs on an Android tablet, a mobile text editor on any smartphone, etc.):
- GNU Emacs for Android,[34] including Org-mode. Initial version, most Ctrl, etc. key bindings work with Hacker's Keyboard app, or a hardware keyboard and External Keyboard Helper Pro app. Customizable with the /sdcard/emacs/.emacs init file. A large display is recommended.
- Emacs with Org-mode running on a remote server or VPS, connecting to it via a mobile SSH client such as Terminal IDE for Android, or iSSH for iPhone and iPad.
- Emacs for Maemo including Org-mode (e.g. Nokia N900 smartphone with slide-out keyboard...), and other Emacs ports.[35]
- Org mobile apps:[36]
- MobileOrg for iOS.
- MobileOrg for Android.
- MobileOrgNG for Android.
- Emacs evernote mode, to refer and edit Evernote notes directly from Emacs. There is also org-post-subtree-to-evernote.[37]
- Org-toodledo, which synchronizes tasks bi-directionally between Org-mode and over fifty apps (on iPhone, iPad, iPod touch, Android, Windows Phone, BlackBerry, webOS, Symbian...) via Toodledo's web app and open API.[38]
- Any mobile text editor for plain text files, such as Jota Text Editor for Android (or Jota+, which supports syntax highlighting of Org markup's main structure) or Nebulous Notes for iPhone and iPad, or Simplenote sync apps such as mNote for Android or Simplenote for iPhone and iPad.
- Vim text editor (for Unix, Linux, Apple's OS X, MS Windows, Android, iOS...), which has plugins[39] with subsets of the Emacs Org-mode functionality:
- VimOrganizer - An Emacs Org-mode clone for Vim.
- vim-orgmode - Text outlining and task management for Vim based on Emacs Org-mode.
- VOoM - Outliner including an Org markup mode.
- vxfold.vim - Fold cycling similar to Emacs Org-mode.
- Another alternative is to use emulation layers such as Viper or Evil for Vi/Vim key bindings in Emacs.[40]
- Over forty programming languages, such as C, C++, Java, JavaScript, Perl, Python, Ruby, R, SQL, etc. There is initial support for PHP using ob-php.[41] The languages can be executed inside Org documents (Org-babel[42]), and can access and modify tables in the document. It also integrates with iESS buffers, allowing for persistent sessions. Blocks of program code and explanatory text can be woven and tangled in a literate programming style.
- GitHub code repository, which supports Org markup for text files, and its conversion to HTML for web rendering.[43]
- JIRA issue tracker, integrated using org-jira.[44]
- Sublime Text editor, with Org syntax and features using its orgmode plugin.[45]
- Trello project management system, based on Kanban, synchronized using org-trello.[46]
- Memacs modules are able to integrate metadata (subjects, timestamps, contacts...) from a number of external data sources into local Org-mode files: Emails, Usenet postings, text messages, RSS feeds (also for tweets), revision control commits, files containing ISO date and time format strings, photographs, and data stored in CSV or XML file format.[47]
- Org-sync is under development to synchronize with online services such as bugtrackers and to-do managers. There are planned backends for Bugzilla, GitHub, Redmine, Bitbucket, among others.[48]
- Import tools:
- Databases such as MySQL can generally export tab or whitespace separated text files, importable into Org-mode as tables using M-x org-table-import.
- Pandoc can convert documents in the markup formats Markdown, reStructuredText, Textile, HTML, DocBook, BBCode [49] and LaTeX, to Emacs Org-mode.
- There are also tools or scripts to import from WorkFlowy (its plain text export is compatible with Org's nested lists), Remember the Milk, Palm ToDo, Remind, OmniFocus, TaskPaper, OpenOffice ODT, iCalendar (a large number of applications, like Google Calendar, etc., can import and export in the iCalendar format).
- Export options:
- Org-mode can export documents to ASCII, Latin-1, UTF-8, HTML, LaTeX, Beamer, PDF, DocBook, OpenDocument Text, TaskJuggler, FreeMind, XOXO, and iCalendar. New in Org 8: Markdown, Texinfo, Man.
- Tables are exportable to CSV, HTML, LaTeX, Texinfo, TSV, generic format (user-defined).
- Agenda views can be exported as plain text, HTML, PostScript, PDF, and iCalendar.
- Tangled source code and/or its evaluation results can also be exported
Some of the integrations above require third-party Org-mode extensions, all of which are free software.
See also
- Lightweight markup language
- Comparison of notetaking software
- Comparison of document markup languages
- List of personal information managers
- Outliner
External links
- Org mode official site, in English, French, and Japanese
- List of Org-mode text and video tutorials on the Org-mode wiki, Worg
- EmacsWiki: Org Mode
- Emacs-orgmode mailing list (browse) - General discussions on Org-mode development, bug reports and use issues
- Org-mode Questions, Stack Overflow
References
- ↑ "Org mode for Emacs – Your Life in Plain Text". orgmode.org. OrgMode team. Retrieved 2015-04-10.
- ↑ Gmane: Org, Org-mode, Orgmode, Org Mode - Carsten Dominik: Org, the system; Org-mode, the major mode
- ↑ See System section
- ↑ See Functionality section
- ↑ See Integration section
- ↑ Dominik, Carsten, Emacs Org-mode: Organizing a Scientist's Life and Work (abstract and video), Max Planck Institute for Neurological Research
- ↑ Org Mode Manual: History and acknowledgments, Free Software Foundation
- ↑ org-mode, Black Duck Open Hub (open-source project statistics)
- ↑ Corbet, Jonathan (2006), "Pre-testing Emacs 22", LWN.net
- ↑ Org mode for Emacs – Community
- ↑ Dominik, Carsten, Technical description in 24 words
- ↑ O'Toole, David, Org tutorial
- ↑ The Internet Archive: orgmode.org (2011-07-23)
- ↑ GNU Emacs Manual: Customization, Free Software Foundation
- ↑ "Plain text is supported by nearly every application program on every operating system" (The Linux Information Project: What is plain text?)
- ↑ Emacs and UTF-8 encoding
- ↑ Recommended Data Formats for Preservation Purposes (PDF), Florida Digital Archive
- ↑ University Digital Conservancy Preservation Policy, University of Minnesota Digital Conservancy
- ↑ Chavan, Abhijeet (2007), "Get Organized with Emacs Org-mode", Linux Journal
- ↑ Chua, Sacha, Outlining Your Notes with Org
- ↑ Cave, Charles, Capture mode and Date Trees in org-mode
- ↑ EmacsWiki: Dedicated Keys
- ↑ helm
- ↑ deft.el
- ↑ Janusz, Edward, Emacs, Org Mode, and a database like no other
- ↑ Org-babel development
- ↑ Org-mode Contributed Packages
- ↑ The Org Manual, Free Software Foundation
- ↑ Hansen, Bernt, Org Mode - Organize Your Life In Plain Text
- ↑ EmacsWiki: Calfw, a calendar framework for Emacs
- ↑ BBDB for GNU Emacs
- ↑ Danjou, Julien, org-contacts
- ↑ EmacsWiki: OrgOutlook
- ↑ GNU Emacs for Android
- ↑ EmacsWiki: Maemo Emacs, Category Ports
- ↑ Org mobile apps: MobileOrg for iOS, MobileOrg for Android, MobileOrgNG for Android
- ↑ Chua, Sacha, zomg, Evernote and Emacs
- ↑ Toodledo, integrated with org-toodledo
- ↑ Vim plugins for Org-mode functionality: VimOrganizer, vim-orgmode, VOoM, vxfold.vim
- ↑ EmacsWiki: Viper, Evil (Vi/Vim emulation layers)
- ↑ Steckerhalter: ob-php
- ↑ Babel: active code in Org-mode
- ↑ GitHub Markup
- ↑ Bao, Haojun, org-jira
- ↑ Magnusson, Daniel, orgmode
- ↑ Dumont, Antoine R., org-trello – Sync org-mode file and trello
- ↑ Novoid: Memacs
- ↑ Aptel, Aurélien, Org-sync
- ↑ BBCode: ox-bbcode.el
Books
- Dominik, Carsten (2010). The Org Mode 7 Reference Manual: Organize your life with GNU Emacs. With contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye. UK: Network Theory. p. 282. ISBN 978-1-906966-08-9.
Journal articles
- Schulte, Eric; Davison, Dan; Dye, Thomas; Dominik, Carsten (Jan 2012). "A Multi-Language Computing Environment for Literate Programming and Reproducible Research". Journal of Statistical Software (American Statistical Association) 46 (3): 1–24. ISSN 1548-7660.
- Schulte, E.; Davison, D. (May–June 2011). "Active Documents with Org-Mode". Computing in Science Engineering (American Institute of Physics, and IEEE Computer Society) 13 (3): 66–73. ISSN 1521-9615.
|