diff options
author | Christopher Schmidt <christopher@ch.ristopher.com> | 2013-02-26 17:51:03 +0100 |
---|---|---|
committer | Christopher Schmidt <christopher@ch.ristopher.com> | 2013-02-26 17:52:32 +0100 |
commit | ff92e688dd78c0a52c9fe353b427b6e7ad5a8c46 (patch) | |
tree | 0f94bb17a2f5b2d7e9e10669870adc0b7075ee16 | |
parent | f20ae92e88cc8b09957fe05a350abc6e9dbe6f37 (diff) | |
download | org-mode-ff92e688dd78c0a52c9fe353b427b6e7ad5a8c46.tar.gz |
org.el: Rebind structure-related variables within org-run-like-in-org-mode
* org.el (orgstruct-make-binding): Rebind structure-related
variables within org-run-like-in-org-mode.
-rw-r--r-- | lisp/org.el | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/lisp/org.el b/lisp/org.el index 80b577f..6b5c747 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -8761,36 +8761,41 @@ should be checked in for a command to execute outside of tables." (setq nname (format "%s-%d" name (setq i (1+ i))))) (setq name (intern nname))) (eval - `(defun ,name (arg) - ,(concat "In Structure, run `" (symbol-name fun) "'.\n" - "Outside of structure, run the binding of `" - (key-description key) "'.") - (interactive "p") - (unless - (let* ((org-heading-regexp - (concat "^" - orgstruct-heading-prefix-regexp - "\\(\\*+\\)\\(?: +\\(.*?\\)\\)?[ ]*$")) - (org-outline-regexp - (concat orgstruct-heading-prefix-regexp "\\*+ ")) - (org-outline-regexp-bol - (concat "^" org-outline-regexp)) - (outline-regexp org-outline-regexp) - (outline-heading-end-regexp "\n") - (outline-level 'outline-level) - (outline-heading-alist)) - (when (org-context-p 'headline 'item - ,(when (memq fun '(org-insert-heading)) - '(when orgstruct-is-++ - 'item-body))) - (org-run-like-in-org-mode ',fun) - t)) - (let* ((orgstruct-mode) - (binding (key-binding ,key))) - (if (keymapp binding) - (set-temporary-overlay-map binding) - (call-interactively - (or binding 'orgstruct-error))))))) + (let ((bindings '((org-heading-regexp + (concat "^" + orgstruct-heading-prefix-regexp + "\\(\\*+\\)\\(?: +\\(.*?\\)\\)?[ ]*$")) + (org-outline-regexp + (concat orgstruct-heading-prefix-regexp "\\*+ ")) + (org-outline-regexp-bol + (concat "^" org-outline-regexp)) + (outline-regexp org-outline-regexp) + (outline-heading-end-regexp "\n") + (outline-level 'outline-level) + (outline-heading-alist)))) + `(defun ,name (arg) + ,(concat "In Structure, run `" (symbol-name fun) "'.\n" + "Outside of structure, run the binding of `" + (key-description key) "'.") + (interactive "p") + (unless + (let* ,bindings + (when (org-context-p 'headline 'item + ,(when (memq fun '(org-insert-heading)) + '(when orgstruct-is-++ + 'item-body))) + (org-run-like-in-org-mode + (lambda () + (interactive) + (let* ,bindings + (call-interactively ',fun)))) + t)) + (let* ((orgstruct-mode) + (binding (key-binding ,key))) + (if (keymapp binding) + (set-temporary-overlay-map binding) + (call-interactively + (or binding 'orgstruct-error)))))))) name)) (defun org-contextualize-keys (alist contexts) |