diff --git a/lisp/ob-core.el b/lisp/ob-core.el index 860c077de..0e8c57fa1 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -99,9 +99,6 @@ (declare-function org-element-context "org-element" (&optional ELEMENT)) (declare-function org-every "org" (pred seq)) -(defalias 'org-babel-trim 'org-trim) -(defalias 'org-babel-chomp 'org-trim-trailing) - (defgroup org-babel nil "Code block evaluation and management in `org-mode' documents." :tag "Babel" @@ -2305,11 +2302,7 @@ file's directory then expand relative links." (define-obsolete-function-alias 'org-babel-examplize-region - 'org-babel-examplify-region "25.1") - -(defsubst org-trim-trailing (s) - "Strip trailing spaces and carriage returns from string S." - (replace-regexp-in-string "[ \f\t\n\r\v]+\\'" "" s)) + 'org-babel-examplify-region "24.5") (defun org-babel-examplify-region (beg end &optional results-switches) "Comment out region using the inline '==' or ': ' org example quote." @@ -2747,6 +2740,24 @@ If the table is trivial, then return it as a scalar." (match-string 1 cell)) cell) t)) +(defun org-babel-chomp (string &optional regexp) + "Strip trailing spaces and carriage returns from STRING. +Default regexp used is \"[ \f\t\n\r\v]\" but can be +overwritten by specifying a regexp as a second argument." + (let ((regexp (or regexp "[ \f\t\n\r\v]"))) + (while (and (> (length string) 0) + (string-match regexp (substring string -1))) + (setq string (substring string 0 -1))) + string)) + +(defun org-babel-trim (string &optional regexp) + "Strip leading and trailing spaces and carriage returns from STRING. +Like `org-babel-chomp' only it runs on both the front and back +of the string." + (org-babel-chomp (org-reverse-string + (org-babel-chomp (org-reverse-string string) regexp)) + regexp)) + (defun org-babel-tramp-handle-call-process-region (start end program &optional delete buffer display &rest args) "Use Tramp to handle `call-process-region'. diff --git a/lisp/org-bibtex.el b/lisp/org-bibtex.el index 82eecdb86..ba28fc875 100644 --- a/lisp/org-bibtex.el +++ b/lisp/org-bibtex.el @@ -120,6 +120,7 @@ (declare-function bibtex-generate-autokey "bibtex" ()) (declare-function bibtex-parse-entry "bibtex" (&optional content)) (declare-function bibtex-url "bibtex" (&optional pos no-browse)) +(declare-function org-babel-trim "ob" (string &optional regexp)) ;;; Bibtex data @@ -311,7 +312,7 @@ and `org-exclude-tags-from-inheritence'." (org-entry-get (point) (upcase property)) (org-entry-get (point) (concat org-bibtex-prefix (upcase property))))))) - (when it (org-trim it)))) + (when it (org-babel-trim it)))) (defun org-bibtex-put (property value) (let ((prop (upcase (if (keywordp property) diff --git a/lisp/org.el b/lisp/org.el index 0ce0823eb..f6a93d4d4 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -21578,11 +21578,11 @@ N may optionally be the number of spaces to remove." (or (buffer-base-buffer buffer) buffer))) -(defsubst org-trim (s) - "Remove whitespace at the beginning and the end of string S." - (replace-regexp-in-string - "\\`[ \f\t\n\r\v]+" "" - (replace-regexp-in-string "[ \f\t\n\r\v]+\\'" "" s))) +(defun org-trim (s) + "Remove whitespace at beginning and end of string." + (if (string-match "\\`[ \t\n\r]+" s) (setq s (replace-match "" t t s))) + (if (string-match "[ \t\n\r]+\\'" s) (setq s (replace-match "" t t s))) + s) (defun org-wrap (string &optional width lines) "Wrap string to either a number of lines, or a width in characters.