diff options
author | Eric Schulte <schulte.eric@gmail.com> | 2011-04-19 17:47:41 -0600 |
---|---|---|
committer | Carsten Dominik <carsten.dominik@gmail.com> | 2011-04-21 16:49:41 +0200 |
commit | 6660a51e0729ac6568c6b4684f1768f6901576e6 (patch) | |
tree | 60b399c68ce4dabbc962d8edc523264bae4c6539 | |
parent | 9a863dda8454aae4b26a7f265ce13dbff294267d (diff) | |
download | org-mode-6660a51e0729ac6568c6b4684f1768f6901576e6.tar.gz |
Speed up promotion and demotion by turning off after-change-functions
* lisp/org.el (org-promote):
(org-demote): Turn off after-change-functions to speed up the
reindentation of text.
This is mainly toob-oz: brought up to date with the rest of Babel
-rw-r--r-- | contrib/babel/langs/ob-oz.el | 74 | ||||
-rw-r--r-- | lisp/org.el | 2 |
2 files changed, 33 insertions, 43 deletions
diff --git a/contrib/babel/langs/ob-oz.el b/contrib/babel/langs/ob-oz.el index e1e6e35..f92733e 100644 --- a/contrib/babel/langs/ob-oz.el +++ b/contrib/babel/langs/ob-oz.el @@ -5,7 +5,7 @@ ;; Author: Torsten Anders and Eric Schulte ;; Keywords: literate programming, reproducible research ;; Homepage: http://orgmode.org -;; Version: 0.01 +;; Version: 0.02 ;;; License: @@ -120,7 +120,7 @@ (defvar org-babel-oz-server-dir (file-name-as-directory (expand-file-name - "scripts" + "contrib/scripts" (file-name-as-directory (expand-file-name "../../.." @@ -196,53 +196,41 @@ StartOzServer.oz is located.") (setq org-babel-oz-collected-result nil)))) result)) -(defun org-babel-expand-body:oz (body params &optional processed-params) - (let ((vars (second (or processed-params (org-babel-process-params params)))))) - (if vars - ;; only add var declarations if any variables are there - (concat - ;; prepend code to define all arguments passed to the code block - "local\n" - (mapconcat - (lambda (pair) - (format "%s=%s" - (car pair) - (org-babel-oz-var-to-oz (cdr pair)))) - vars "\n") "\n" - "in\n" - body - "end\n") - body)) +(defun org-babel-expand-body:oz (body params) + (let ((vars (mapcar #'cdr (org-babel-get-header params :var)))) + (if vars + ;; prepend code to define all arguments passed to the code block + (let ((var-string (mapcar (lambda (pair) + (format "%s=%s" + (car pair) + (org-babel-oz-var-to-oz (cdr pair)))) + vars))) + ;; only add var declarations if any variables are there + (mapconcat #'identity + (append (list "local") var-string (list "in" body "end")) + "\n")) + body))) (defun org-babel-execute:oz (body params) "Execute a block of Oz code with org-babel. This function is called by `org-babel-execute-src-block' via multiple-value-bind." - (let* ((processed-params (org-babel-process-params params)) -;; (session (org-babel-ruby-initiate-session (first processed-params))) - (vars (second processed-params)) -;; (result-params (third processed-params)) - (result-type (fourth processed-params)) - (full-body (org-babel-expand-body:oz body params processed-params)) - (wait-time (plist-get params :wait-time)) - ;; set the session if the session variable is non-nil -;; (session-buffer (org-babel-oz-initiate-session session)) -;; (session (org-babel-prep-session:oz session params)) - ) + (let* ((result-params (cdr (assoc :result-params params))) + (full-body (org-babel-expand-body:oz body params)) + (wait-time (plist-get params :wait-time))) ;; actually execute the source-code block (org-babel-reassemble-table - (case result-type - (output - (progn - (message "Org-babel: executing Oz statement") - (oz-send-string full-body))) - (value - (progn - (message "Org-babel: executing Oz expression") - (oz-send-string-expression full-body (if wait-time - wait-time - 1))))) - (org-babel-pick-name (nth 4 processed-params) (cdr (assoc :colnames params))) - (org-babel-pick-name (nth 5 processed-params) (cdr (assoc :rownames params)))))) + (cond + ((member "output" result-params) + (message "Org-babel: executing Oz statement") + (oz-send-string full-body)) + ((member "value" result-params) + (message "Org-babel: executing Oz expression") + (oz-send-string-expression full-body (or wait-time 1))) + (t (error "either 'output' or 'results' must be members of :results."))) + (org-babel-pick-name (cdr (assoc :colname-names params)) + (cdr (assoc :colnames params))) + (org-babel-pick-name (cdr (assoc :roname-names params)) + (cdr (assoc :rownames params)))))) ;; This function should be used to assign any variables in params in ;; the context of the session environment. diff --git a/lisp/org.el b/lisp/org.el index 0e2114f..ca3744b 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -7145,6 +7145,7 @@ If the region is active in `transient-mark-mode', promote all headings in the region." (org-back-to-heading t) (let* ((level (save-match-data (funcall outline-level))) + (after-change-functions) (up-head (concat (make-string (org-get-valid-level level -1) ?*) " ")) (diff (abs (- level (length up-head) -1)))) (if (= level 1) (error "Cannot promote to level 0. UNDO to recover if necessary")) @@ -7160,6 +7161,7 @@ If the region is active in `transient-mark-mode', demote all headings in the region." (org-back-to-heading t) (let* ((level (save-match-data (funcall outline-level))) + (after-change-functions) (down-head (concat (make-string (org-get-valid-level level 1) ?*) " ")) (diff (abs (- level (length down-head) -1)))) (replace-match down-head nil t) |