Next: Tables in arbitrary syntax, Previous: Adding export back-ends, Up: Hacking [Contents][Index]
Org has several commands that act differently depending on context. The most important example is the C-c C-c (see The very busy C-c C-c key). Also the M-cursor and M-S-cursor keys have this property.
Add-ons can tap into this functionality by providing a function that detects
special context for that add-on and executes functionality appropriate for
the context. Here is an example from Dan Davison’s org-R.el which
allows you to evaluate commands based on the R programming language
180. For this
package, special contexts are lines that start with #+R:
or
#+RR:
.
(defun org-R-apply-maybe () "Detect if this is context for org-R and execute R commands." (if (save-excursion (beginning-of-line 1) (looking-at "#\\+RR?:")) (progn (call-interactively 'org-R-apply) t) ;; to signal that we took action nil)) ;; to signal that we did not (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
The function first checks if the cursor is in such a line. If that is the
case, org-R-apply
is called and the function returns t
to
signal that action was taken, and C-c C-c will stop looking for other
contexts. If the function finds it should do nothing locally, it returns
nil
so that other, similar functions can have a try.
org-R.el has been replaced by the Org mode functionality described in Working With Source Code and is now obsolete.