summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <schulte.eric@gmail.com>2011-04-19 17:47:41 -0600
committerCarsten Dominik <carsten.dominik@gmail.com>2011-04-21 16:49:41 +0200
commit6660a51e0729ac6568c6b4684f1768f6901576e6 (patch)
tree60b399c68ce4dabbc962d8edc523264bae4c6539
parent9a863dda8454aae4b26a7f265ce13dbff294267d (diff)
downloadorg-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.el74
-rw-r--r--lisp/org.el2
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)