Browse Source

ob-eval: Do not use read-only mode, switch to compilation mode only once

* lisp/ob-eval.el (org-babel-eval): Switch to compilation mode only if
  the current mode is not already (a derived mode of)
  compilation-mode.  Remove the read-only state from the buffer
  directly without using `read-only-mode'.
Achim Gratz 10 years ago
parent
commit
ec8f245d27
1 changed files with 4 additions and 3 deletions
  1. 4 3
      lisp/ob-eval.el

+ 4 - 3
lisp/ob-eval.el

@@ -60,9 +60,10 @@ STDERR with `org-babel-eval-error-notify'."
 	    (save-excursion
 	      (when (get-buffer org-babel-error-buffer-name)
 		(with-current-buffer org-babel-error-buffer-name
-		  (compilation-mode)
-		  ;;compilation-mode enforces read-only
-		  (read-only-mode 0))))
+		  (unless (derived-mode-p 'compilation-mode)
+		    (compilation-mode))
+		  ;; Compilation-mode enforces read-only, but Babel expects the buffer modifiable.
+		  (setq buffer-read-only nil))))
 	    nil)
 	(buffer-string)))))