Hi, I've been using these for a while but I recently wanted to add a function at the head of the ctrl-c-ctrl-c processing:
(defvar my-org-default-action nil "Default action for this document to run on `org-ctrl-c-ctrl-c'. \\<org-mode-map> This will run via `org-ctrl-c-ctrl-c-hook' and should return a non-nil result if it processed something. As such it can override default `org-mode' behaviour for \\[org-ctrl-c-ctrl-c]. If you want something to run at the end then you need to use `my-org-default-code-block'") (make-variable-buffer-local 'my-org-default-action) (defun my-org--do-action (func-or-string) "Evaluate a code block or call a function `FUNC-OR-STRING' from org-file." (let ((current-point (point))) (cond ((stringp func-or-string) (save-excursion (org-babel-goto-named-src-block func-or-string) (org-babel-when-in-src-block (org-babel-eval-wipe-error-buffer) (org-babel-execute-src-block current-prefix-arg nil '((:called-from . current-point)))))) ((functionp func-or-string) (funcall func-or-string)) (t (error "What to do with: %s" func-or-string))))) (defun my-org-run-default-action () "Execute default action for this org file." (interactive) (when my-org-default-action (my-org--do-action my-org-default-action))) (add-to-list 'org-ctrl-c-ctrl-c-hook 'my-org-run-default-action) However I've run into a small problem that when I execute the source block I end up with 't every time as we successfully executed the block even if it didn't end up doing anything at the time. Is there a better way to invoke source blocks from the current org-document than this? One where the eventual result can be returned into the calling lisp so org-ctrl-c-ctrl-c-hook can move on if we didn't do anything? -- Alex Bennée