Org-mode

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Org-mode
Org-mode logo
Original author(s) Carsten Dominik
Developer(s) Carsten Dominik et al.
Stable release 8.2.7 / June 2014; 2 months ago (2014-06)[1]
Written in Emacs lisp
Type Personal information management, Notetaking, Outlining, Literate programming
License GPL
Website orgmode.org

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 120,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. Dominik is the current maintainer, in cooperation with an active development community.[10]

System[edit]

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 Emacsavailable 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[edit]

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 file 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, Emacs grep, occur, etc.). E.g., with property searches like C-c / p, Org files can be used as searchable databases.[23]

Org files as interconnected pages of a personal wiki, with file 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.[24]

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).[25]

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.[26][27]

There is extensive functionality related to integration with other systems.

Integration[edit]

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.).[28]
  • Emacs' BBDB[29] to link to contact details for people. An alternative is org-contacts.[30]
  • 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.[31]
  • Web browsers like Firefox, to link to URLs (e.g. with Ctrl key binding C-c C-l):  [[http://example.com][description]]. Bare URLs like  http://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 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,[32] 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.[33]
    • Org mobile apps:[34]
      • 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.[35]
    • 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.[36]
    • 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.
    • Other proposed mobile integrations include ultraportable laptops such as Ultrabooks and MacBook Air, or smaller ultra-mobile PCs with keyboard, which can run Emacs and Org-mode, or complementary paper notebooks for quick notes such as Moleskine,[37] etc.
  • Vim text editor (for Unix, Linux, Apple's OS X, MS Windows, Android, iOS...), which has plugins[38] 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.[39]
  • 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.[40] The languages can be executed inside Org documents (Org-babel[41]), 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.[42]
  • JIRA issue tracker, integrated using org-jira.[43]
  • Sublime Text editor, with Org syntax and features using its orgmode plugin.[44]
  • Trello project management system, based on Kanban, synchronized using org-trello.[45]
  • 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.[46]
  • 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.[47]
  • Import tools:
  • Export options:

Some of the integrations above require third-party Org-mode extensions, all of which are free software.

See also[edit]

External links[edit]

References[edit]

  1. ^ orgmode.org. OrgMode team http://orgmode.org/ |url= missing title (help). Retrieved 2014-05-02. 
  2. ^ Gmane: Org, Org-mode, Orgmode, Org Mode - Carsten Dominik: Org, the system; Org-mode, the major mode
  3. ^ See System section
  4. ^ See Functionality section
  5. ^ See Integration section
  6. ^ Dominik, Carsten, Emacs Org-mode: Organizing a Scientist's Life and Work (abstract and video), Max Planck Institute for Neurological Research 
  7. ^ Org Mode Manual: History and acknowledgments, Free Software Foundation 
  8. ^ org-mode, Ohloh (open-source project statistics) 
  9. ^ Corbet, Jonathan (2006), "Pre-testing Emacs 22", LWN.net 
  10. ^ Org mode for Emacs – Community 
  11. ^ Dominik, Carsten, Technical description in 24 words 
  12. ^ O'Toole, David, Org tutorial 
  13. ^ The Internet Archive: orgmode.org (2011-07-23)
  14. ^ GNU Emacs Manual: Customization, Free Software Foundation 
  15. ^ "Plain text is supported by nearly every application program on every operating system" (The Linux Information Project: What is plain text?)
  16. ^ Emacs and UTF-8 encoding
  17. ^ Recommended Data Formats for Preservation Purposes, Florida Digital Archive 
  18. ^ University Digital Conservancy Preservation Policy, University of Minnesota Digital Conservancy 
  19. ^ Chavan, Abhijeet (2007), "Get Organized with Emacs Org-mode", Linux Journal 
  20. ^ Chua, Sacha, Outlining Your Notes with Org 
  21. ^ Cave, Charles, Capture mode and Date Trees in org-mode 
  22. ^ EmacsWiki: Dedicated Keys
  23. ^ Janusz, Edward, Emacs, Org Mode, and a database like no other 
  24. ^ Org-babel development 
  25. ^ Org-mode Contributed Packages
  26. ^ The Org Manual, Free Software Foundation 
  27. ^ Hansen, Bernt, Org Mode - Organize Your Life In Plain Text 
  28. ^ EmacsWiki: Calfw, a calendar framework for Emacs
  29. ^ BBDB for GNU Emacs
  30. ^ Danjou, Julien, org-contacts 
  31. ^ EmacsWiki: OrgOutlook
  32. ^ GNU Emacs for Android
  33. ^ EmacsWiki: Maemo Emacs, Category Ports
  34. ^ Org mobile apps: MobileOrg for iOS, MobileOrg for Android, MobileOrgNG for Android
  35. ^ Chua, Sacha, zomg, Evernote and Emacs 
  36. ^ Toodledo, integrated with org-toodledo
  37. ^ Gmane.emacs.orgmode: How to combine the analogue (Moleskine) world with digital (org-mode) world?
  38. ^ Vim plugins for Org-mode functionality: VimOrganizer, vim-orgmode, VOoM, vxfold.vim
  39. ^ EmacsWiki: Viper, Evil (Vi/Vim emulation layers)
  40. ^ Steckerhalter: ob-php
  41. ^ Babel: active code in Org-mode
  42. ^ GitHub Markup 
  43. ^ Bao, Haojun, org-jira 
  44. ^ Magnusson, Daniel, orgmode 
  45. ^ Dumont, Antoine R., org-trello – Sync org-mode file and trello 
  46. ^ Novoid: Memacs
  47. ^ Aptel, Aurélien, Org-sync 

Books[edit]

Journal articles[edit]