Browse Source

Merge branch 'master' of orgmode.org:worg

Fabrice Niessen 7 years ago
parent
commit
710fd3a72a
100 changed files with 17866 additions and 128 deletions
  1. 701 0
      code/elisp/org-refer-by-number.el
  2. 15 15
      dev/index.org
  3. 543 113
      dev/org-export-reference.org
  4. 0 0
      images/gsoc/2012/beach-books-beer-60pc.png
  5. 0 0
      images/gsoc/2012/beach-books-beer.png
  6. BIN
      images/gsoc/2012/bugpile/domain-class-uml.png
  7. BIN
      images/gsoc/2012/bugpile/edit-user-details-uml-roa.png
  8. BIN
      images/gsoc/2012/bugpile/edit-user-details-uml-soa.png
  9. 0 0
      images/gsoc/2012/bugpile/iorg-arch.png
  10. BIN
      images/gsoc/2012/bugpile/login-uml-roa.png
  11. BIN
      images/gsoc/2012/bugpile/login-uml-soa.png
  12. BIN
      images/gsoc/2012/bugpile/logout-uml-roa.png
  13. BIN
      images/gsoc/2012/bugpile/logout-uml-soa.png
  14. BIN
      images/gsoc/2012/bugpile/register-as-user-uml-roa.png
  15. BIN
      images/gsoc/2012/bugpile/register-as-user-uml-soa.png
  16. BIN
      images/gsoc/2012/bugpile/search-users-uml-roa.png
  17. BIN
      images/gsoc/2012/bugpile/search-users-uml-soa.png
  18. BIN
      images/gsoc/2012/bugpile/take-action-select-users-uml-roa.png
  19. BIN
      images/gsoc/2012/bugpile/take-action-select-users-uml-soa.png
  20. BIN
      images/gsoc/2012/bugpile/user-management-uml-uc.png
  21. 31 0
      org-api/README
  22. 181 0
      org-api/htmlize-api.org
  23. 235 0
      org-api/index.org
  24. 792 0
      org-api/org-agenda-api.org
  25. 29 0
      org-api/org-annotate-file-api.org
  26. 952 0
      org-api/org-api.org
  27. 62 0
      org-api/org-archive-api.org
  28. 26 0
      org-api/org-ascii-api.org
  29. 181 0
      org-api/org-attach-api.org
  30. 34 0
      org-api/org-babel-asymptote-api.org
  31. 27 0
      org-api/org-babel-awk-api.org
  32. 64 0
      org-api/org-babel-comint-api.org
  33. 39 0
      org-api/org-babel-eval-api.org
  34. 70 0
      org-api/org-bbdb-api.org
  35. 102 0
      org-api/org-beamer-api.org
  36. 98 0
      org-api/org-bibtex-api.org
  37. 27 0
      org-api/org-bookmark-api.org
  38. 221 0
      org-api/org-capture-api.org
  39. 105 0
      org-api/org-choose-api.org
  40. 393 0
      org-api/org-clock-api.org
  41. 21 0
      org-api/org-colview-api.org
  42. 25 0
      org-api/org-compat-api.org
  43. 204 0
      org-api/org-contacts-api.org
  44. 33 0
      org-api/org-crypt-api.org
  45. 124 0
      org-api/org-ctags-api.org
  46. 33 0
      org-api/org-datetree-api.org
  47. 54 0
      org-api/org-depend-api.org
  48. 24 0
      org-api/org-docbook-api.org
  49. 25 0
      org-api/org-docview-api.org
  50. 493 0
      org-api/org-drill-api.org
  51. 370 0
      org-api/org-e-ascii-api.org
  52. 443 0
      org-api/org-e-html-api.org
  53. 415 0
      org-api/org-e-latex-api.org
  54. 562 0
      org-api/org-e-odt-api.org
  55. 308 0
      org-api/org-e-publish-api.org
  56. 1360 0
      org-api/org-element-api.org
  57. 23 0
      org-api/org-elisp-symbol-api.org
  58. 23 0
      org-api/org-entities-api.org
  59. 32 0
      org-api/org-eshell-api.org
  60. 77 0
      org-api/org-eval-api.org
  61. 36 0
      org-api/org-eval-light-api.org
  62. 2306 0
      org-api/org-exp-api.org
  63. 76 0
      org-api/org-expiry-api.org
  64. 2248 0
      org-api/org-export-api.org
  65. 74 0
      org-api/org-export-generic-api.org
  66. 107 0
      org-api/org-feed-api.org
  67. 195 0
      org-api/org-footnote-api.org
  68. 143 0
      org-api/org-freeming-api.org
  69. 24 0
      org-api/org-git-link-api.org
  70. 70 0
      org-api/org-gnus-api.org
  71. 78 0
      org-api/org-habit-api.org
  72. 100 0
      org-api/org-html-api.org
  73. 31 0
      org-api/org-icalendar-api.org
  74. 194 0
      org-api/org-id-api.org
  75. 141 0
      org-api/org-indent-api.org
  76. 38 0
      org-api/org-info-api.org
  77. 91 0
      org-api/org-inlinetask-api.org
  78. 18 0
      org-api/org-install-api.org
  79. 79 0
      org-api/org-invoice-api.org
  80. 71 0
      org-api/org-irc-api.org
  81. 27 0
      org-api/org-latex-api.org
  82. 658 0
      org-api/org-list-api.org
  83. 324 0
      org-api/org-lparse-api.org
  84. 19 0
      org-api/org-mac-ical-api.org
  85. 51 0
      org-api/org-mac-message-api.org
  86. 81 0
      org-api/org-mairix-api.org
  87. 28 0
      org-api/org-man-api.org
  88. 23 0
      org-api/org-mew-api.org
  89. 63 0
      org-api/org-mhe-api.org
  90. 67 0
      org-api/org-mime-api.org
  91. 42 0
      org-api/org-mks-api.org
  92. 167 0
      org-api/org-mobile-api.org
  93. 163 0
      org-api/org-mouse-api.org
  94. 35 0
      org-api/org-mtags-api.org
  95. 155 0
      org-api/org-notify-api.org
  96. 44 0
      org-api/org-notmuch-api.org
  97. 128 0
      org-api/org-odt-api.org
  98. 23 0
      org-api/org-pcomplete-api.org
  99. 71 0
      org-api/org-plot-api.org
  100. 0 0
      org-api/org-protocol-api.org

+ 701 - 0
code/elisp/org-refer-by-number.el

@@ -0,0 +1,701 @@
+;;; org-refer-by-number.el --- Use numbers to refer to things within and outside of org
+
+;; Copyright (C) 2011,2012 Free Software Foundation, Inc.
+
+;; Author: Marc-Oliver Ihm <ihm@ferntreffer.de>
+;; Keywords: hypermedia, matching
+;; Requires: org
+;; Download: http://ferntreffer.de/elisp/org-refer-by-number.el
+;; Version: 1.3.0
+
+;;; License:
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Purpose:
+;;
+;;  Refer to things outside of org by reference numbers, especially if
+;;  direct linking is not possible. These reference numbers are added to
+;;  and kept within a table along with the timestamp of their creation.
+;;
+;;  The reference numbers may then be used to refer to things outside of
+;;  Org (e.g. by writing them on a piece of paper or by using them as part
+;;  of a directory name). Within Org you may then refer to these things by
+;;  their reference number (e.g. "R153"). Later, these numbers can be
+;;  looked up easily.
+;;
+;;  The whole functionality is available through the function
+;;  `org-refer-by-number'; the necessary setup is described in the
+;;  docstring of the variable `org-refer-by-number-id'.
+;;
+;;  org-refer-by-number.el is only a small add-on to Carsten Dominiks
+;;  Org-mode, which must be installed as a prerequisite. See
+;;  http://orgmode.org or elpa for Org-mode itself.
+;;
+;; Setup:
+;;
+;;  - Adjust these lines and add them to your .emacs:
+;;
+;;    (require 'org-refer-by-number)
+;;    (setq org-refer-by-number-id "00e26bef-1929-4110-b8b4-7eb9c9ab1fd4")
+;;    ;; Optionally assign a key
+;;    (global-set-key (kbd "C-+") 'org-refer-by-number)
+;;
+;;  - Create an Org-mode node with a reference table
+;;    as described in the documentation of `org-refer-by-number-id'
+;;
+;; Further reading:
+;;
+;;  For the necessary setup, see the variable `org-refer-by-number-id';
+;;  for regular usage, see the function `org-refer-by-number'.
+;;
+
+;;; Change Log:
+
+;;   [2012-04-28 Sa] Version 1.3.0:
+;;   - New operations occur and multi-occur
+;;   - All operations can now be invoked explicitly
+;;   - New documentation
+;;   - Many bugfixes
+
+;;   [2011-12-10 Sa] Version 1.2.0:
+;;   - Fixed a bug, which lead to a loss of newly created reference numbers
+;;   - Introduced single and double prefix arguments
+;;   - Started this Change Log
+
+;;; Code:
+
+(require 'org-table)
+
+(defvar org-refer-by-number-id nil 
+  "Id of the Org-mode node, with the table of reference numbers.
+
+Read below, on how to set up things. See the documentation of
+`org-refer-by-number' for normal usage after setup.
+
+Setup requires two steps:
+
+- Create a suitable org-mode node
+- Adjust your .emacs initialization file
+
+
+Here is how you create the org-mode node, where your reference
+numbers will be stored. It may look like this:
+
+
+  * My node for org-refer-by-number
+    :PROPERTIES:
+    :ID:       00e26bef-1929-4110-b8b4-7eb9c9ab1fd4
+    :END:
+  
+    | Number | Date            | Comment                    |
+    |--------+-----------------+----------------------------|
+    | R1     | [2012-04-28 Sa] | My first reference number  |
+
+
+You may just want to copy this node into one of your org-files.
+Many things however can or should be adjusted:
+
+- The node needs not be a the top level node.
+
+- Its name is completely at you choice.
+
+- Column names can be changed.
+
+- You can add further columns or even remove the
+  \"Comment\"-column.
+
+- Your references need not start at \"R1\"; and of course you can
+  adjust date and comment.  However, having an initial row is
+  required (as a template for subsequent references).
+
+- Your reference need not have the form \"R1\"; you may just as
+  well choose any text, that contains a single number,
+  e.g. \"reference-{1}\" or \"#1\" or \"++1++\". The function
+  `org-refer-by-number' will inspect your first reference and
+  create all subsequent references in the same way.
+    
+- You may want to change the ID-Property of the node above (in
+  which case you should change it within your .emacs
+  too). However, this is not required to make things work.
+
+
+Having created the node with your reference table, you only need
+to add some lines to your .emacs:
+
+  (require 'org-refer-by-number)
+  (setq org-refer-by-number-id \"00e26bef-1929-4110-b8b4-7eb9c9ab1fd4\")
+  ;; Optionally assign a key
+  (global-set-key (kbd \"C-+\") 'org-refer-by-number)
+
+Do not forget to restart emacs to make these lines effective.
+
+
+After this two-step setup you may invoke `org-refer-by-number' to
+create a new reference number; read there for instructions on
+normal usage.
+
+")
+
+(defvar org-refer-by-number-windowconfig nil 
+  "Saved window-configuration for `org-refer-by-number'.
+This variable is only used internally.")
+
+(defvar org-refer-by-number-marker nil 
+  "Saved marker for `org-refer-by-number'.
+This variable is only used internally.")
+
+(defvar org-refer-by-number-last-action nil 
+  "Last action performed by `org-refer-by-number'.
+This variable is only used internally.")
+
+(defvar org-refer-by-number-occur-buffer nil
+  "Buffer (if any) with result from occur or multi-occur.
+This variable is only used internally.")
+
+(defun org-refer-by-number (arg) 
+  "Add a new reference number or search for an existing one.
+
+These reference numbers may then be used to refer to things
+outside of Org in cases, where direct linking is not
+possible. E.g. you may write them on documents or letters you
+receive or use them on your computer as part of foldernames that
+you create.
+
+Read below for a detailed description of this function. See the
+documentation of `org-refer-by-number-id' for the necessary
+setup.
+
+
+The function `org-refer-by-number' operates on a dedicated
+table (called the reference table) within a special Org-mode
+node. The node has to be created as part of your initial
+setup. The reference table has at least two columns: The
+reference number (automatically increasing by one from row to
+row) and the date of creation. The table is found through the id
+of the containing node; this id must be stored within
+`org-refer-by-number-id' (see there for details).
+
+
+The function `org-refer-by-number' is the only interactive
+function of this package and its sole entry point; it offers six
+different operations (short names in parens):
+
+- Add a new row with a new reference number and the
+  date of creation (\"add\"):
+
+- Search for an existing reference number within your reference
+  table (\"search\").
+
+- Find all occurences of a particular string within your
+  reference table; typically within the comment
+  column (\"occur\").
+
+- Find all occurences of a particular reference number within all
+  of your org-files (\"multi-occur\").
+
+- Enter the reference table and position the cursor at the
+  top (\"enter\").
+
+- Leave the reference table and restore cursor position and
+  window configuration, back to the state before entering
+  it (\"leave\").
+
+The most straightforward way to select between these operations
+is to supply a negative or a a double prefix argument:
+
+`C-- \\[org-refer-by-number]' or `\\[universal-argument] \\[universal-argument] \\[org-refer-by-number]'
+
+You will then be prompted to type a single letter (\"a\", \"s\", \"o\",
+\"m\", \"e\" or \"l\") to invoke the respective operation from the list
+above.
+
+
+Some of the operations above can be invoked with less keystrokes. In that
+case the precise operation invoked depends on two things:
+
+- The kind of a prefix argument (or absence of such)
+
+- The location of point; either outside the reference table or
+  within
+
+
+The following cases explain, which of the six
+operations (\"add\", \"search\", \"occur\", \"multi-occur\",
+\"enter\" and \"leave\") is actually invoked dependng on the
+conditions above:
+
+
+  If no prefix argument is given (`\\[org-refer-by-number]') and
+  point is withib the reference table, the operation \"leave\"
+  will be invoked. If point is within reference table, a
+  \"search\" will be done in most cases; if, however, there is an
+  active region, the operation \"add\" is performed.
+
+  If a numeric prefix argument is given (e.g. `153 \\[org-refer-by-number]'): 
+  The function does a \"search\" for this reference number, 
+  if point is outside and a \"multi-occur\", if point is within
+  regardless of position of point.
+
+  If a single prefix argument is given (e.g. `\\[universal-argument] \\[org-refer-by-number]')
+  and point outside the reference table: \"add\" a new reference. 
+  If point within: Do a \"multi-occur\" for the given reference.
+
+
+In any case the function `org-refer-by-number' will give a short
+message to explain, what operation has actually been invoked.
+
+
+Before you can successfully use `org-refer-by-number' finally,
+you need to read the documentation of `org-refer-by-number-id'
+and complete the necessary setup decribed there.
+
+
+"
+
+  (interactive "P")
+
+  (let (within-node        ; True, if we are within node with reference table
+                           ; (false otherwise, even if we are in the
+                           ; right buffer)
+        result-is-visible  ; True, if node or occur is visible in any window
+        search-from-prefix ; search string from prefix-argument
+        search-from-table  ; search string from first column of table
+        search-from-cursor ; search string from text below cursro
+        search-from-user   ; search string from user input
+        below-cursor       ; word below cursor
+        active-region      ; active region (if any)
+        search             ; final string to search for
+        what               ; What are we supposed to do ? Will be stored in
+                           ; org-refer-by-number-last-action
+        what-adjusted      ; True, if we had to adjust what
+        what-explicit      ; True, if what has been specified explicitly
+        parts              ; Parts of a typical reference number (which
+                           ; need not be a plain number); these are:
+        head               ; Any header before number (e.g. "R")
+        last-number        ; Last number used in reference table (e.g. "153")
+        tail               ; Tail after number (e.g. "}" or "")
+        columns            ; Number of columns in reference table
+        kill-new-text      ; Text that will be appended to kill ring
+        message-text       ; Text that will be issued as an explanation,
+                           ; what we have done
+        node-marker        ; Initial point within buffer with reference table
+        )
+        
+    ;; Find out, if we are within reference table or not
+    (setq within-node (string= (org-id-get) org-refer-by-number-id))
+    ;; Find out, if point in any window is within node with reference table
+    (mapc (lambda (x) (save-excursion 
+                        (set-buffer (window-buffer x))
+                        (when (or 
+                               (string= (org-id-get) org-refer-by-number-id)
+                               (eq (window-buffer x) 
+                                   org-refer-by-number-occur-buffer))
+                          (setq result-is-visible t))))
+          (window-list))
+
+    ;; Get the content of the active region or the word under cursor; do
+    ;; this before examinig reference table
+     (if (and transient-mark-mode
+              mark-active)
+        (setq active-region (buffer-substring (region-beginning) (region-end))))
+     (setq below-cursor (thing-at-point 'symbol))
+
+    ;; Find out, what we are supposed to do
+    (cond ((equal arg nil)
+           (setq what (if result-is-visible 'leave 
+                        (if active-region 'add 'search))))
+          ((equal arg '(4))
+           (setq what (if within-node 'multi-occur 'add)))
+          ((numberp arg)
+           (setq what (if within-node 'multi-occur 'search)))
+          (t ; C-- or C-u C-u
+           (let ((key (read-char-exclusive 
+                      "Please choose: e=enter l=leave s=search a=add o=occur m=multi-occur")))
+             (setq what (case key
+                          (?l 'leave) (?e 'enter) (?a 'add) 
+                          (?s 'search) (?o 'occur) (?m 'multi-occur)
+                           (otherwise (error "Invalid key '%c'" key)))))
+           (setq what-explicit t)))
+
+    ;; Get decoration and number of last row from reference table
+    (let ((m (org-id-find org-refer-by-number-id 'marker)))
+      (unless m
+        (org-refer-by-number-report-setup-error 
+         (format "Cannot find node with id \"%s\"" org-refer-by-number-id)))
+      (with-current-buffer (marker-buffer m)
+        (setq node-marker (point-marker))
+        (setq node-buffer (marker-buffer node-marker))
+        (goto-char m)
+        (setq parts (org-refer-by-number-trim-table nil t))
+        (goto-char node-marker))
+      (move-marker m nil)
+      (setq head (nth 0 parts))
+      (setq last-number (nth 1 parts))
+      (setq tail (nth 2 parts))
+      (setq columns (nth 3 parts)))
+    
+
+    ;; These actions need a search string:
+    (when (memq what '(search occur multi-occur))
+
+      ;; Search string can come from several sources:
+      ;; From explicit numerical prefix
+      (if (numberp arg) 
+          (setq search-from-prefix (format "%s%d%s" head arg tail)))
+      ;; From first column of table
+      (when within-node
+        (save-excursion (setq search-from-table (org-table-get-field 1)))
+        (if (string= search-from-table "") (setq search-from-table nil)))      
+      ;; From string below cursor
+      (when (and (not within-node)
+                 below-cursor
+                 (string-match (concat "\\(" (regexp-quote head) "[0-9]+" (regexp-quote tail) "\\)") 
+                               below-cursor))
+        (setq search-from-cursor (match-string 1 below-cursor)))
+      
+      ;; Depending on requested action, get search from one of the sources above
+      (cond ((eq what 'search)
+             (setq search (or search-from-prefix search-from-cursor)))
+            ((eq what 'multi-occur)
+             (setq search (or search-from-table search-from-cursor)))
+            ((eq what 'occur)
+             (setq search active-region)))
+
+
+      ;; If we still do not have a search string, ask user explicitly
+      (unless search
+        (setq search (read-from-minibuffer
+                      (cond ((memq what '(search multi-occur))
+                             "Reference number to search for: ")
+                            ((eq what 'occur)
+                             "Text to search for: "))))
+        (if (string-match "^\\s *[0-9]*\\s *$" search)
+            (unless (string= search "")
+              (setq search (format "%s%s%s" head (org-trim search) tail)))))
+      
+      ;; Clean up search string
+      (if (string= search "") (setq search nil))
+      (if search (setq search (org-trim search)))
+    
+      ;; Correct requested action, if nothing to search
+      (when (and (not search)
+               (memq what '(search occur multi-occur)))
+          (setq what 'enter)
+          (setq what-adjusted t))
+           
+      ;; Check for invalid combinations of arguments; try to be helpful
+      (if (string-match (concat (regexp-quote head) "[0-9]+" (regexp-quote tail) )
+                        search)
+          (if (eq what 'occur) 
+              (error "Can do 'occur' only for text, try 'search' or 'multi-occur' for a number"))
+        (if (memq what '(search multi-occur))
+            (error "Can do '%s' only for a number, try 'occur' to search for text" what))))
+    
+    ;; Move into table, if outside ...
+    (when (memq what '(enter add search occur multi-occur))
+      ;; Save current window configuration
+      (when (or (not result-is-visible)
+                (not org-refer-by-number-windowconfig))
+        (setq org-refer-by-number-windowconfig (current-window-configuration))
+        (setq org-refer-by-number-marker node-marker))
+      
+      ;; Switch to reference table; this needs to duplicate some code from
+      ;; org-id-goto, because point should be moved, if what equals 'enter
+      (let ((m (org-id-find org-refer-by-number-id 'marker)))
+        (org-pop-to-buffer-same-window (marker-buffer m))
+        ;; After changing buffer we might be in table or not, so check again
+        (setq within-node (string= (org-id-get) org-refer-by-number-id))
+        ;; Be careful with position within table, if we should just enter it
+        (unless within-node (goto-char m))
+        (move-marker m nil)
+        (show-subtree)
+        (org-show-context)))
+      
+    ;; Actually do, what is requested
+    (cond
+     ((eq what 'multi-occur) 
+      
+      ;; Position cursor on number to search for
+      (org-refer-by-number-trim-table t)
+      (let (found (initial (point)))
+        (forward-line)
+        (while (and (not found)
+                    (forward-line -1)
+                    (org-at-table-p))
+          (save-excursion 
+            (setq found (string= search 
+                                 (org-trim (org-table-get-field 1))))))
+        (if found 
+            (org-table-goto-column 1)
+          (goto-char initial)))
+
+      ;; Construct list of all org-buffers
+      (let (buff org-buffers)
+        (dolist (buff (buffer-list))
+          (set-buffer buff)
+          (if (string= major-mode "org-mode")
+              (setq org-buffers (cons buff org-buffers))))
+       
+        ;; Do multi-occur
+        (multi-occur org-buffers 
+                     (concat (regexp-quote search)
+                             ; if there is no tail in reference number, we
+                             ; have to guard agains trailing digits
+                             (if (string= tail "") "\\($\\|[^0-9]\\)" ""))) 
+        (if (get-buffer "*Occur*")
+            (progn 
+              (setq message-text (format "multi-occur for '%s'" search))
+              (setq org-refer-by-number-occur-buffer (get-buffer "*Occur*")))
+          (setq message-text (format "Did not find '%s'" search)))))
+
+     
+     ((eq what 'leave)
+
+      (when result-is-visible
+
+        ;; if we are within the occur-buffer, switch over to get current line
+        (if (and (string= (buffer-name) "*Occur*")
+                 (eq org-refer-by-number-last-action 'occur))
+            (occur-mode-goto-occurrence))
+        
+        (if (org-at-table-p)
+            (let ((column (org-table-current-column)))
+              ;; Copy different things depending on the last action
+              (if (and (eq org-refer-by-number-last-action 'search)
+                       (= column 1))
+                  ;; It does not help to copy the first field, because
+                  ;; thats what we just searched for, so take last one
+                  (setq column columns))
+              (if (or (memq org-refer-by-number-last-action '(add occur))
+                      (< column 1))
+                  (setq column 1))
+              
+              ;; Add to kill ring
+              (if (memq org-refer-by-number-last-action '(add enter search occur))
+                  ;; Got left to first nonempty column
+                  (while (progn 
+                           (save-excursion 
+                             (setq kill-new-text 
+                                   (org-trim (org-table-get-field column))))
+                           (and (> column 0)
+                                (string= kill-new-text "")))
+                    (setq column (- column 1))))))
+        
+        ;; Clean up table before leaving
+        (with-current-buffer node-buffer 
+          (org-refer-by-number-trim-table t)
+          (let ((buffer-modified (buffer-modified-p)))
+            (org-table-align)
+            (set-buffer-modified-p buffer-modified))))
+
+      ;; Restore position within buffer with reference table
+      (if org-refer-by-number-windowconfig 
+          (progn  
+            (with-current-buffer node-buffer
+              (goto-char org-refer-by-number-marker)
+              (set-marker org-refer-by-number-marker nil))
+            ;; Restore initial window configuration
+            (set-window-configuration org-refer-by-number-windowconfig)
+            (setq org-refer-by-number-windowconfig nil)
+            (recenter)
+            (setq message-text "Back"))
+        ;; We did not have a window-configuration to restore, so we cannot
+        ;; pretend we have retturned back
+        (setq message-text "Cannot leave; nowhere to go to")))
+
+        
+     ((eq what 'search)
+      ;; Go upward in table within first column
+      (org-refer-by-number-trim-table t)
+      (let (found (initial (point)))
+        (forward-line)
+        (while (and (not found)
+                    (forward-line -1)
+                    (org-at-table-p))
+          (save-excursion 
+            (setq found 
+                  (string= search 
+                           (org-trim (org-table-get-field 1))))))
+        (if found
+            (progn
+              (setq message-text (format "Found '%s'" search))
+              (org-table-goto-column 1)
+              (if (looking-back " ") (backward-char)))
+          (setq message-text (format "Did not find '%s'" search))
+          (goto-char initial)
+          (forward-line)
+          (setq what 'missed))))
+
+
+     ((eq what 'occur)
+      ;; search for string: occur
+      (org-narrow-to-subtree)
+      (occur search)
+      (widen)
+      (if (get-buffer "*Occur*")
+          (progn
+            (put 'org-refer-by-number 'occur-buffer (current-buffer))
+            (other-window 1)
+            (toggle-truncate-lines 1)
+            (forward-line 1)
+            (occur-mode-display-occurrence)
+            (setq message-text
+                  (format  "Occur for '%s'" search)))
+        (setq message-text
+              (format "Did not find any matches for '%s'" search))))
+
+        
+     ((eq what 'add)
+      ;; Nothing to search for, add a new row
+      (org-refer-by-number-trim-table t)
+      (let ((new (format "%s%d%s" head (1+ last-number) tail)))
+        (org-table-insert-row 1)
+        (insert new)
+        (org-table-goto-column 2)
+        (org-insert-time-stamp nil nil t)
+        (org-table-goto-column 3)
+        (org-table-align)
+        (if active-region (setq kill-new-text active-region))
+        (setq message-text (format "Adding a new row '%s'" new))))
+     
+     
+     ((eq what 'enter)
+      ;; Already there, not much to do left
+      (show-subtree)
+      (recenter)
+      (if what-adjusted
+          (setq message-text "Nothing to search for; at reference table")
+        (setq message-text "At reference table")))
+     
+
+     (t (error "This is a bug: Unmatched condition '%s'" what)))
+
+    
+    ;; Remember what we have done for next time
+    (setq org-refer-by-number-last-action what)
+    
+    ;; Tell, what we have done and what can be yanked
+    (if kill-new-text (setq kill-new-text 
+                            (substring-no-properties kill-new-text)))
+    (if (string= kill-new-text "") (setq kill-new-text nil))
+    (let ((m (concat 
+              message-text
+              (if (and message-text kill-new-text) 
+                  " and r" 
+                (if kill-new-text "R" ""))
+              (if kill-new-text (format "eady to yank '%s'" kill-new-text) "")
+              )))
+      (unless (string= m "") (message m)))
+    (if kill-new-text (kill-new kill-new-text))))
+
+
+(defun org-refer-by-number-trim-table (&optional goto-end get-parts)
+  "Trim reference table, only used internally"
+  
+  (let ((initial (point-marker))
+        field
+        parts
+        columns)
+
+    ;; Go to heading of node
+    (while (not (org-at-heading-p)) (forward-line -1))
+    (forward-line 1)
+    ;; Go to table within node, but make sure we do not get into another node
+    (while (and (not (org-at-heading-p))
+                (not (org-at-table-p))
+                (not (eq (point) (point-max)))) 
+      (forward-line 1))
+    ;; Check, if there really is a table
+    (unless (org-at-table-p)
+      (org-refer-by-number-report-setup-error 
+       "Cannot find reference table within reference node" t))
+
+    ;; Go beyond end of table
+    (while (org-at-table-p) (forward-line 1))
+
+    ;; Kill all empty rows at bottom
+    (while (progn
+             (forward-line -1)
+             (org-table-goto-column 1)
+             (string= "" (org-trim (org-table-get-field 1)))
+             )
+      (org-table-kill-row)
+      )
+
+    (when get-parts
+
+      ;; Find out number of columns
+      (org-table-goto-column 100)
+      (setq columns (- (org-table-current-column) 1))
+
+      ;; Check for right number of columns
+      (unless (>= columns 2)
+        (org-refer-by-number-report-setup-error 
+         "Table within reference node has less than two columns" t)
+        )
+
+      ;; Retrieve any decorations around the number within first field of
+      ;; the last row
+      (setq field (org-trim (org-table-get-field 1)))
+      (or (string-match "^\\([^0-9]*\\)\\([0-9]+\\)\\([^0-9]*\\)$" field)
+          (org-refer-by-number-report-setup-error 
+           (format "Last field of reference table '%s' does not contain a number" field) t)
+          )
+
+      ;; These are the decorations used within the last row of the
+      ;; reference table
+      (setq parts (list (match-string 1 field) 
+                        (string-to-number (match-string 2 field)) 
+                        (match-string 3 field) 
+                        columns)))
+
+    (unless goto-end (goto-char (marker-position initial)))
+    (set-marker initial nil)
+    
+    parts))
+
+
+(defun org-refer-by-number-report-setup-error (text &optional switch-to-node)
+  "Report error, which might be related with incomplete setup; offer help"
+
+  (when switch-to-node 
+    (org-id-goto org-refer-by-number-id)
+    (delete-other-windows)
+    )
+  
+  (if (y-or-n-p (concat text 
+                        "; "
+                        "the correct setup is explained in the documentation of 'org-refer-by-number-id'. " 
+                        "Do you want to read it ? "))
+      (describe-variable 'org-refer-by-number-id)
+    )
+  (error "")
+  (setq org-refer-by-number-windowconfig nil)
+  (setq org-refer-by-number-last-action 'leave))
+
+
+(provide 'org-refer-by-number)
+
+;; Local Variables:
+;; fill-column: 75
+;; comment-column: 50
+;; End:
+
+;;; org-refer-by-number.el ends here
+

+ 15 - 15
dev/index.org

@@ -16,8 +16,7 @@ tutorials on how to extend Org.
 
 * Git workflow
 
-As of March 20th (see [[http://article.gmane.org/gmane.emacs.orgmode/53608/match%3Dnew%2Bgit%2Bworkflow][this email]]), Org development uses a three-branches
-git workflow.
+Org development uses a two-branches git workflow.
 
 - master :: This branch contains latest development for Org.  Temporary
             feature branch (either local or remote) should branch out from
@@ -25,24 +24,21 @@ git workflow.
             there is a major release.
 
 - maint :: This branch is the "production" branch for Org.  It contains
-           only releases.  No branch should branch out from it, and it is
-           *never* merged into another branch.  The Org version on this
-           branch is the one regularily sync'ed with Emacs repository.
-
-- hotfix-7.8.06 :: This branch is the hotfix branch for the latest release.
-
-** Future changes
-
-In the near future, the =maint= branch will probably be renamed =release=
-and the =hotfix-7.8.06= will probably be renamed =hotfix=.  The role of the
-branches won't change.
+           stable releases and bug fixes against them.  This branch is
+           merged into master when bug are fixed there first.  The Org
+           version on this branch is the one regularily sync'ed with Emacs
+           repository.
 
 ** Git repositories
 
-The git repository for Org is on =orgmode.org=: 
+The git repository for Org is on =orgmode.org=:
 
 - http://orgmode.org/w/org-mode.git
 
+If you are a developer, you can clone this branch like this:
+
+: ~$ git clone orgsync@orgmode.org:org-sync.git
+
 This repository is cloned on =repo.or.cz=:
 
 - http://repo.or.cz/w/org-mode.git
@@ -57,5 +53,9 @@ You can display a graphic representation of the branches here:
 
 * Reference documentation
 
-- [[file:org-export-reference.org][reference documentation]] for the new export engine (=org-export.el=)
+- [[file:org-export-reference.org][Reference documentation]] for the new export engine (=org-export.el=)
   written by Nicolas Goaziou.
+
+- [[../org-api/index.org][Org-mode API]] with signatures and docstrings for all public functions of
+  all Org-mode libraries.
+  

+ 543 - 113
dev/org-export-reference.org

@@ -12,12 +12,80 @@
 [[file:../index.org][{Back to Worg's index}]]
 
 This document is aimed at back-end developers for the generic export
-engine =org-export.el=.  It assumes a good understanding of Org syntax
-— as specified by /Org Elements/ — from the reader.
+engine =org-export.el=. It assumes a good understanding of Org
+syntax --- as specified by /Org Elements/ --- from the reader.
 
-It covers [[#attributes][attributes]] associated to each element or object type,
-properties offered by the [[#communication][communication channel]] during export process
-and [[#toolbox][tools]] provided by the exporter.
+It covers [[#back-end][back-end creation]] process, all [[#attributes][attributes]] associated to each
+element or object type, properties offered by the [[#communication][communication
+channel]] during export, the [[#filter-system][filter system]] internals and [[#toolbox][tools]] provided
+by the exporter.
+
+
+* Defining a Back-End
+
+  A back-end is defined through one mandatory variable: his
+  translation table.  Its name is always ~org-BACKEND-translate-alist~
+  where ~BACKEND~ stands for the name chosen for the back-end.  Its
+  value is an alist whose keys are elements and objects types and
+  values translator functions.
+
+  These functions should return a string without any trailing space,
+  or nil.  They must accept three arguments: the object or element
+  itself, its contents or nil when it isn't recursive and the property
+  list used as a communication channel.
+
+  Contents, when not nil, are stripped from any global indentation
+  (although the relative one is preserved).  They also always end with
+  a single newline character.
+
+  If, for a given type, no function is found, that element or object
+  type will simply be ignored, along with any blank line or white
+  space at its end.  The same will happen if the function returns the
+  nil value.  If that function returns the empty string, the type will
+  be ignored, but the blank lines or white spaces will be kept.
+
+  In addition to element and object types, one function can be
+  associated to the ~template~ symbol and another one to the
+  ~plain-text~ symbol.
+
+  The former returns the final transcoded string, and can be used to
+  add a preamble and a postamble to document's body.  It must accept
+  two arguments: the transcoded string and the property list
+  containing export options.
+
+  The latter, when defined, is to be called on every text not
+  recognized as an element or an object.  It must accept two
+  arguments: the text string and the information channel.  It is an
+  appropriate place to protect special chars relative to the back-end.
+
+  Optionally, a back-end can support specific buffer keywords and
+  ~OPTION~ keyword's items by setting ~org-BACKEND-filters-alist~
+  variable.  Refer to ~org-export-options-alist~ documentation for
+  more information about its value.
+
+  For example, =e-latex= back-end introduces three new buffer
+  keywords, and redefine ~DATE~ default value with the following
+  snippet:
+
+  #+BEGIN_SRC emacs-lisp
+    (defconst org-e-latex-options-alist
+    '((:date "DATE" nil org-e-latex-date-format t)
+      (:latex-class "LATEX_CLASS" nil org-e-latex-default-class t)
+      (:latex-class-options "LATEX_CLASS_OPTIONS" nil nil t)
+      (:latex-header-extra "LATEX_HEADER" nil nil newline)))
+  #+END_SRC
+
+  If the new back-end shares most properties with another one,
+  ~org-export-define-derived-backend~ macro can be used to simplify
+  the process.  In the example below, we implement a new back-end
+  which behaves like =e-latex= excepted for headlines and the
+  template.
+
+  #+BEGIN_SRC emacs-lisp
+  (org-export-define-derived-backend my-latex e-latex
+  :translate-alist ((headline . custom-headline-translator)
+                    (template . custom-template)))
+  #+END_SRC
 
 * Elements Attributes
   :PROPERTIES:
@@ -44,6 +112,18 @@ and [[#toolbox][tools]] provided by the exporter.
                 by ~ob-babel-lob-get-info~ (string).
    - ~:post-blank~ :: Number of blank lines between keyword and next
                       non-blank line or buffer's end (integer).
+** Bold
+
+   Recursive object.
+
+   - ~:begin~ :: Buffer position before opening star (integer).
+   - ~:contents-begin~ :: Buffer position after opening star (integer).
+   - ~:contents-end~ :: Buffer position before closing star (integer).
+   - ~:end~ :: Buffer position before first non-blank character after
+               closing star or paragraph's end (integer).
+   - ~:post-blank~ :: Number of white spaces between closing star and
+                      next non-blank character or paragraph's end
+                      (integer).
 
 ** Center Block
 
@@ -65,6 +145,35 @@ and [[#toolbox][tools]] provided by the exporter.
                       line and next non-blank line or buffer's end
                       (integer).
 
+** Clock
+
+   Element.
+
+   - ~:status~ :: Status of current clock (symbol: ~closed~ or
+                  ~running~).
+   - ~:value~ :: Timestamp associated to clock keyword (string).
+   - ~:time~ :: Clock duration for a closed clock, or nil (string or
+                nil).
+   - ~:post-blank~ :: Number of blank lines between the line after the
+                      clock element and the first non-blank line or
+                      buffer's end (integer).
+   - ~:begin~ :: Buffer position at the beginning of the line
+                 (integer).
+   - ~:end~ :: Buffer position at the beginning of the next line
+               (integer).
+
+** Code
+
+   Object.
+
+   - ~:begin~ :: Buffer position before opening tilde (integer).
+   - ~:end~ :: Buffer position before first non-blank character after
+               closing tilde or paragraph's end (integer).
+   - ~:post-blank~ :: Number of white spaces between closing tilde and
+                      next non-blank character or paragraph's end
+                      (integer).
+   - ~:value~ :: Contents (string).
+
 ** Comment
 
    Element.
@@ -138,20 +247,6 @@ and [[#toolbox][tools]] provided by the exporter.
                       line and next non-blank line or buffer's end
                       (integer).
 
-** Emphasis
-
-   Recursive object.
-
-   - ~:begin~ :: Buffer position before opening marker (integer).
-   - ~:contents-begin~ :: Buffer position after opening marker (integer).
-   - ~:contents-end~ :: Buffer position before closing marker (integer).
-   - ~:end~ :: Buffer position before first non-blank character after
-               closing marker or paragraph's end (integer).
-   - ~:marker~ :: Marker used (string).
-   - ~:post-blank~ :: Number of white spaces between closing marker
-                      and next non-blank character or paragraph's end
-                      (integer).
-
 ** Entity
 
    Object.
@@ -341,7 +436,7 @@ and [[#toolbox][tools]] provided by the exporter.
    - ~:scheduled~ :: Headline's SCHEDULED reference, if any (string or
                      nil).
    - ~:tags~ :: Headline's tags, if any, without the archive
-                tag. (string or nil).
+                tag. (list of strings).
    - ~:timestamp~ :: Headline's TIMESTAMP reference, if any (string or
                      nil).
    - ~:title~ :: Parsed headline's text, without the stars and the
@@ -425,7 +520,7 @@ and [[#toolbox][tools]] provided by the exporter.
                      tags (string).
    - ~:scheduled~ :: Inlinetask's SCHEDULED reference, if any (string
                      or nil).
-   - ~:tags~ :: Inlinetask's tags, if any (string or nil).
+   - ~:tags~ :: Inlinetask's tags, if any (list of strings).
    - ~:timestamp~ :: Inlinetask's TIMESTAMP reference, if any (string
                      or nil).
    - ~:title~ :: Parsed inlinetask's text, without the stars and the
@@ -435,6 +530,20 @@ and [[#toolbox][tools]] provided by the exporter.
    - ~:todo-type~ :: Type of inlinetask's TODO keyword, if any
                      (symbol: ~done~, ~todo~).
 
+** Italic
+
+   Recursive object.
+
+   - ~:begin~ :: Buffer position before opening slash (integer).
+   - ~:contents-begin~ :: Buffer position after opening slash
+        (integer).
+   - ~:contents-end~ :: Buffer position before closing slash (integer).
+   - ~:end~ :: Buffer position before first non-blank character after
+               closing slash or paragraph's end (integer).
+   - ~:post-blank~ :: Number of white spaces between closing slash and
+                      next non-blank character or paragraph's end
+                      (integer).
+
 ** Item
 
    Greater element.
@@ -597,8 +706,6 @@ and [[#toolbox][tools]] provided by the exporter.
         sub-list (integer).
    - ~:end~ :: Buffer position at the first non-blank line after
                list's last item, or at buffer's end (integer).
-   - ~:level~ :: Level of current list within the full list hierarchy,
-                 starting from 0 (integer).
    - ~:post-blank~ :: Number of blank lines between end of list and
                       next element or end of buffer (integer).
    - ~:structure~ :: Full list's structure, as returned by
@@ -606,6 +713,24 @@ and [[#toolbox][tools]] provided by the exporter.
    - ~:type~ :: List's type (symbol: ~descriptive~, ~ordered~,
                 ~unordered~).
 
+** Planning
+
+   Element.
+
+   - ~:begin~ :: Buffer position at the beginning of the line
+                 (integer).
+   - ~:closed~ :: Timestamp associated to closed keyword, if any
+                  (string or nil).
+   - ~:deadline~ :: Timestamp associated to deadline keyword, if any
+                    (string or nil).
+   - ~:end~ :: Buffer position at the beginning of the line after
+               planning element (integer).
+   - ~:post-blank~ :: Number of blank lines between the line after the
+                      planning element and the next non-blank line or
+                      buffer's end (integer).
+   - ~:scheduled~ :: Timestamp associated to scheduled keyword, if any
+                     (string or nil).
+
 ** Property Drawer
 
    Element.
@@ -758,6 +883,20 @@ and [[#toolbox][tools]] provided by the exporter.
                       paragraph's end (integer).
    - ~:value~ :: Full cookie (string).
 
+** Strike Through
+
+   Recursive object.
+
+   - ~:begin~ :: Buffer position before opening plus sign (integer).
+   - ~:contents-begin~ :: Buffer position after opening plus sign
+        (integer).
+   - ~:contents-end~ :: Buffer position before closing plus sign
+        (integer).
+   - ~:end~ :: Buffer position before first non-blank character after
+               closing plus sign or paragraph's end (integer).
+   - ~:post-blank~ :: Number of white spaces between closing plus sign
+                      and next non-blank character or paragraph's end
+                      (integer).
 ** Subscript
 
    Recursive object.
@@ -798,20 +937,52 @@ and [[#toolbox][tools]] provided by the exporter.
 
 ** Table
 
-   Element.
+   Greater element.
 
    - ~:begin~ :: Buffer position at beginning of first affiliated
                  keyword, if any, at beginning of table's first line
                  otherwise (integer).
    - ~:end~ :: Buffer position at beginning of first non-blank line
-               after table's last line or at buffer's end.
+               after table's last line or at buffer's end (integer).
+   - ~:contents-begin~ :: For an ~org~ table, buffer position at
+        beginning of the first table's line, ignoring affiliated
+        keywords, nil otherwise (integer or nil).
+   - ~:contents-end~ :: For an ~org~ table, buffer position at
+        beginning of the first line after table's last line or at
+        buffer's end, nil otherwise (integer or nil).
    - ~:post-blank~ :: Number of blank lines between table's last line
                       and next non-blank line or buffer's end.
-   - ~:raw-table~ :: Table as it appears in original Org buffer
-                     (string).
    - ~:tblfm~ :: Formulas associated to the table, if any (string or
                  nil).
    - ~:type~ :: Table's origin (symbol: ~table.el~, ~org~).
+   - ~:value~ :: Raw ~table.el~ table or nil (string or nil).
+
+** Table Cell
+
+   Recursive object.
+
+   - ~:begin~ :: Buffer position after the opening vertical bar
+                 (integer).
+   - ~:end~ :: Buffer position after the closing vertical bar
+               (integer).
+   - ~:contents-begin~ :: Buffer position at the first non-whitespace
+        character after the vertical bar (integer).
+   - ~:contents-end~ :: Buffer position after the closest
+        non-whitespace character before the next vertical bar
+        (integer).
+
+** Table Row
+
+   Element.
+
+   - ~:begin~ :: Buffer position at beginning of the line (integer).
+   - ~:end~ :: Buffer position at beginning of the first line after
+               the row, or at buffer's end (integer).
+   - ~:contents-begin~ :: Buffer position after the first vertical
+        line (integer or nil).
+   - ~:contents-end~ :: Buffer position after the last vertical line
+        (integer).
+   - ~:type~ :: Row's type (symbol: ~standard~, ~rule~).
 
 ** Target
 
@@ -833,35 +1004,45 @@ and [[#toolbox][tools]] provided by the exporter.
    - Target should become an anchor, if back-end permits it.
    - Target's ID shouldn't be visible on export.
 
-** Time Stamp
+** Timestamp
 
    Object.
 
-   - ~:appt-type~ :: Time-stamp keyword's type, if any (symbol:
-                     ~closed~, ~deadline~, ~scheduled~, nil).
-   - ~:begin~ :: Buffer position at beginning of time-stamp's keyword,
-                 if any, or at opening /less-than/ sign (integer).
+   - ~:begin~ :: Buffer position at opening /less-than/ sign
+                 (integer).
    - ~:end~ :: Buffer position at first non-blank character after
                closing /greater-than/ sign, or at paragraph's end
                (integer).
    - ~:post-blank~ :: Number of white spaces between closing
                       /greater-than/ sign and next non-blank character
                       or paragraph's end (integer).
-   - ~:type~ :: Type of time-stamp (symbol: ~active~, ~active-range~,
+   - ~:type~ :: Type of timestamp (symbol: ~active~, ~active-range~,
                 ~diary~, ~inactive~, ~inactive-range~).
-   - ~:value~ :: Full time-stamp, with any keyword stripped (string).
+   - ~:value~ :: Full time-stamp (string).
+
+** Underline
+
+   Recursive object.
 
+   - ~:begin~ :: Buffer position before opening underscore (integer).
+   - ~:contents-begin~ :: Buffer position after opening underscore (integer).
+   - ~:contents-end~ :: Buffer position before closing underscore
+        (integer).
+   - ~:end~ :: Buffer position before first non-blank character after
+               closing underscore or paragraph's end (integer).
+   - ~:post-blank~ :: Number of white spaces between closing
+                      underscore and next non-blank character or
+                      paragraph's end (integer).
 ** Verbatim
 
    Object.
 
-   - ~:begin~ :: Buffer position before opening marker (integer).
+   - ~:begin~ :: Buffer position before opening equal sign (integer).
    - ~:end~ :: Buffer position before first non-blank character after
-               closing marker or paragraph's end (integer).
-   - ~:marker~ :: Marker used (string).
-   - ~:post-blank~ :: Number of white spaces between closing marker
-                      and next non-blank character or paragraph's end
-                      (integer).
+               closing equal sign or paragraph's end (integer).
+   - ~:post-blank~ :: Number of white spaces between closing equal
+                      sign and next non-blank character or paragraph's
+                      end (integer).
    - ~:value~ :: Contents (string).
 
 ** Verse Block
@@ -874,13 +1055,14 @@ and [[#toolbox][tools]] provided by the exporter.
    - ~:end~ :: Buffer position at beginning of the first non-blank
                line after block's closing line or at buffer's end
                (integer).
-   - ~:hiddenp~ :: Non-nil if block is hidden (symbol:
-                   ~org-hide-block~, nil).
+   - ~:contents-begin~ :: Buffer position at beginning of the first
+        line after block's opening string (integer).
+   - ~:contents-end~ :: Buffer position at the beginning of block's
+        closing line (integer).
+   - ~:hiddenp~ :: Non-nil if block is hidden (boolean).
    - ~:post-blank~ :: Number of blank lines between block's closing
                       line and next non-blank line or buffer's end
                       (integer).
-   - ~:raw-value~ :: Raw contents (string).
-   - ~:value~ :: Parsed contents (secondary string).
 
 * The Communication Channel
   :PROPERTIES:
@@ -1090,9 +1272,16 @@ and [[#toolbox][tools]] provided by the exporter.
    - category :: option
    - type :: symbol (nil, t)
 
+** ~:with-clocks~
+
+   Non-nil means clock keywords should be exported.
+
+   - category :: option
+   - type :: symbol (nil, t)
+
 ** ~:with-creator~
 
-   Non-nild means a creation sentence should be inserted at the end of
+   Non-nil means a creation sentence should be inserted at the end of
    the transcoded string.  If the value is ~comment~, it should be
    commented.
 
@@ -1136,6 +1325,13 @@ and [[#toolbox][tools]] provided by the exporter.
    - category :: option
    - type :: symbol (nil, t)
 
+** ~:with-plannings~
+
+   Non-nil means transcoding should include planning info.
+
+   - category :: option
+   - type :: symbol (nil, t)
+
 ** ~:with-priority~
 
    Non-nil means transcoding should include priority cookies.
@@ -1189,11 +1385,12 @@ and [[#toolbox][tools]] provided by the exporter.
 
 ** ~:with-timestamps~
 
-   Non-nil means transcoding should include time stamps and associated
-   keywords.  Otherwise, completely remove them.
+   Non-nil means transcoding should include time stamps.  Special
+   value ~active~ (resp. ~inactive~) ask to export only active
+   (resp. inactive) timestamps.  Otherwise, completely remove them.
 
    - category :: option
-   - type :: symbol: (t, nil)
+   - type :: symbol: (~active~, ~inactive~, t, nil)
 
 ** ~:with-toc~
 
@@ -1229,12 +1426,14 @@ and [[#toolbox][tools]] provided by the exporter.
   a list of functions as value:
 
   - ~:filter-babel-call~
+  - ~:filter-bold~
   - ~:filter-center-block~
+  - ~:filter-clock~
+  - ~:filter-code~
   - ~:filter-comment~
   - ~:filter-comment-block~
   - ~:filter-drawer~
   - ~:filter-dynamic-block~
-  - ~:filter-emphasis~
   - ~:filter-entity~
   - ~:filter-example-block~
   - ~:filter-export-block~
@@ -1248,6 +1447,7 @@ and [[#toolbox][tools]] provided by the exporter.
   - ~:filter-inline-babel-call~
   - ~:filter-inline-src-block~
   - ~:filter-inlinetask~
+  - ~:filter-italic~
   - ~:filter-item~
   - ~:filter-keyword~
   - ~:filter-latex-environment~
@@ -1259,6 +1459,7 @@ and [[#toolbox][tools]] provided by the exporter.
   - ~:filter-parse-tree~
   - ~:filter-plain-list~
   - ~:filter-plain-text~
+  - ~:filter-planning~
   - ~:filter-property-drawer~
   - ~:filter-quote-block~
   - ~:filter-quote-section~
@@ -1266,12 +1467,16 @@ and [[#toolbox][tools]] provided by the exporter.
   - ~:filter-section~
   - ~:filter-special-block~
   - ~:filter-src-block~
+  - ~:filter-strike-through~
   - ~:filter-statistics-cookie~
   - ~:filter-subscript~
   - ~:filter-superscript~
   - ~:filter-table~
+  - ~:filter-table-cell~
+  - ~:filter-table-row~
   - ~:filter-target~
-  - ~:filter-time-stamp~
+  - ~:filter-timestamp~
+  - ~:filter-underline~
   - ~:filter-verbatim~
   - ~:filter-verse-block~
 
@@ -1310,15 +1515,6 @@ and [[#toolbox][tools]] provided by the exporter.
   communication channel.  As such, they should be preferred to
   straight access to communication channel, when possible.
 
-** ~org-export-clean-table~
-   :PROPERTIES:
-   :CUSTOM_ID: clean-table
-   :END:
-
-   Clean a raw table from any Org table-specific syntax.
-
-   See also: [[#table-format-info][~org-export-table-format-info~]].
-
 ** ~org-export-collect-figures~
    :PROPERTIES:
    :CUSTOM_ID: collect-figures
@@ -1404,17 +1600,20 @@ and [[#toolbox][tools]] provided by the exporter.
    See also: [[#get-relative-level][~org-export-get-relative-level~]],
    [[#number-to-roman][~org-export-number-to-roman~]], [[#last-sibling-p][~org-export-last-sibling-p~]].
 
-** ~org-export-format-code~
+** ~org-export-footnote-first-reference-p~
    :PROPERTIES:
-   :CUSTOM_ID: format-code
+   :CUSTOM_ID: footnote-first-reference-p
    :END:
 
-   Helper function to format source code.  It applies a given function
-   on each line of the code, passing current line number and
-   associated code reference label, if any, as arguments.
+   Non-nil when a footnote reference if the first reference relative
+   to its definition.
 
-   See also: [[#format-code-default][~org-export-format-code-default~]], [[#get-loc][~org-export-get-loc~]],
-   [[#unravel-code][~org-export-unravel-code~]].
+   Used when a back-end needs to attach the footnote definition only
+   to the first occurrence of the corresponding label.
+
+   See also: [[#collect-footnote-definitions][~org-export-collect-footnote-definitions~]],
+   [[#get-footnote-definition][~org-export-get-footnote-definition~]],
+   [[#get-footnote-number][~org-export-get-footnote-number~]].
 
 ** ~org-export-format-code-default~
    :PROPERTIES:
@@ -1429,20 +1628,17 @@ and [[#toolbox][tools]] provided by the exporter.
 
    See also: [[#format-code][~org-export-format-code~]], [[#unravel-code][~org-export-unravel-code~]].
 
-** ~org-export-footnote-first-reference-p~
+** ~org-export-format-code~
    :PROPERTIES:
-   :CUSTOM_ID: footnote-first-reference-p
+   :CUSTOM_ID: format-code
    :END:
 
-   Non-nil when a footnote reference if the first reference relative
-   to its definition.
-
-   Used when a back-end needs to attach the footnote definition only
-   to the first occurrence of the corresponding label.
+   Helper function to format source code.  It applies a given function
+   on each line of the code, passing current line number and
+   associated code reference label, if any, as arguments.
 
-   See also: [[#collect-footnote-definitions][~org-export-collect-footnote-definitions~]],
-   [[#get-footnote-definition][~org-export-get-footnote-definition~]],
-   [[#get-footnote-number][~org-export-get-footnote-number~]].
+   See also: [[#format-code-default][~org-export-format-code-default~]], [[#get-loc][~org-export-get-loc~]],
+   [[#unravel-code][~org-export-unravel-code~]].
 
 ** ~org-export-get-coderef-format~
    :PROPERTIES:
@@ -1566,19 +1762,6 @@ and [[#toolbox][tools]] provided by the exporter.
 
    See also : [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]]
 
-** ~org-export-get-parent~
-   :PROPERTIES:
-   :CUSTOM_ID: get-parent
-   :END:
-
-   Return closest element containing current element or object, if
-   any.  Return nil otherwise.
-
-   See also: [[#get-genealogy][~org-export-get-genealogy~]],
-   [[#get-next-element][~org-export-get-next-element~]], [[#get-parent-paragraph][~org-export-get-parent-paragraph~]],
-   [[#get-parent-headline][~org-export-get-parent-headline~]],
-   [[#get-previous-element][~org-export-get-previous-element~]].
-
 ** ~org-export-get-parent-headline~
    :PROPERTIES:
    :CUSTOM_ID: get-parent-headline
@@ -1604,6 +1787,19 @@ and [[#toolbox][tools]] provided by the exporter.
    [[#get-parent-headline][~org-export-get-parent-headline~]],
    [[#get-previous-element][~org-export-get-previous-element~]], [[#get-next-element][~org-export-get-next-element~]].
 
+** ~org-export-get-parent~
+   :PROPERTIES:
+   :CUSTOM_ID: get-parent
+   :END:
+
+   Return closest element containing current element or object, if
+   any.  Return nil otherwise.
+
+   See also: [[#get-genealogy][~org-export-get-genealogy~]],
+   [[#get-next-element][~org-export-get-next-element~]], [[#get-parent-paragraph][~org-export-get-parent-paragraph~]],
+   [[#get-parent-headline][~org-export-get-parent-headline~]],
+   [[#get-previous-element][~org-export-get-previous-element~]].
+
 ** ~org-export-get-previous-element~
    :PROPERTIES:
    :CUSTOM_ID: get-previous-element
@@ -1630,6 +1826,18 @@ and [[#toolbox][tools]] provided by the exporter.
     [[#get-headline-number][~org-export-get-headline-number~]],[[#headline-numbered-p][~org-export-headline-numbered-p~]],
     [[#last-sibling-p][~org-export-last-sibling-p~]].
 
+** ~org-export-get-table-cell-at~
+   :PROPERTIES:
+   :CUSTOM_ID: get-table-cell-at
+   :END:
+
+   Return exportable cell object at a given position, or nil.  Hence,
+   position ~(0 . 0)~ will always point to the first exportable cell
+   in the table.
+
+   See also: [[#table-cell-address][~org-export-table-cell-address~]],
+   [[#table-dimensions][~org-export-table-dimensions~]].
+
 ** ~org-export-headline-numbered-p~
    :PROPERTIES:
    :CUSTOM_ID: headline-numbered-p
@@ -1685,7 +1893,8 @@ and [[#toolbox][tools]] provided by the exporter.
    number, or reference itself, depending on container's switches.
 
    See also : [[#get-coderef-format][~org-export-get-coderef-format~]],
-   [[#resolve-id-link][~org-export-resolve-id-link~]], [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]].
+   [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]], [[#resolve-id-link][~org-export-resolve-id-link~]],
+   [[#resolve-radio-link][~org-export-resolve-radio-link~]].
 
 ** ~org-export-resolve-fuzzy-link~
    :PROPERTIES:
@@ -1697,35 +1906,52 @@ and [[#toolbox][tools]] provided by the exporter.
    object, or nil.
 
    See also: [[#get-ordinal][~org-export-get-ordinal~]], [[#resolve-coderef][~org-export-resolve-coderef~]],
-   [[#resolve-id-link][~org-export-resolve-id-link~]], [[#solidify-link-text][~org-export-solidify-link-text~]].
+   [[#resolve-id-link][~org-export-resolve-id-link~]], [[#resolve-radio-link][~org-export-resolve-radio-link~]],
+   [[#solidify-link-text][~org-export-solidify-link-text~]].
 
 ** ~org-export-resolve-id-link~
    :PROPERTIES:
    :CUSTOM_ID: resolve-id-link
    :END:
 
-   Search headline targetted by an id link  i.e. it has a ~id~ or
-   ~custom-id~ ~:type~ attribute – within the parse tree.  Return that
-   headline, or nil.
+   Search headline targetted by an id link --- i.e. it has a ~id~ or
+   ~custom-id~ ~:type~ attribute --- within the parse tree.  Return
+   that headline, or nil.
 
    See also : [[#resolve-coderef][~org-export-resolve-coderef~]],
-   [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]], [[#solidify-link-text][~org-export-solidify-link-text~]].
+   [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]], [[#resolve-radio-link][~org-export-resolve-radio-link~]],
+   [[#solidify-link-text][~org-export-solidify-link-text~]].
 
-** ~org-export-unravel-code~
+** ~org-export-resolve-radio-link~
    :PROPERTIES:
-   :CUSTOM_ID: unravel-code
+   :CUSTOM_ID: resolve-radio-link
    :END:
 
-   Clean source code from an =example-block= or a =src-block= element
-   and extract code references out of it.
-
-   Its purpose is to allow to transform raw source code first and then
-   integrate line numbers or references back into the final output.
-   That final task can be achieved with the help of
-   ~org-export-format-code~ function.
+   Return first radio target object matching a radio link --- that is
+   with a ~radio~ ~:type~ attribute --- in the parse tree, or nil.
+
+   Typically, target's contents are exported through ~org-export-data~
+   and used as link description, as in the following excerpt from
+   =org-e-latex.el=:
+
+   #+BEGIN_SRC emacs-lisp
+   (defun org-e-latex-link (link desc info)
+     (let* ((type (org-element-property :type link))
+            ...)
+       (cond
+        ...
+        ((string= type "radio")
+         (let ((destination (org-export-resolve-radio-link link info)))
+           (when destination
+             (format "\\hyperref[%s]{%s}"
+                     (org-export-solidify-link-text path)
+                     (org-export-data (org-element-contents destination) info)))))
+        ...)))
+   #+END_SRC
 
-   See also: [[#format-code][~org-export-format-code~]],
-   [[#format-code-default][~org-export-format-code-default~]], [[#get-loc][~org-export-get-loc~]].
+   See also : [[#resolve-coderef][~org-export-resolve-coderef~]],
+   [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]], [[#resolve-id-link][~org-export-resolve-id-link~]],
+   [[#solidify-link-text][~org-export-solidify-link-text~]].
 
 ** ~org-export-solidify-link-text~
    :PROPERTIES:
@@ -1738,17 +1964,221 @@ and [[#toolbox][tools]] provided by the exporter.
    Used to turn targets names into safer versions for links.
 
    See also: [[#inline-image-p][~org-export-inline-image-p~]],
-   [[#resolve-id-link][~org-export-resolve-id-link~]], [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]].
+   [[#resolve-id-link][~org-export-resolve-id-link~]], [[#resolve-fuzzy-link][~org-export-resolve-fuzzy-link~]],
+   [[#resolve-radio-link][~org-export-resolve-radio-link~]].
+
+** ~org-export-table-cell-address~
+   :PROPERTIES:
+   :CUSTOM_ID: table-cell-address
+   :END:
+
+   Return row and column of a given cell object.  Positions are
+   0-indexed and only exportable rows and columns are considered.  The
+   function returns nil if called on a non-exportable cell.
+
+   See also: [[#get-table-cell-at][~org-export-get-table-cell-at~]],
+   [[#table-dimensions][~org-export-table-dimensions~]].
+
+** ~org-export-table-cell-alignment~
+   :PROPERTIES:
+   :CUSTOM_ID: table-cell-alignment
+   :END:
+
+   Return expected alignment for the contents of a given cell object.
+   It can be either ~left~, ~right~ or ~center~.
+
+   See also: [[#table-cell-borders][~org-export-table-cell-borders~]],
+   [[#table-cell-width][~org-export-table-cell-width~]].
+
+** ~org-export-table-cell-borders~
+   :PROPERTIES:
+   :CUSTOM_ID: table-cell-borders
+   :END:
+
+   Indicate expected borders for a given cell object.  When non-nil,
+   return value is a list of symbols among ~top~, ~bottom~, ~above~,
+   ~below~, ~left~ and ~right~.
+
+   Special values ~top~ and ~bottom~ only happen for cells in,
+   respectively, the first and the last exportable rows.
+
+   See also: [[#table-cell-alignment][~org-export-table-cell-alignment~]],
+   [[#table-cell-width][~org-export-table-cell-width~]].
 
-** ~org-export-table-format-info~
+** ~org-export-table-cell-ends~colgroup-p~
    :PROPERTIES:
-   :CUSTOM_ID: table-format-info
+   :CUSTOM_ID: table-cell-ends-colgroup-p
    :END:
 
-   Extract formatting information (alignment, column groups, presence
-   of a special column, explicit width of columns and row groups) from
-   a raw table and return it as a property list.
+   Non-nil when a table cell object ends a column group.
 
-   See also: [[#clean-table][~org-export-clean-table~]].
+   See also: [[#table-cell-starts-colgroup-p][~org-export-table-cell-starts-colgroup-p~]],
+   [[#table-cell-starts-ends-header-p][~org-export-table-row-ends-header-p~]],
+   [[#table-row-ends-rowgroup-p][~org-export-row-ends-rowgroup-p~]], [[#table-row-starts-header-p][~org-export-row-starts-header-p~]],
+   [[#table-row-starts-rowgroup-p][~org-export-row-starts-rowgroup-p~]].
 
+** ~org-export-table-cell-starts-colgroup-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-cell-starts-colgroup-p
+   :END:
+
+   Non-nil when a table cell object starts a column group.
+
+   See also: [[#table-cell-ends-colgroup-p][~org-export-table-cell-ends-colgroup-p~]],
+   [[#table-cell-starts-ends-header-p][~org-export-table-row-ends-header-p~]],
+   [[#table-row-ends-rowgroup-p][~org-export-row-ends-rowgroup-p~]], [[#table-row-starts-header-p][~org-export-row-starts-header-p~]],
+   [[#table-row-starts-rowgroup-p][~org-export-row-starts-rowgroup-p~]].
+
+** ~org-export-table-cell-width~
+   :PROPERTIES:
+   :CUSTOM_ID: table-cell-width
+   :END:
+
+   Return expected width for contents of a given cell object.
+
+   Only width specified explicitely through meta-data is considered.
+   If no such information can be found, return nil instead.
+
+   Some back-end may still need to know the actual width of exported
+   cell's contents in order to compute column's width.  In that case,
+   every cell in the column must be transcoded in order to find the
+   widest one.  The snippet below, extracted from =org-e-ascii.el=
+   illustrates a possible implementation.
+
+   #+BEGIN_SRC emacs-lisp
+   (or (org-export-table-cell-width table-cell info)
+       (let* ((max-width 0)
+              (table (org-export-get-parent-table table-cell info))
+              (specialp (org-export-table-has-special-column-p table))
+              (col (cdr (org-export-table-cell-address table-cell info))))
+         (org-element-map
+          table 'table-row
+          (lambda (row)
+            (setq max-width
+                  (max (length
+                        (org-export-data
+                         (org-element-contents
+                          (elt (if specialp (car (org-element-contents row))
+                                 (org-element-contents row))
+                               col))
+                         info))
+                       max-width)))
+          info)
+         max-width))
+   #+END_SRC
+
+   See also: [[#table-cell-alignment][~org-export-table-cell-alignment~]],
+   [[#table-cell-borders][~org-export-table-cell-borders~]].
+
+** ~org-export-table-dimensions~
+   :PROPERTIES:
+   :CUSTOM_ID: table-dimensions
+   :END:
+
+   Return the number of exportable rows and columns in a given table.
+
+   See also: [[#get-table-cell-at][~org-export-get-table-cell-at~]],
+   [[#table-cell-address][~org-export-table-cell-address~]].
+
+** ~org-export-table-has-header-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-has-header-p
+   :END:
+
+   Non-nil when table has at least two row groups.
+
+   See also: [[#table-has-special-column-p][~org-export-table-has-special-column-p~]],
+   [[#table-row-is-special-p][~org-export-table-row-is-special-p~]].
+
+** ~org-export-table-has-special-column-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-has-special-column-p
+   :END:
+
+   Non-nil when first column in the table only contains meta-data.
+
+   See also: [[#table-has-header-p][~org-export-table-has-header-p~]],
+   [[#table-row-is-special-p][~org-export-table-row-is-special-p~]].
+
+** ~org-export-table-row-ends-header-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-row-ends-header-p
+   :END:
+
+   Non-nil when a table row element ends table's header.
+
+   See also: [[#table-cell-ends-colgroup-p][~org-export-table-cell-ends-colgroup-p~]],
+   [[#table-cell-starts-colgroup-p][~org-export-table-cell-starts-colgroup-p~]],
+   [[#table-row-ends-rowgroup-p][~org-export-row-ends-rowgroup-p~]], [[#table-row-starts-header-p][~org-export-row-starts-header-p~]],
+   [[#table-row-starts-rowgroup-p][~org-export-row-starts-rowgroup-p~]].
+
+** ~org-export-table-row-ends-rowgroup-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-row-ends-rowgroup-p
+   :END:
+
+   Non-nil when a a table row element ends a rowgroup, header
+   included.
+
+   See also: [[#table-cell-ends-colgroup-p][~org-export-table-cell-ends-colgroup-p~]],
+   [[#table-cell-starts-colgroup-p][~org-export-table-cell-starts-colgroup-p~]],
+   [[#table-cell-starts-ends-header-p][~org-export-table-row-ends-header-p~]],
+   [[#table-row-starts-header-p][~org-export-row-starts-header-p~]],
+   [[#table-row-starts-rowgroup-p][~org-export-row-starts-rowgroup-p~]].
+
+** ~org-export-table-row-group~
+   :PROPERTIES:
+   :CUSTOM_ID: table-row-group
+   :END:
+** ~org-export-table-row-is-special-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-row-is-special-p
+   :END:
+
+   Non-nil a given table row element only contains meta-data.
+
+   See also: [[#table-has-header-p][~org-export-table-has-header-p~]],
+   [[#table-has-special-column-p][~org-export-table-has-special-column-p~]].
+
+** ~org-export-table-row-starts-header-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-row-starts-header-p
+   :END:
+
+   Non-nil when a table row element starts table's header.
+
+   See also: [[#table-cell-ends-colgroup-p][~org-export-table-cell-ends-colgroup-p~]],
+   [[#table-cell-starts-colgroup-p][~org-export-table-cell-starts-colgroup-p~]],
+   [[#table-cell-starts-ends-header-p][~org-export-table-row-ends-header-p~]],
+   [[#table-row-ends-rowgroup-p][~org-export-row-ends-rowgroup-p~]],
+   [[#table-row-starts-rowgroup-p][~org-export-row-starts-rowgroup-p~]].
+
+** ~org-export-table-row-starts-rowgroup-p~
+   :PROPERTIES:
+   :CUSTOM_ID: table-row-starts-rowgroup-p
+   :END:
+
+   Non-nil when a table row element starts a rowgroup, header
+   included.
+
+   See also: [[#table-cell-ends-colgroup-p][~org-export-table-cell-ends-colgroup-p~]],
+   [[#table-cell-starts-colgroup-p][~org-export-table-cell-starts-colgroup-p~]],
+   [[#table-cell-starts-ends-header-p][~org-export-table-row-ends-header-p~]],
+   [[#table-row-ends-rowgroup-p][~org-export-row-ends-rowgroup-p~]], [[#table-row-starts-header-p][~org-export-row-starts-header-p~]].
+
+** ~org-export-unravel-code~
+   :PROPERTIES:
+   :CUSTOM_ID: unravel-code
+   :END:
+
+   Clean source code from an =example-block= or a =src-block= element
+   and extract code references out of it.
+
+   Its purpose is to allow to transform raw source code first and then
+   integrate line numbers or references back into the final output.
+   That final task can be achieved with the help of
+   ~org-export-format-code~ function.
+
+   See also: [[#format-code][~org-export-format-code~]],
+   [[#format-code-default][~org-export-format-code-default~]], [[#get-loc][~org-export-get-loc~]].
 

images/gsoc/DSCI0279_60pc.png → images/gsoc/2012/beach-books-beer-60pc.png


images/gsoc/DSCI0279.png → images/gsoc/2012/beach-books-beer.png


BIN
images/gsoc/2012/bugpile/domain-class-uml.png


BIN
images/gsoc/2012/bugpile/edit-user-details-uml-roa.png


BIN
images/gsoc/2012/bugpile/edit-user-details-uml-soa.png


images/gsoc/iorg-arch.png → images/gsoc/2012/bugpile/iorg-arch.png


BIN
images/gsoc/2012/bugpile/login-uml-roa.png


BIN
images/gsoc/2012/bugpile/login-uml-soa.png


BIN
images/gsoc/2012/bugpile/logout-uml-roa.png


BIN
images/gsoc/2012/bugpile/logout-uml-soa.png


BIN
images/gsoc/2012/bugpile/register-as-user-uml-roa.png


BIN
images/gsoc/2012/bugpile/register-as-user-uml-soa.png


BIN
images/gsoc/2012/bugpile/search-users-uml-roa.png


BIN
images/gsoc/2012/bugpile/search-users-uml-soa.png


BIN
images/gsoc/2012/bugpile/take-action-select-users-uml-roa.png


BIN
images/gsoc/2012/bugpile/take-action-select-users-uml-soa.png


BIN
images/gsoc/2012/bugpile/user-management-uml-uc.png


+ 31 - 0
org-api/README

@@ -0,0 +1,31 @@
+-*- org -*-
+
+* NEXT How the files are created
+
+* Don't edit those files manually
+
+The files in org-api are generated automatically.  Modifying them 
+manually will probably create merge conflicts.
+
+* TODO List if possible enhancements
+
+- Add org-api/README where you describe the way the files are created and
+  where you tell people to not change those files manually.
+
+- Have a flat list of libraries in org-api/index.org, alphabetically sorted
+  but without the "* A" headlines -- it will be more compact.
+
+- In this list, use the first line of each library as a description of what
+  it is.
+
+- Clearly distinguish between core Org libraries and the ones from
+  =contrib/lisp/=
+
+- Tell whether a function is interative or not.
+
+- Create commands.org with the list of interactive functions.
+
+- Create options.org with the list of customizable variables (with their
+  Emacs version, if any.)
+
+- Move [[file:~/install/git/worg/org-configs/org-hooks.org][org-hooks.org]] hooks.org in =org-api/=.

+ 181 - 0
org-api/htmlize-api.org

@@ -0,0 +1,181 @@
+#+OPTIONS:    H:3 num:nil toc:2 \n:nil @:t ::t |:t ^:{} -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
+#+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate hideblocks
+#+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
+#+TAGS:       Write(w) Update(u) Fix(f) Check(c) noexport(n)
+#+TITLE:      Org API
+#+AUTHOR:     Thorsten Jolitz
+#+EMAIL:      tjolitz [at] gmail [dot] com
+#+LANGUAGE:   en
+#+STYLE:      <style type="text/css">#outline-container-introduction{ clear:both; }</style>
+#+LINK_UP:    index.html
+#+LINK_HOME:  http://orgmode.org/worg/
+#+EXPORT_EXCLUDE_TAGS: noexport
+
+* Htmlize API functions (htmlize.el)
+** htmlize-buffer =&optional buffer=
+
+Convert =buffer= to HTML, preserving colors and decorations.
+
+The generated HTML is available in a new buffer, which is returned.
+When invoked interactively, the new buffer is selected in the current
+window.  The title of the generated document will be set to the buffer's
+file name or, if that's not available, to the buffer's name.
+
+Note that htmlize doesn't fontify your buffers, it only uses the
+decorations that are already present.  If you don't set up font-lock or
+something else to fontify your buffers, the resulting HTML will be
+plain.  Likewise, if you don't like the choice of colors, fix the mode
+that created them, or simply alter the faces it uses.
+
+
+** htmlize-despam-address =string=
+
+Replace every occurrence of '@' in =string= with &#64;.
+/htmlize-make-hyperlinks/ uses this to spam-protect mailto links
+without modifying their meaning.
+
+
+** htmlize-face-list-p =face-prop=
+
+Return non-nil if =face-prop= is a list of faces, nil otherwise.
+
+
+** htmlize-face-to-fstruct =face=
+
+Convert Emacs face =face= to fstruct.
+
+
+** htmlize-faces-in-buffer  
+
+Return a list of faces used in the current buffer.
+Under XEmacs, this returns the set of faces specified by the extents
+with the /face/ property.  (This covers text properties as well.)  Under
+GNU Emacs, it returns the set of faces specified by the /face/ text
+property and by buffer overlays that specify /face/.
+
+
+** htmlize-file =file &optional target=
+
+Load =file=, fontify it, convert it to HTML, and save the result.
+
+Contents of =file= are inserted into a temporary buffer, whose major mode
+is set with /normal-mode/ as appropriate for the file type.  The buffer
+is subsequently fontified with /font-lock/ and converted to HTML.  Note
+that, unlike /htmlize-buffer/, this function explicitly turns on
+font-lock.  If a form of highlighting other than font-lock is desired,
+please use /htmlize-buffer/ directly on buffers so highlighted.
+
+Buffers currently visiting =file= are unaffected by this function.  The
+function does not change current buffer or move the point.
+
+If =target= is specified and names a directory, the resulting file will be
+saved there instead of to =file='s directory.  If =target= is specified and
+does not name a directory, it will be used as output file name.
+
+
+** htmlize-get-color-rgb-hash =&optional rgb-file=
+
+Return a hash table mapping X color names to RGB values.
+The keys in the hash table are X11 color names, and the values are the
+#rrggbb RGB specifications, extracted from /rgb.txt/.
+
+If =rgb-file= is nil, the function will try hard to find a suitable file
+in the system directories.
+
+If no rgb.txt file is found, return nil.
+
+
+** htmlize-locate-file =filename path &optional suffixes predicate=
+
+Search for =filename= through =path=.
+If found, return the absolute file name of =filename=, with its suffixes;
+otherwise return nil.
+=path= should be a list of directories to look in, like the lists in
+/exec-path/ or /load-path/.
+If =suffixes= is non-nil, it should be a list of suffixes to append to
+file name when searching.  If =suffixes= is nil, it is equivalent to '("").
+Use '("/") to disable =path= search, but still try the suffixes in =suffixes=.
+If non-nil, =predicate= is used instead of /file-readable-p/.
+
+This function will normally skip directories, so if you want it to find
+directories, make sure the =predicate= function returns /dir-ok/ for them.
+
+=predicate= can also be an integer to pass to the /access/ system call,
+in which case file-name handlers are ignored.  This usage is deprecated.
+For compatibility, =predicate= can also be one of the symbols
+/executable/, /readable/, /writable/, or /exists/, or a list of
+one or more of those symbols.
+
+
+** htmlize-make-file-name =file=
+
+Make an HTML file name from =file=.
+
+In its default implementation, this simply appends /.html/ to =file=.
+This function is called by htmlize to create the buffer file name, and
+by /htmlize-file/ to create the target file name.
+
+More elaborate transformations are conceivable, such as changing =file='s
+extension to /.html/ ("file.c" -> "file.html").  If you want them,
+overload this function to do it and htmlize will comply.
+
+
+** htmlize-make-hyperlinks  
+
+Make hyperlinks in HTML.
+
+
+** htmlize-many-files =files &optional target-directory=
+
+Convert =files= to HTML and save the corresponding HTML versions.
+
+=files= should be a list of file names to convert.  This function calls
+/htmlize-file/ on each file; see that function for details.  When
+invoked interactively, you are prompted for a list of files to convert,
+terminated with RET.
+
+If =target-directory= is specified, the HTML files will be saved to that
+directory.  Normally, each HTML file is saved to the directory of the
+corresponding source file.
+
+
+** htmlize-many-files-dired =arg &optional target-directory=
+
+HTMLize dired-marked files.
+
+
+** htmlize-memoize =key generator=
+
+Return the value of =generator=, memoized as =key=.
+That means that =generator= will be evaluated and returned the first time
+it's called with the same value of =key=.  All other times, the cached
+(memoized) value will be returned.
+
+
+** htmlize-protect-string =string=
+
+HTML-protect string, escaping HTML metacharacters and I18N chars.
+
+
+** htmlize-region =beg end=
+
+Convert the region to HTML, preserving colors and decorations.
+See /htmlize-buffer/ for details.
+
+
+** htmlize-region-for-paste =beg end=
+
+Htmlize the region and return just the HTML as a string.
+This forces the /inline-css/ style and only returns the HTML body,
+but without the BODY tag.  This should make it useful for inserting
+the text to another HTML buffer.
+
+
+** htmlize-unstringify-face =face=
+
+If =face= is a string, return it interned, otherwise return it unchanged.
+
+
+** htmlize-untabify =text start-column=
+
+Untabify =text=, assuming it starts at =start-column=.

+ 235 - 0
org-api/index.org

@@ -0,0 +1,235 @@
+#+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
+#+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate
+#+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
+#+TAGS:       Write(w) Update(u) Fix(f) Check(c) NEW(n)
+#+TITLE:      Org API
+#+AUTHOR:     Thorsten Jolitz
+#+EMAIL:      tjolitz AT gmail DOT com
+#+LANGUAGE:   en
+#+PRIORITIES: A C B
+#+CATEGORY:   worg
+
+# This file is the default header for new Org files in Worg.  Feel free
+# to tailor it to your needs.
+
+[[file:../index.org][{Back to Worg's index}]]
+
+#+index: API
+
+/Signatures and documentation-strings of public functions/
+/in the Org-mode libraries/
+
+* The Org-mode API
+** A
+*** Agenda
+- [[file:org-agenda-api.org][org-agenda]]
+*** Annotate-File
+- [[file:org-annotate-file-api.org][org-annotate-file]]
+*** Archive
+- [[file:org-archive-api.org][org-archive]]
+*** Ascii
+- [[file:org-ascii-api.org][org-ascii]]
+*** Attach
+- [[file:org-attach-api.org][org-attach]]
+** B
+*** Babel
+- [[file:org-babel-asymptote-api.org][org-babel-asymptote]]
+- [[file:org-babel-awk-api.org][org-babel-awk]]
+- [[file:org-babel-comint-api.org][org-babel-comint]]
+- [[file:org-babel-eval-api.org][org-babel-eval]]
+*** BBDB
+- [[file:org-bbdb-api.org][org-bbdb]]
+*** Beamer
+- [[file:org-beamer-api.org][org-beamer]]
+*** BibTex
+- [[file:org-bibtex-api.org][org-bibtex]]
+*** Bookmark
+- [[file:org-bookmark-api.org][org-bookmark]]
+** C
+*** Capture
+- [[file:org-capture-api.org][org-capture]]
+*** Choose
+- [[file:org-choose-api.org][org-choose]]
+*** Clock
+- [[file:org-clock-api.org][org-clock]]
+*** Colview
+- [[file:org-colview-api.org][org-colview]]
+*** Compat
+- [[file:org-compat-api.org][org-compat]]
+*** Contacts
+- [[file:org-contacts-api.org][org-contacts]]
+*** Crypt
+- [[file:org-crypt-api.org][org-crypt]]
+*** Ctags
+- [[file:org-ctags-api.org][org-ctags]]
+** D
+*** Datetree
+- [[file:org-datetree-api.org][org-datetree]]
+*** Depend
+- [[file:org-depend-api.org][org-depend]]
+*** Docbook
+- [[file:org-docbook-api.org][org-docbook]]
+*** Docview
+- [[file:org-docview-api.org][org-docview]]
+*** Drill
+- [[file:org-drill-api.org][org-drill]]
+** E
+*** Element
+- [[file:org-element-api.org][org-element]]
+*** Elisp-Symbol
+- [[file:org-elisp-symbol-api.org][org-elisp-symbol]]
+*** Entities
+- [[file:org-entities-api.org][org-entities]]
+*** Eshell
+- [[file:org-eshell-api.org][org-eshell]]
+*** Eval
+- [[file:org-eval-api.org][org-eval]]
+- [[file:org-eval-light-api.org][org-eval-light]]
+*** Exp
+- [[file:org-exp-api.org][org-exp]]
+*** Expiry
+- [[file:org-expiry-api.org][org-expiry]]
+*** Export
+- [[file:org-e-ascii-api.org][org-e-ascii]]
+- [[file:org-e-html-api.org][org-e-html]]
+- [[file:org-e-latex-api.org][org-e-latex]]
+- [[file:org-e-odt-api.org][org-e-odt]]
+- [[file:org-e-publish-api.org][org-e-publish]]
+- [[file:org-export-api.org][org-export]]
+- [[file:org-export-generic-api.org][org-export-generic]]
+** F
+*** Feed
+- [[file:org-feed-api.org][org-feed]]
+*** Footnote
+- [[file:org-footnote-api.org][org-footnote]]
+*** Freeming
+- [[file:org-freeming-api.org][org-freeming]]
+** G
+*** Git-Link
+- [[file:org-git-link-api.org][org-git-link]]
+*** Gnus
+- [[file:org-gnus-api.org][org-gnus]]
+** H
+*** Habit
+- [[file:org-habit-api.org][org-habit]]
+*** Html
+- [[file:org-html-api.org][org-html]]
+*** Htmlize
+- [[file:htmlize-api.org][htmlize]]
+** I
+*** iCalendar
+- [[file:org-icalendar-api.org][org-icalendar]]
+*** ID
+- [[file:org-id-api.org][org-id]]
+*** Indent
+- [[file:org-indent-api.org][org-indent]]
+*** Info
+- [[file:org-info-api.org][org-info]]
+*** Inlinetask
+- [[file:org-inlinetask-api.org][org-inlinetask]]
+*** Install
+- [[file:org-install-api.org][org-install]]
+*** Invoice
+- [[file:org-invoice-api.org][org-invoice]]
+*** IRC
+- [[file:org-irc-api.org][org-irc]]
+** J
+** K
+** L
+*** Latex
+- [[file:org-latex-api.org][org-latex]]
+*** List
+- [[file:org-list-api.org][org-list]]
+*** LParse
+- [[file:org-lparse-api.org][org-lparse]]
+** M
+*** Mac
+- [[file:org-mac-ical-api.org][org-mac-ical]]
+- [[file:org-mac-message-api.org][org-mac-message]]
+*** Mairix
+- [[file:org-mairix-api.org][org-mairix]]
+*** Man
+- [[file:org-man-api.org][org-man]]
+*** Mew
+- [[file:org-mew-api.org][org-mew]]
+*** Mhe
+- [[file:org-mhe-api.org][org-mhe]]
+*** Mime
+- [[file:org-mime-api.org][org-mime]]
+*** Mks
+- [[file:org-mks-api.org][org-mks]]
+*** Mobile
+- [[file:org-mobile-api.org][org-mobile]]
+*** Mouse
+- [[file:org-mouse-api.org][org-mouse]]
+*** Mtags
+- [[file:org-mtags-api.org][org-mtags]]
+** N
+*** Notify
+- [[file:org-notify-api.org][org-notify]]
+*** Notmuch
+- [[file:org-notmuch-api.org][org-notmuch]]
+** O
+*** Odt
+- [[file:org-odt-api.org][org-odt]]
+*** Org
+- [[file:org-api.org][org]]
+*** Org2Rem
+- [[file:org2rem-api.org][org2rem]]
+** P
+*** Pcomplete
+- [[file:org-pcomplete-api.org][org-pcomplete]]
+*** Plot
+- [[file:org-plot-api.org][org-plot]]
+*** Protocol
+- [[file:org-protocol-api.org][org-protocol]]
+*** Publish
+- [[file:org-publish-api.org][org-publish]]
+** Q
+** R
+*** Registry
+- [[file:org-registry-api.org][org-registry]]
+*** Remember
+- [[file:org-remember-api.org][org-remember]]
+*** Rmail
+- [[file:org-rmail-api.org][org-rmail]]
+** S
+*** Screen
+- [[file:org-screen-api.org][org-screen]]
+*** Special-Blocks
+- [[file:org-special-blocks-api.org][org-special-blocks]]
+*** Src
+- [[file:org-src-api.org][org-src]]
+*** Static-Mathjax
+- [[file:org-static-mathjax-api.org][org-static-mathjax]]
+*** Sudoku
+- [[file:org-sudoku-api.org][org-sudoku]]
+** T
+*** Table
+- [[file:org-table-api.org][org-table]]
+*** Taskjuggler
+- [[file:org-taskjuggler-api.org][org-taskjuggler]]
+*** Timer
+- [[file:org-timer-api.org][org-timer]]
+*** Toc
+- [[file:org-toc-api.org][org-toc]]
+*** Track
+- [[file:org-track-api.org][org-track]]
+** U
+** V
+*** Velocity
+- [[file:org-velocity-api.org][org-velocity]]
+*** Version
+- [[file:org-version-api.org][org-version]]
+*** VM
+- [[file:org-vm-api.org][org-vm]]
+** W
+*** W3M
+- [[file:org-w3m-api.org][org-w3m]]
+*** Wikinodes
+- [[file:org-wikinodes-api.org][org-wikinodes]]
+*** WL
+- [[file:org-wl-api.org][org-wl]]
+** X
+** Y
+** Z

+ 792 - 0
org-api/org-agenda-api.org

@@ -0,0 +1,792 @@
+#+OPTIONS:    H:3 num:nil toc:2 \n:nil @:t ::t |:t ^:{} -:t f:t *:t TeX:t LaTeX:t skip:nil d:(HIDE) tags:not-in-toc
+#+STARTUP:    align fold nodlcheck hidestars oddeven lognotestate hideblocks
+#+SEQ_TODO:   TODO(t) INPROGRESS(i) WAITING(w@) | DONE(d) CANCELED(c@)
+#+TAGS:       Write(w) Update(u) Fix(f) Check(c) noexport(n)
+#+TITLE:      Org API
+#+AUTHOR:     Thorsten Jolitz
+#+EMAIL:      tjolitz [at] gmail [dot] com
+#+LANGUAGE:   en
+#+STYLE:      <style type="text/css">#outline-container-introduction{ clear:both; }</style>
+#+LINK_UP:    index.html
+#+LINK_HOME:  http://orgmode.org/worg/
+#+EXPORT_EXCLUDE_TAGS: noexport
+
+
+* Org-Agenda API Functions (org-agenda.el)
+** org-agenda =&optional arg keys restriction=
+
+Dispatch agenda commands to collect entries to the agenda buffer.
+Prompts for a command to execute.  Any prefix arg will be passed
+on to the selected command.  The default selections are:
+
+a     Call /org-agenda-list/ to display the agenda for current day or week.
+t     Call /org-todo-list/ to display the global todo list.
+T     Call /org-todo-list/ to display the global todo list, select only
+      entries with a specific TODO keyword (the user gets a prompt).
+m     Call /org-tags-view/ to display headlines with tags matching
+      a condition  (the user is prompted for the condition).
+M     Like /m/, but select only TODO entries, no ordinary headlines.
+L     Create a timeline for the current buffer.
+e     Export views to associated files.
+s     Search entries for keywords.
+/     Multi occur across all agenda files and also files listed
+      in /org-agenda-text-search-extra-files/.
+<     Restrict agenda commands to buffer, subtree, or region.
+      Press several times to get the desired effect.
+>     Remove a previous restriction.
+!     Configure what "stuck" means.
+C     Configure custom agenda commands.
+
+More commands can be added by configuring the variable
+/org-agenda-custom-commands/.  In particular, specific tags and TODO keyword
+searches can be pre-defined in this way.
+
+If the current buffer is in Org-mode and visiting a file, you can also
+first press /</ once to indicate that the agenda should be temporarily
+(until the next use of C-c a) restricted to the current file.
+Pressing /</ twice means to restrict to the current subtree or region
+(if active).
+
+
+** org-agenda-Quit =&optional arg=
+
+Exit agenda by removing the window or the buffer
+
+
+** org-agenda-action  
+
+Select entry for agenda action, or execute an agenda action.
+This command prompts for another letter.  Valid inputs are:
+
+m     Mark the entry at point for an agenda action
+s     Schedule the marked entry to the date at the cursor
+d     Set the deadline of the marked entry to the date at the cursor
+r     Call /org-remember/ with cursor date as the default date
+c     Call /org-capture/ with cursor date as the default date
+SPC   Show marked entry in other window
+TAB   Visit marked entry in other window
+
+The cursor may be at a date in the calendar, or in the Org agenda.
+
+
+** org-agenda-add-entry-text  
+
+Add entry text to agenda lines.
+This will add a maximum of /org-agenda-add-entry-text-maxlines/ lines of the
+entry text following headings shown in the agenda.
+Drawers will be excluded, also the line with scheduling/deadline info.
+
+
+** org-agenda-add-entry-to-org-agenda-diary-file =type text &optional d1 d2=
+
+Add a diary entry with =type= to /org-agenda-diary-file/.
+If =text= is not empty, it will become the headline of the new entry, and
+the resulting entry will not be shown.  When =text= is empty, switch to
+/org-agenda-diary-file/ and let the user finish the entry there.
+
+
+** org-agenda-add-note =&optional arg=
+
+Add a time-stamped note to the entry at point.
+
+
+** org-agenda-align-tags =&optional line=
+
+Align all tags in agenda items to /org-agenda-tags-column/.
+
+
+** org-agenda-append-agenda  
+
+Append another agenda view to the current one.
+This function allows interactive building of block agendas.
+Agenda views are separated by /org-agenda-block-separator/.
+
+
+** org-agenda-archive  
+
+Archive the entry or subtree belonging to the current agenda entry.
+
+
+** org-agenda-archive-default  
+
+Archive the entry or subtree belonging to the current agenda entry.
+
+
+** org-agenda-archive-default-with-confirmation  
+
+Archive the entry or subtree belonging to the current agenda entry.
+
+
+** org-agenda-archive-to-archive-sibling  
+
+Move the entry to the archive sibling.
+
+
+** org-agenda-archive-with =cmd &optional confirm=
+
+Move the entry to the archive sibling.
+
+
+** org-agenda-archives-mode =&optional with-files=
+
+Toggle inclusion of items in trees marked with :ARCHIVE:.
+When called with a prefix argument, include all archive files as well.
+
+
+** org-agenda-bulk-action =&optional arg=
+
+Execute an remote-editing action on all marked entries.
+The prefix arg is passed through to the command if possible.
+
+
+** org-agenda-bulk-mark =&optional arg=
+
+Mark the entry at point for future bulk action.
+
+
+** org-agenda-bulk-mark-all  
+
+Mark all entries for future agenda bulk action.
+
+
+** org-agenda-bulk-mark-regexp =regexp=
+
+Mark entries matching =regexp= for future agenda bulk action.
+
+
+** org-agenda-bulk-remove-overlays =&optional beg end=
+
+Remove the mark overlays between =beg= and =end= in the agenda buffer.
+=beg= and =end= default to the buffer limits.
+
+This only removes the overlays, it does not remove the markers
+from the list in /org-agenda-bulk-marked-entries/.
+
+
+** org-agenda-bulk-toggle  
+
+Toggle marking the entry at point for bulk action.
+
+
+** org-agenda-bulk-unmark =&optional arg=
+
+Unmark the entry at point for future bulk action.
+
+
+** org-agenda-bulk-unmark-all  
+
+Remove all marks in the agenda buffer.
+This will remove the markers and the overlays.
+
+
+** org-agenda-change-all-lines =newhead hdmarker &optional fixface just-this=
+
+Change all lines in the agenda buffer which match =hdmarker=.
+The new content of the line will be =newhead= (as modified by
+/org-agenda-format-item/).  =hdmarker= is checked with
+/equal/ against all /org-hd-marker/ text properties in the file.
+If =fixface= is non-nil, the face of each item is modified according to
+the new TODO state.
+If =just-this= is non-nil, change just the current line, not all.
+If FORCE-TAGS is non nil, the car of it returns the new tags.
+
+
+** org-agenda-change-time-span =span &optional n=
+
+Change the agenda view to =span=.
+=span= may be /day/, /week/, /month/, /year/.
+
+
+** org-agenda-check-clock-gap =t1 t2 ok-list=
+
+Check if gap =t1= -> =t2= contains one of the =ok-list= time-of-day values.
+
+
+** org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item =&optional end=
+
+Do we have a reason to ignore this TODO entry because it has a time stamp?
+
+
+** org-agenda-check-no-diary  
+
+Check if the entry is a diary link and abort if yes.
+
+
+** org-agenda-check-type =error &rest types=
+
+Check if agenda buffer is of allowed type.
+If =error= is non-nil, throw an error, otherwise just return nil.
+
+
+** org-agenda-cleanup-fancy-diary  
+
+Remove unwanted stuff in buffer created by /fancy-diary-display/.
+This gets rid of the date, the underline under the date, and
+the dummy entry installed by /org-mode/ to ensure non-empty diary for each
+date.  It also removes lines that contain only whitespace.
+
+
+** org-agenda-clock-cancel =&optional arg=
+
+Cancel the currently running clock.
+
+
+** org-agenda-clock-goto  
+
+Jump to the currently clocked in task within the agenda.
+If the currently clocked in task is not listed in the agenda
+buffer, display it in another window.
+
+
+** org-agenda-clock-in =&optional arg=
+
+Start the clock on the currently selected item.
+
+
+** org-agenda-clock-out  
+
+Stop the currently running clock.
+
+
+** org-agenda-clockreport-mode =&optional with-filter=
+
+Toggle clocktable mode in an agenda buffer.
+With prefix arg =with-filter=, make the clocktable respect the current
+agenda filter.
+
+
+** org-agenda-collect-markers  
+
+Collect the markers pointing to entries in the agenda buffer.
+
+
+** org-agenda-columns  
+
+Turn on or update column view in the agenda.
+
+
+** org-agenda-colview-compute =fmt=
+
+Compute the relevant columns in the contributing source buffers.
+
+
+** org-agenda-colview-summarize =cache=
+
+Summarize the summarizable columns in column view in the agenda.
+This will add overlays to the date lines, to show the summary for each day.
+
+
+** org-agenda-compare-effort =op value=
+
+Compare the effort of the current line with =value=, using =op=.
+If the line does not have an effort defined, return nil.
+
+
+** org-agenda-compute-starting-span =sd span &optional n=
+
+Compute starting date for agenda.
+=span= may be /day/, /week/, /month/, /year/.  The return value
+is a cons cell with the starting date and the number of days,
+so that the date =sd= will be in that range.
+
+
+** org-agenda-copy-local-variable =var=
+
+Get a variable from a referenced buffer and install it here.
+
+
+** org-agenda-cycle-show =&optional n=
+
+Show the current entry in another window, with default settings.
+Default settings are taken from /org-show-hierarchy-above/ and siblings.
+When use repeatedly in immediate succession, the remote entry will cycle
+through visibility
+
+children -> subtree -> folded
+
+When called with a numeric prefix arg, that arg will be passed through to
+/org-agenda-show-1/.  For the interpretation of that argument, see the
+docstring of /org-agenda-show-1/.
+
+
+** org-agenda-date-earlier =arg &optional what=
+
+Change the date of this item to =arg= day(s) earlier.
+
+
+** org-agenda-date-earlier-hours =arg=
+
+Change the time of this item, in hour steps.
+
+
+** org-agenda-date-earlier-minutes =arg=
+
+Change the time of this item, in units of /org-time-stamp-rounding-minutes/.
+
+
+** org-agenda-date-later =arg &optional what=
+
+Change the date of this item to =arg= day(s) later.
+
+
+** org-agenda-date-later-hours =arg=
+
+Change the time of this item, in hour steps.
+
+
+** org-agenda-date-later-minutes =arg=
+
+Change the time of this item, in units of /org-time-stamp-rounding-minutes/.
+
+
+** org-agenda-date-prompt =arg=
+
+Change the date of this item.  Date is prompted for, with default today.
+The prefix =arg= is passed to the /org-time-stamp/ command and can therefore
+be used to request time specification in the time stamp.
+
+
+** org-agenda-day-view =&optional day-of-year=
+
+Switch to daily view for agenda.
+With argument =day-of-year=, switch to that day of the year.
+
+
+** org-agenda-deadline =arg &optional time=
+
+Schedule the item at point.
+=arg= is passed through to /org-deadline/.
+
+
+** org-agenda-deadline-face =fraction=
+
+Return the face to displaying a deadline item.
+=fraction= is what fraction of the head-warning time has passed.
+
+
+** org-agenda-diary-entry  
+
+Make a diary entry, like the /i/ command from the calendar.
+All the standard commands work: block, weekly etc.
+When /org-agenda-diary-file/ points to a file,
+/org-agenda-diary-entry-in-org-file/ is called instead to create
+entries in that Org-mode file.
+
+
+** org-agenda-diary-entry-in-org-file  
+
+Make a diary entry in the file /org-agenda-diary-file/.
+
+
+** org-agenda-dim-blocked-tasks  
+
+Dim currently blocked TODO's in the agenda display.
+
+
+** org-agenda-do-action =form &optional current-buffer=
+
+Evaluate =form= at the entry pointed to by /org-agenda-action-marker/.
+
+
+** org-agenda-do-context-action  
+
+Show outline path and, maybe, follow mode window.
+
+
+** org-agenda-do-tree-to-indirect-buffer  
+
+Same as /org-agenda-tree-to-indirect-buffer/ without saving window.
+
+
+** org-agenda-earlier =arg=
+
+Go backward in time by the current span.
+With prefix =arg=, go backward that many times the current span.
+
+
+** org-agenda-entry-text-hide  
+
+Remove any shown entry context.
+
+
+** org-agenda-entry-text-mode =&optional arg=
+
+Toggle entry text mode in an agenda buffer.
+
+
+** org-agenda-entry-text-show  
+
+Add entry context for all agenda lines.
+
+
+** org-agenda-entry-text-show-here  
+
+Add some text from the entry as context to the current line.
+
+
+** org-agenda-execute =arg=
+
+Execute another agenda command, keeping same window.
+So this is just a shortcut for /C-c C-a/, available
+in the agenda.
+
+
+** org-agenda-execute-calendar-command =cmd=
+
+Execute a calendar command from the agenda, with the date associated to
+the cursor position.
+
+
+** org-agenda-exit  
+
+Exit agenda by removing the window or the buffer.
+Also kill all Org-mode buffers which have been loaded by /org-agenda/.
+Org-mode buffers visited directly by the user will not be touched.
+
+
+** org-agenda-file-p =&optional file=
+
+Return non-nil, if =file= is an agenda file.
+If =file= is omitted, use the file associated with the current
+buffer.
+
+
+** org-agenda-file-to-front =&optional to-end=
+
+Move/add the current file to the top of the agenda file list.
+If the file is not present in the list, it is added to the front.  If it is
+present, it is moved there.  With optional argument =to-end=, add/move to the
+end of the list.
+
+
+** org-agenda-files =&optional unrestricted archives=
+
+Get the list of agenda files.
+Optional =unrestricted= means return the full list even if a restriction
+is currently in place.
+When =archives= is t, include all archive files that are really being
+used by the agenda files.  If ARCHIVE is /ifmode/, do this only if
+/org-agenda-archives-mode/ is t.
+
+
+** org-agenda-filter-apply =filter type=
+
+Set =filter= as the new agenda filter and apply it.
+
+
+** org-agenda-filter-by-category =strip=
+
+Keep only those lines in the agenda buffer that have a specific category.
+The category is that of the current line.
+
+
+** org-agenda-filter-by-tag =strip &optional char narrow=
+
+Keep only those lines in the agenda buffer that have a specific tag.
+The tag is selected with its fast selection letter, as configured.
+With prefix argument =strip=, remove all lines that do have the tag.
+A lisp caller can specify =char=.  =narrow= means that the new tag should be
+used to narrow the search - the interactive user can also press /-/ or /+/
+to switch to narrowing.
+
+
+** org-agenda-filter-by-tag-refine =strip &optional char=
+
+Refine the current filter.  See /org-agenda-filter-by-tag/.
+
+
+** org-agenda-filter-by-top-category =strip=
+
+Keep only those lines in the agenda buffer that have a specific category.
+The category is that of the current line.
+
+
+** org-agenda-filter-effort-form =e=
+
+Return the form to compare the effort of the current line with what =e= says.
+=e= looks like "+<2:25".
+
+
+** org-agenda-filter-make-matcher  
+
+Create the form that tests a line for agenda filter.
+
+
+** org-agenda-filter-top-category-apply =category &optional negative=
+
+Set FILTER as the new agenda filter and apply it.
+
+
+** org-agenda-fix-displayed-tags =txt tags add-inherited hide-re=
+
+Remove tags string from =txt=, and add a modified list of tags.
+The modified list may contain inherited tags, and tags matched by
+/org-agenda-hide-tags-regexp/ will be removed.
+
+
+** org-agenda-follow-mode  
+
+Toggle follow mode in an agenda buffer.
+
+
+** org-agenda-fontify-priorities  
+
+Make highest priority lines bold, and lowest italic.
+
+
+** org-agenda-format-date-aligned =date=
+
+Format a date string for display in the daily/weekly agenda, or timeline.
+This function makes sure that dates are aligned for easy reading.
+
+
+** org-agenda-format-item =extra txt &optional category tags dotime remove-re habitp=
+
+Format =txt= to be inserted into the agenda buffer.
+In particular, it adds the prefix and corresponding text properties.  =extra=
+must be a string and replaces the /%s/ specifier in the prefix format.
+=category= (string, symbol or nil) may be used to overrule the default
+category taken from local variable or file name.  It will replace the /%c/
+specifier in the format.  =dotime=, when non-nil, indicates that a
+time-of-day should be extracted from =txt= for sorting of this entry, and for
+the /%t/ specifier in the format.  When =dotime= is a string, this string is
+searched for a time before =txt= is.  =tags= can be the tags of the headline.
+Any match of =remove-re= will be removed from =txt=.
+
+
+** org-agenda-get-blocks  
+
+Return the date-range information for agenda display.
+
+
+** org-agenda-get-category-icon =category=
+
+Return an image for =category= according to /org-agenda-category-icon-alist/.
+
+
+** org-agenda-get-day-entries =file date &rest args=
+
+Does the work for /org-diary/ and /org-agenda/.
+=file= is the path to a file to be checked for entries.  =date= is date like
+the one returned by /calendar-current-date/.  =args= are symbols indicating
+which kind of entries should be extracted.  For details about these, see
+the documentation of /org-diary/.
+
+
+** org-agenda-get-day-face =date=
+
+Return the face =date= should be displayed with.
+
+
+** org-agenda-get-deadlines  
+
+Return the deadline information for agenda display.
+
+
+** org-agenda-get-progress  
+
+Return the logged TODO entries for agenda display.
+
+
+** org-agenda-get-represented-tags  
+
+Get a list of all tags currently represented in the agenda.
+
+
+** org-agenda-get-restriction-and-command =prefix-descriptions=
+