From: yamaoka Date: Tue, 9 Jun 1998 01:43:31 +0000 (+0000) Subject: emu.el (split-string) (with-temp-buffer) (with-current-buffer) (save-current-buffer... X-Git-Tag: apel-8_15~8 X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0b7d4df3415bcb377912a1490c392a20b4a7ab97;p=elisp%2Fapel.git emu.el (split-string) (with-temp-buffer) (with-current-buffer) (save-current-buffer): New function and macros for Emacs 19,18. --- diff --git a/ChangeLog b/ChangeLog index f64021b..0bee736 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,17 @@ +1998-06-09 Katsumi Yamaoka + + * emu.el (split-string): New function (Emacs 20/XEmacs 20 + emulating function). + + * emu.el (with-temp-buffer): New macro (Emacs 20/XEmacs 20 + emulating macro). + + * emu.el (with-current-buffer): New macro (Emacs 20/XEmacs 20 + emulating macro). + + * emu.el (save-current-buffer): New macro (Emacs 20/XEmacs 20 + emulating macro). + 1998-06-08 MORIOKA Tomohiko * mule-caesar.el (mule-caesar-region): Don't compare charset with diff --git a/emu.el b/emu.el index bf1df70..934abd6 100644 --- a/emu.el +++ b/emu.el @@ -333,6 +333,54 @@ This function does not move point. [XEmacs emulating function]" ) +;;; @ for Emacs 19,18 +;;; + +(defmacro-maybe save-current-buffer (&rest body) + "Save the current buffer; execute BODY; restore the current buffer. +Executes BODY just like `progn'." + (` (let ((orig-buffer (current-buffer))) + (unwind-protect + (progn (,@ body)) + (set-buffer orig-buffer))))) + +;; This macro was imported XEmacs 21. +(defmacro-maybe with-current-buffer (buffer &rest body) + "Execute the forms in BODY with BUFFER as the current buffer. +The value returned is the value of the last form in BODY. +See also `with-temp-buffer'." + (` (save-current-buffer + (set-buffer (, buffer)) + (,@ body)))) + +;; This macro was imported XEmacs 21. +(defmacro-maybe with-temp-buffer (&rest forms) + "Create a temporary buffer, and evaluate FORMS there like `progn'. +See also `with-temp-file' and `with-output-to-string'." + (let ((temp-buffer (make-symbol "temp-buffer"))) + (` (let (((, temp-buffer) + (get-buffer-create (generate-new-buffer-name " *temp*")))) + (unwind-protect + (with-current-buffer (, temp-buffer) + (,@ forms)) + (and (buffer-name (, temp-buffer)) + (kill-buffer (, temp-buffer)))))))) + +;; This function was imported from XEmacs 21. +(defun-maybe split-string (string &optional pattern) + "Return a list of substrings of STRING which are separated by PATTERN. +If PATTERN is omitted, it defaults to \"[ \\f\\t\\n\\r\\v]+\"." + (or pattern + (setq pattern "[ \f\t\n\r\v]+")) + ;; The FSF version of this function takes care not to cons in case + ;; of infloop. Maybe we should synch? + (let (parts (start 0)) + (while (string-match pattern string start) + (setq parts (cons (substring string start (match-beginning 0)) parts) + start (match-end 0))) + (nreverse (cons (substring string start) parts)))) + + ;;; @ for text/richtext and text/enriched ;;;