summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Schmidt <christopher@ch.ristopher.com>2013-02-26 17:51:03 +0100
committerChristopher Schmidt <christopher@ch.ristopher.com>2013-02-26 17:52:32 +0100
commitff92e688dd78c0a52c9fe353b427b6e7ad5a8c46 (patch)
tree0f94bb17a2f5b2d7e9e10669870adc0b7075ee16
parentf20ae92e88cc8b09957fe05a350abc6e9dbe6f37 (diff)
downloadorg-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.el65
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)