emacs org-mode -- gnu hackers meeting paris 2011

23
Emacs Org-mode Bastien Guerry – [email protected] August 27th, GNU Hackers meeting Bastien Guerry – [email protected] () Emacs Org-mode August 27th, GNU Hackers meeting / 23

Upload: bastien-guerry

Post on 05-Dec-2014

2.380 views

Category:

Technology


1 download

DESCRIPTION

The slides for the presentation I gave at GHM 2011 in Paris.

TRANSCRIPT

Page 1: Emacs org-mode -- GNU hackers meeting Paris 2011

Emacs Org-mode

Bastien Guerry – [email protected]

August 27th, GNU Hackers meeting

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 1

/ 23

Page 2: Emacs org-mode -- GNU hackers meeting Paris 2011

Outline

1 Introduction: what is org-mode?

2 Incremental (live) features walkthrough

3 A few useful Org-mode extensions

4 Org-mode’s documentation

5 Org-mode’s past and future

6 Quick sneak into org-element.el (by Nicolas Goaziou)

7 Org-mode goodies

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 2

/ 23

Page 3: Emacs org-mode -- GNU hackers meeting Paris 2011

What is org-mode?

"Org-mode is for keeping notes, maintaining ToDo lists, doing projectplanning, and authoring with a fast and effective plain-text system."

A simple TODO list manageralso a full-fledged organizer

An intuitive note taking environnementalso a full-fledged authoring environment

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 3

/ 23

Page 4: Emacs org-mode -- GNU hackers meeting Paris 2011

Org-mode is much more. . .

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 4

/ 23

Page 5: Emacs org-mode -- GNU hackers meeting Paris 2011

Core org-mode facts

Org-mode core facts:

http://orgmode.orgCreated in 2003 by Carsten DominikGNU GPLv3 or any later versionEarly integration into GNU EmacsCurrent Stable and GNU Emacs (trunk) version is 7.7More than 8500 commits* since January 2008

A superactive community of users and contributors:

120 developers posted at least 1 commit25 developers posted at least 10 commits

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 5

/ 23

Page 6: Emacs org-mode -- GNU hackers meeting Paris 2011

Org-mode design principles

Background:

Emacs (GNU Emacs, XEmacs, Aquamacs)Plain text (allow flexible processing)Derive from outline-mode

Design principles:

"Don’t impose unwanted complexity""95% of the features added after core implementation"Tries to adapt to everyone’s need

Theorem (No learning curve)

You set the learning curve depending on your needs.

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 6

/ 23

Page 7: Emacs org-mode -- GNU hackers meeting Paris 2011

Manipulating structure

1 A simple outline file2 Changing the structure of the file3 Easy list manipulation4 Adding checkboxes to lists5 Adding links6 . . .

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 7

/ 23

Page 8: Emacs org-mode -- GNU hackers meeting Paris 2011

Todo and schedule tasks

1 A simple TODO2 Updating TODO keywords3 Adding logs4 A simple agenda view of the TODO keywords5 A TODO with a SCHEDULE timestamp6 Manipulating timestamps7 A simple agenda view of the SCHEDULED items8 Manipulating timestamps from the agenda view9 . . .

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 8

/ 23

Page 9: Emacs org-mode -- GNU hackers meeting Paris 2011

Tags, Column view, clock in. . .

1 Adding tags2 An agenda view of specific tags3 The column view in an Org file4 The column view in the agenda buffer5 Adding the "effort" property6 Clocking in tasks7 Inserting the clocktable8 Viewing a clock summary in the column view9 . . .

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 9

/ 23

Page 10: Emacs org-mode -- GNU hackers meeting Paris 2011

Capturing, archiving, exporting, publishing

1 Capturing a task (e.g. from dired)2 Archiving a task (to various locations)3 Exporting to HTML, LATEX (pdf), ODT, etc.4 Publishing a project5 . . .

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 10

/ 23

Page 11: Emacs org-mode -- GNU hackers meeting Paris 2011

Tables, spreadsheets, literate programming

1 Manipulating tables2 Tables as spreadsheets3 Literate programming with Babel4 . . .

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 11

/ 23

Page 12: Emacs org-mode -- GNU hackers meeting Paris 2011

A few useful extensions

org-mobile.el (for MobileOrg)org-attach.el by John Wiegleyorg-beamer.el by Carsten Dominikorg-crypt.el by John Wiegleyorg-habit.el by John Wiegleyorg-taskjuggler.el by Christian Egliorg-depend.el by Carsten Dominik. . .

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 12

/ 23

Page 13: Emacs org-mode -- GNU hackers meeting Paris 2011

Org printed manual by Network-Theory.co.uk(Brian Gough)

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 13

/ 23

Page 14: Emacs org-mode -- GNU hackers meeting Paris 2011

Worg website

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 14

/ 23

Page 15: Emacs org-mode -- GNU hackers meeting Paris 2011

Worg’s facts

Started in november 2007GNU Emacs + Org + git + server-side publication>2300 commits since thenText and code released under GNU GPLv3 or laterA very long user-contributed FAQMany useful tutorials, hacks, code snippetsMaintained by Matt Lundin since January 2011

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 15

/ 23

Page 16: Emacs org-mode -- GNU hackers meeting Paris 2011

Important past changes

November 2007: Worg setupJanuary 2008: moving org.el to gitMarch-April 2008: splitting org.el (v6.01)Using Worg/org-issues.org for tracking issues (maintained byDavid Maus and Nicolas Goaziou)New capture mechanism (a rewrite of the "remember"mechanism)Using patchwork for tracking patchs (hosted by John Wiegley)Org Babel by Eric Schulte and Dan Davison in core since 7.0http://orgmode.org and the org-mode.git repository moved to adedicated server, maintained by Jason DunsmoreODT exporter by Jambunathan K. in contrib/ since Org 7.6

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 16

/ 23

Page 17: Emacs org-mode -- GNU hackers meeting Paris 2011

Important future improvements

org-element.el

A cleverer recursive parser and a cleaner rendering engine.A structured representation: useful when talking with organizers’APIs like redmine, bugzilla, rememberthemilk.com, etc.

Integration of the ODT exporter into Org’s coreA cache mechanism?A cached representation of Org files would:

Allow to reuse a cached representation of Org files whenexporting/publishing these files to a new formats.Allow to easily extract specific information from the cached files(e.g. a list of scheduled items for each on the next 12 months.)

Tags grouping

Allow #+TAGS: color: blue white red.

Loop over regions when scheduling, archiving, etc.Bastien Guerry – [email protected] () Emacs Org-mode

August 27th, GNU Hackers meeting 17/ 23

Page 18: Emacs org-mode -- GNU hackers meeting Paris 2011

org-element.el: test org-mode file

#+TITLE: Hello World!

* Hello world!

I said it.

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 18

/ 23

Page 19: Emacs org-mode -- GNU hackers meeting Paris 2011

org-element.el: parser

(defun org-element-parse-region(beg end item structure acc)"Recursively parse buffer between BEG and END [...]"(save-restriction

(narrow-to-region beg end)(goto-char beg)(org-skip-whitespace)(beginning-of-line)(if (eobp)

(nreverse acc)(let (( element (org-element-at-point item structure )))

(org-element-parse-region(org-element-get-property :end element)end item structure(cons (org-element-parse-element

element acc structure) acc ))))))

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 19

/ 23

Page 20: Emacs org-mode -- GNU hackers meeting Paris 2011

org-element.el: parsed file

(document(keyword(:name "TITLE" :value "Hello World!"

:begin 1 :end 24:post-blank 1))

(headline(:name "Hello world!" :begin 24 :end 51 :pre-blank 1

:contents-begin 40 :contents-end 51 :level 1:priority nil :todo-keyword nil :todo-type nil:properties(("FILE" . "/home/guerry/test.org")("BLOCKED" . "")("CATEGORY" . "test")))

(paragraph(:begin 40 :end 51 :contents-begin 40

:contents-end 51 :post-blank 0)"I said it.")))

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 20

/ 23

Page 21: Emacs org-mode -- GNU hackers meeting Paris 2011

Org T-Shirts for everyone!

Figure: Org-mode T-Shirt for everyone

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 21

/ 23

Page 22: Emacs org-mode -- GNU hackers meeting Paris 2011

Org T-Shirts – for you?

Figure: "I was on Dad and Mum Org-mode file" (Jason Dunsmore)

Figure:Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 22

/ 23

Page 23: Emacs org-mode -- GNU hackers meeting Paris 2011

The Orgfather

Figure: Getting advice from the "Org Father" at FOSDEM

Bastien Guerry – [email protected] () Emacs Org-modeAugust 27th, GNU Hackers meeting 23

/ 23