unified stripping of protective commas -- idempotent org-edit-src-code

* lisp/ob.el (org-babel-strip-protective-commas): Use
  `org-strip-protective-commas'.
* lisp/org-exp.el (org-export-select-backend-specific-text): Use
  `org-strip-protective-commas'.
* lisp/org-src.el (org-edit-src-code): Use
  `org-strip-protective-commas'.
* lisp/org.el (org-strip-protective-commas): Single definition for
  this functionality.
This commit is contained in:
Eric Schulte 2012-02-18 10:35:33 -07:00
parent 40b3b323f8
commit 19f1bf6bce
4 changed files with 28 additions and 18 deletions

View File

@ -2236,8 +2236,10 @@ block but are passed literally to the \"example-block\"."
(defun org-babel-strip-protective-commas (body)
"Strip protective commas from bodies of source blocks."
(when body
(replace-regexp-in-string "^,#" "#" body)))
(with-temp-buffer
(insert body)
(org-strip-protective-commas (point-min) (point-max))
(buffer-string)))
(defun org-babel-script-escape (str &optional force)
"Safely convert tables into elisp lists."

View File

@ -1761,17 +1761,7 @@ from the buffer."
beg-content end-content
`(org-protected t original-indentation ,ind org-native-text t))
;; strip protective commas
(save-excursion
(save-match-data
(goto-char beg-content)
(let ((front-line (save-excursion
(re-search-forward
"[^[:space:]]" end-content t)
(goto-char (match-beginning 0))
(current-column))))
(while (re-search-forward "^[ \t]*\\(,\\)" end-content t)
(when (= (current-column) front-line)
(replace-match "" nil nil nil 1))))))
(org-strip-protective-commas beg-content end-content)
(delete-region (match-beginning 0) (match-end 0))
(save-excursion
(goto-char beg)

View File

@ -307,11 +307,13 @@ buffer."
(error "Language mode `%s' fails with: %S" lang-f (nth 1 e)))))
(dolist (pair transmitted-variables)
(org-set-local (car pair) (cadr pair)))
(when (eq major-mode 'org-mode)
(if (eq major-mode 'org-mode)
(progn
(goto-char (point-min))
(while (re-search-forward "^," nil t)
(if (eq (org-current-line) line) (setq total-nindent (1+ total-nindent)))
(replace-match "")))
(org-strip-protective-commas (point-min) (point-max)))
(when markline
(org-goto-line (1+ (- markline begline)))
(org-move-to-column

View File

@ -5460,6 +5460,22 @@ will be prompted for."
'(font-lock-fontified t face font-lock-comment-face)))
(t nil))))))
(defun org-strip-protective-commas (beg end)
"Strip protective commas between BEG and END in the current buffer."
(interactive "r")
(save-excursion
(save-match-data
(goto-char beg)
(let ((front-line (save-excursion
(re-search-forward
"[^[:space:]]" end t)
(goto-char (match-beginning 0))
(current-column))))
(while (re-search-forward "^[ \t]*\\(,\\)\\([*]\\|#\\+\\)" end t)
(goto-char (match-beginning 1))
(when (= (current-column) front-line)
(replace-match "" nil nil nil 1)))))))
(defun org-activate-angle-links (limit)
"Run through the buffer and add overlays to links."
(if (re-search-forward org-angle-link-re limit t)