1 #+OPTIONS: H:3 num:nil toc:t \n:nil @:t ::t |:t ^:t -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
2 #+STARTUP: align fold nodlcheck hidestars oddeven lognotestate
3 #+SEQ_TODO: TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
4 #+TAGS: Write(w) Update(u) Fix(f) Check(c)
5 #+TITLE: Bastien's Worg page
7 #+EMAIL: bzg AT altern DOT org
12 [[file:../index.org][{Back to Worg's index}]]
14 Here I store thoughts and code about Org, along with links to some
17 * Webpages published with Org
19 - My [[http://lumiere.ens.fr/~guerry/][homepage]]
23 - [[file:org-tutorials/org-column-screencast.org][Org Column screencast]]
24 - [[file:org-tutorials/org-column-view-tutorial.org][Org Column Tutorial]]
25 - [[file:org-tutorials/org-spreadsheet-intro.org][Introduction to Org spreadsheet system]]
26 - [[file:org-tutorials/orgtutorial_dto-fr.org][Translation of David O'Toole tutorial]]
27 - [[file:org-tutorials/tables.org][Introduction to tables in Org]]
28 - [[http://lumiere.ens.fr/~guerry/org-playing-with-lists-screencast.php]["Playing with plain lists" screencast]]
30 * Remarks on "What makes a good GTD list manager?"
32 I've read this inspiring article by Kelly Forrister: [[http://www.davidco.com/blogs/kelly/archives/2008/04/what_makes_a_go.html]["What makes a good GTD
33 list manager?"]] Let's see how Org-mode qualifies:
35 : Sorting lists by context - many programs have a "category" feature that
36 : will easily support this.
38 *Yes.* Sorting by contexts is at heart of Org-mode, and can be implemented
39 in various ways. Context can be set as a [[http://orgmode.org/manual/Tags.html][tag]], a [[http://orgmode.org/manual/Categories.html][category]], or any other
40 [[http://orgmode.org/manual/Properties-and-Columns.html][property]] of an item: you can then easily narrow your org file to a view
41 where only selected tags are presented, or define an agenda view to only
42 present what is relevant to the context.
44 : Ability to assign a due date - not forcing it on all of them, but allowing
45 : it for those that need it.
47 =C-c C-d= assigns a due date in =org-mode= buffers or in agenda views. You
48 can also select several items in an agenda view and change the due date of
49 all of them in one keystroke.
51 : Portable for on the go access - can be synched to a handheld or printed.
53 Check MobileOrg -- both for Android and iPhone.
55 : Easily accessible - less than 60 seconds to get something in/out.
57 Emacs starts quite fast these days. So I guess the 60 seconds test is okay
60 : More attractive to you than repelling - you've got to like the system
61 : you're entrusting your brain to.
63 Subjective, of course, but I like Org.
65 : Doesn't force priority codes - if you know GTD, you know that forcing
66 : priority codes is old news and rarely accurate anyway.
68 Org doesn't force anything. Priority codes are easy to add and remove, and
69 it's easy to sort agenda view (or items in a subtree) depending on priority
70 cookies, but you're not forced to.
72 : Place to capture additional notes - attached to an item to capture relevant
73 : info related to the item.
75 Check out =C-c C-z= to add a note to an item from an =org-mode= buffer
76 (=org-add-note=) or from an agenda view (=org-agenda-add-note=). This
77 comes as a complement to the general =org-capture= mechanism (see the
78 [[http://orgmode.org/manual/Capture.html#Capture][manual]]). Notes can also be added depending on the TODO state change:
79 check =org-log-*= variables: check the [[http://orgmode.org/manual/In_002dbuffer-settings.html][summary of in-buffer settings]]
80 and the family of =logdone, lognotedone, ...= options.
82 : Ability to search and sort in various ways.
84 Well, it's so central in Org it doesn't really need a comment. Only check
85 out this [[http://orgmode.org/worg/org-tutorials/advanced-searching.html][great documentation page]] by Matt Lundin.
87 : Robust enough to handle all of your stuff.
89 Org is as robust as any plain text file. Do this qualify? :)
93 Here is my Org configuration.
97 | Variable | Value | Why? |
99 |---------------------------------------+----------------------------------------------------+------------------------------------|
100 | org-agenda-file-regexp | "\\.org\\'" | |
101 | org-agenda-files | '("~/org/bzg.org" "~/install/git/Worg/worg-todo.org") | |
102 | org-agenda-include-diary | nil | I don't use the diary anymore |
103 | org-agenda-remove-tags | t | Don't clutter the agenda view |
104 | org-agenda-restore-windows-after-quit | t | I think this should be the default |
105 | org-agenda-skip-deadline-if-done | t | |
106 | org-agenda-skip-scheduled-if-done | t | |
107 | org-agenda-skip-timestamp-if-done | t | |
108 | org-agenda-sorting-strategy | '((agenda time-up priority-down category-keep) (todo priority-down category-keep) (tags priority-down category-keep) (search category-keep)) | |
109 | org-agenda-start-on-weekday | 1 | Week starts on monday, right? |
110 | org-combined-agenda-icalendar-file | "~/org/org.ics" | I want to use a single file |
111 | org-deadline-warning-days | 7 | |
112 | org-icalendar-include-todo | 'all | |
113 | org-stuck-projects | '("+LEVEL=1" ("NEXT" "TODO" "DONE")) | |
114 | org-scheduled-past-days | 100 | |
115 |---------------------------------------+----------------------------------------------------+------------------------------------|
117 #+BEGIN_SRC emacs-lisp
118 (setq org-agenda-custom-commands
119 '(;; Daily agenda view
120 (" " "Today" agenda "List of tasks for today"
121 ((org-agenda-ndays 1)
122 (org-deadline-warning-days 3)
123 (org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
125 ;; Everything that has a NEXT keyword
127 (",," tags-todo "Status={Work}/NEXT" nil)
128 (",!" tags-todo "-Status={Work}/NEXT" nil)
129 (",+" tags-todo "Status={Leisure}/NEXT" nil)
130 (",?" tags-todo "Status={GTD}/NEXT" nil)
131 (",#" tags-todo "Status={WOT}/NEXT" nil)
132 (",*" todo "NEXT" nil)
134 ;; Everything that has a TODO keyword
136 (";;" tags-todo "Status={Work}/TODO" nil)
137 (";!" tags-todo "-Status={Work}/TODO" nil)
138 (";+" tags-todo "Status={Leisure}/TODO" nil)
139 (";?" tags-todo "Status={GTD}/TODO" nil)
140 (";#" tags-todo "Status={WOT}/TODO" nil)
141 (";*" todo "TODO" nil)
143 ;; Everything that has a NEXT or a TODO keyword
145 (".." tags-todo "Status={Work}/NEXT|TODO" nil)
146 (".!" tags-todo "-Status={Work}/NEXT|TODO" nil)
147 (".+" tags-todo "Status={Leisure}/NEXT|TODO" nil)
148 (".?" tags-todo "Status={GTD}/NEXT|TODO" nil)
149 (".#" tags-todo "Status={WOT}/NEXT|TODO" nil)
150 (".*" todo "NEXT|TODO" nil)
152 ;; Everything that is in progress
153 (":" . "In progress")
154 ("::" tags-todo "+Progress={[0-9]+%}Status={Work}")
155 (":!" tags-todo "+Progress={[0-9]+%}-Status={Work}")
156 (":+" tags-todo "+Progress={[0-9]+%}+Status={Leisure}")
157 (":?" tags-todo "+Progress={[0-9]+%}+Status={GTD}")
158 (":#" tags-todo "+Progress={[0-9]+%}+Status={WOT}")
159 (":*" tags-todo "+Progress={[0-9]+%}"
160 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
162 ;; Everything that has a "Read" tag
163 ("R" tags-todo "Status={Work}+Read/NEXT" ; shortcut for `C-c a r ,'
164 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down effort-up))))
166 ("rr" tags-todo "Status={Work}+Read/NEXT" nil)
167 ("r." tags-todo "Read/NEXT|TODO" nil)
168 ("r," tags-todo "Read/NEXT" nil)
169 ("r;" tags-todo "Read/TODO" nil)
170 ("r:" tags "+Progress={[0-9]+%}+Read" nil)
171 ("r!" tags-todo "-Status={Work}+Read/NEXT" nil)
172 ("r+" tags-todo "+Status={Leisure}+Read/NEXT" nil)
173 ("r?" tags-todo "+Status={GTD}+Read/NEXT" nil)
174 ("r#" tags-todo "+Status={WOT}+Read/NEXT" nil)
176 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
177 ;; ("r_" tags "Read+LEVEL<3" nil)
178 ("rF" tags "+Read+@Offline" nil)
179 ("r@" tags "+Read+Mail" nil)
181 ;; Everything that has a "Write" tag
182 ("W" tags-todo "Status={Work}+Write/NEXT" ; shortcut for `C-c a w ,'
183 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down effort-up))))
185 ("ww" tags-todo "Status={Work}+Write/NEXT" nil)
186 ("w." tags-todo "Write/NEXT|TODO" nil)
187 ("w," tags-todo "Write/NEXT" nil)
188 ("w;" tags-todo "Write/TODO" nil)
189 ("w:" tags "+Progress={[0-9]+%}+Write" nil)
190 ("w!" tags-todo "-Status={Work}+Write/NEXT" nil)
191 ("w+" tags-todo "+Status={Leisure}+Write/NEXT" nil)
192 ("w?" tags-todo "+Status={GTD}+Write/NEXT" nil)
193 ("w#" tags-todo "+Status={WOT}+Write/NEXT" nil)
194 ("wo" tags "+Write+@Online" nil)
195 ("w@" tags "+Write+Mail" nil)
197 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
201 ("bb" tags-todo "+Bug"
202 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
203 ("b," tags-todo "+Bug/NEXT"
204 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
205 ("b." tags-todo "+Bug/NEXT|TODO"
206 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
207 ("b;" tags-todo "+Bug/TODO"
208 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
209 ("b:" tags-todo "+Bug+Progress={[0-9]+%}"
210 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
214 ("$$" tags-todo "+Code"
215 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
216 ("$," tags-todo "+Code/NEXT"
217 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
218 ("$." tags-todo "+Code/NEXT|TODO"
219 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
220 ("$;" tags-todo "+Code/TODO"
221 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
222 ("$:" tags-todo "+Code+Progress={[0-9]+%}"
223 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
227 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
229 ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
231 ("D" todo "DELEGATED")
232 ("v" tags "Watch" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
233 ("g" tags "Blog" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
234 ("l" tags "Listen" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down))))
235 ("@" tags "Mail" ((org-agenda-sorting-strategy '(time-up todo-state-up priority-down)))) ;; necessary?
241 | Variable | Value | Why? |
242 |-----------------------------------------+-------------+---------------------------|
243 | org-export-default-language | "fr" | Nobody's perfect |
244 | org-export-highlight-first-table-line | t | |
245 | org-export-html-extension | "php" | I use this for my website |
246 | org-export-html-style | "" | |
247 | org-export-html-style-default | "" | |
248 | org-export-html-with-timestamp | t | |
249 | org-export-skip-text-before-1st-heading | nil | |
250 | org-export-with-LaTeX-fragments | t | |
251 | org-export-with-archived-trees | nil | |
252 | org-export-with-drawers | '("HIDE") | |
253 | org-export-with-section-numbers | nil | |
254 | org-export-with-sub-superscripts | '{} | |
255 | org-export-with-tags | 'not-in-toc | |
256 | org-export-with-timestamps | t | |
257 |-----------------------------------------+-------------+---------------------------|
259 #+BEGIN_SRC emacs-lisp
260 (setq org-publish-project-alist
263 :base-directory "~/org/homepage/"
264 :base-extension "org"
265 :publishing-directory "/home/guerry/public_html/org/homepage/"
266 :publishing-function org-publish-org-to-html
268 :table-of-contents nil
269 :style "<link rel=\"stylesheet\" href=\"u/org.css\" type=\"text/css\" />"
272 :xml_declaration "<?php echo '<?xml version=\"1.0\" encoding=\"%s\"?>'; ?>")
274 :base-directory "~/org/homepage/articles/"
275 :base-extension "org"
276 :publishing-directory "/home/guerry/public_html/org/homepage/articles/"
277 :publishing-function org-publish-org-to-html
279 :table-of-contents nil
280 :style "<link rel=\"stylesheet\" href=\"../u/org.css\" type=\"text/css\" />"
283 :xml_declaration "<?php echo '<?xml version=\"1.0\" encoding=\"%s\"?>'; ?>")))
286 ** Tags / TODO / Remember / Logging
288 | Variable | Value | Why? |
289 |-----------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+--------------------------------|
290 | org-fast-tag-selection-single-key | 'expert | Good to be an expert somewhere |
291 | org-tag-alist | '(("Read" . ?r) ("Write" . ?w) ("Watch" . ?v) ("Blog" . ?g) ("Listen" . ?l) ("Code" . ?c) ("Bug" . ?b) ("@HOME" . ?H) ("@LAB" . ?L) ("@Online" . ?O) ("@Offline" . ?F) ("Mail" . ?m) ("Print" . ?p)) | |
292 | org-tags-column | -74 | |
293 | org-tags-match-list-sublevels | t | |
294 | org-todo-keywords | '((type "NEXT" "TODO" "WAITING" " " "DONE" "DELEGATED" "CANCELED")) | |
295 | org-use-fast-todo-selection | t | |
296 | org-use-property-inheritance | t | |
297 | org-use-tag-inheritance | t | |
298 | org-log-into-drawer | t | |
299 | org-log-note-headings | '((done . "CLOSING NOTE %t") (state . "State %-12s %t") (clock-out . "")) | |
300 | org-remember-default-headline | "Notes" | |
301 | org-remember-store-without-prompt | t | |
303 #+BEGIN_SRC emacs-lisp
304 (setq org-remember-templates
305 '(; caps are for projects I'm active on
306 ("Eyrolles" ?E "* TODO %a\n\n%i%?" "~/org/bzg.org" "Eyrolles" nil)
307 ("UID" ?U "* TODO %a\n\n%i%?" "~/org/bzg.org" "UID" nil)
308 ("Webmaster" ?W "* TODO %a\n\n%i%?" "~/org/bzg.org" "Webmaster" nil)
309 ("OLPC" ?O "* TODO %a\n\n%i%?" "~/org/bzg.org" "OLPC" nil)
310 ; small letters for other projects:
311 ("Parkway" ?p "* TODO %a\n\n%i%!" "~/org/bzg.org" "Parkway" nil)
312 ("Basement" ?b "* TODO %a\n\n%i%?" "~/org/bzg.org" "Basement" nil)
313 ("Garden" ?g "* TODO %a\n\n%i%?" "~/org/bzg.org" "Garden" nil)
314 ("Attic" ?a "* TODO %a\n\n%i%?" "~/org/bzg.org" "Attic" nil)
315 ("Emacs" ?e "* TODO %a\n\n%i%?" "~/org/bzg.org" "Emacs" nil)
316 ("Infos" ?i "* TODO %a\n\n%i%?%!" "~/org/bzg.org" "Infos" nil)
317 ("Compas" ?c "* TODO %a\n\n%i%?" "~/org/bzg.org" "Compas" nil)
318 ("ITIC" ?t "* TODO %a\n\n%i%?" "~/org/bzg.org" "ITIC" nil)
319 ("WikiProf" ?w "* TODO %a\n\n%i%?" "~/org/bzg.org" "Wikiprof" nil)
320 ("Org" ?o "* TODO %a\n\n%i%?" "~/org/bzg.org" "Org" nil)))
325 | Variable | Value | Why? |
326 |---------------------------------------+--------------------------------------------------+------------------------------------------------|
327 | org-confirm-elisp-link-function | nil | |
328 | org-confirm-shell-link-function | nil | |
329 | org-context-in-file-links | t | |
330 | org-cycle-include-plain-lists | nil | Avoid confusion. Cycling is just for headlines |
331 | org-default-notes-file | "~/org/notes.org" | (I don't use this anyway...) |
332 | org-directory | "~/org/" | |
333 | org-drawers | '("PROPERTIES" "CLOCK" "HIDE") | I just added "HIDE" to the defaults. |
334 | org-ellipsis | nil | |
335 | org-email-link-description-format | "%c: %.50s" | %.50s is a bit too much perhaps |
336 | org-fontify-done-headline | t | |
337 | org-fontify-emphasized-text | t | |
338 | org-footnote-define-inline | t | I recommend reading more about Org [[http://orgmode.org/manual/Footnotes.html][footnotes]] |
339 | org-hide-emphasis-markers | nil | Keep Org plain text, no WYSIWYG. |
340 | org-link-frame-setup | '((gnus . gnus) (file . find-file-other-window)) | |
341 | org-link-mailto-program | '(browse-url-mail "mailto:%a?subject=%s") | |
342 | org-priority-start-cycle-with-default | nil | |
343 | org-refile-targets | '((org-agenda-files . (:maxlevel . 2))) | |
344 | org-refile-use-outline-path | t | |
345 | org-return-follows-link | t | |
346 | org-reverse-note-order | t | |
347 | org-show-following-heading | '((default nil) (occur-tree t)) | |
348 | org-show-hierarchy-above | '((default nil) (occur-tree t)) | |
349 | org-show-hierarchy-above | '((default nil) (tags-tree . t)) | |
350 | org-special-ctrl-a/e | 'reversed | |
351 | org-special-ctrl-k | t | |
352 |---------------------------------------+--------------------------------------------------+------------------------------------------------|
354 #+BEGIN_SRC emacs-lisp
355 (setq org-link-abbrev-alist
356 '(("google" . "http://www.google.com/search?q=%s")
357 ("googledef" . "http://www.google.fr/search?q=define%3A%s")
358 ("googlemap" . "http://maps.google.com/maps?f=q&hl=fr&q=%s&ie=UTF8&iwloc=addr&om=1")
359 ("homepage" . "http://www.cognition.ens.fr/~guerry/%s.html")
360 ("delicious" . "http://delicious.com/tag/%s")
361 ("mydelicious" . "http://delicious.com/bzg/%s")
362 ("wpfr" . "http://fr.wikipedia.org/wiki/%s")
363 ("wpen" . "http://en.wikipedia.org/wiki/%s")
364 ("emacswiki" . "http://www.emacswiki.org/cgi-bin/wiki?search=%s")))