diff lisp/vm/vm-misc.el @ 98:0d2f883870bc r20-1b1

Import from CVS: tag r20-1b1
author cvs
date Mon, 13 Aug 2007 09:13:56 +0200
parents c0c698873ce1
children 4be1180a9e89
line wrap: on
line diff
--- a/lisp/vm/vm-misc.el	Mon Aug 13 09:12:43 2007 +0200
+++ b/lisp/vm/vm-misc.el	Mon Aug 13 09:13:56 2007 +0200
@@ -1,5 +1,5 @@
 ;;; Miscellaneous functions for VM
-;;; Copyright (C) 1989, 1990, 1991, 1993, 1994 Kyle E. Jones
+;;; Copyright (C) 1989-1997 Kyle E. Jones
 ;;;
 ;;; This program is free software; you can redistribute it and/or modify
 ;;; it under the terms of the GNU General Public License as published by
@@ -131,6 +131,13 @@
 	   (vm-set-su-end-of (car mp) nil)
 	   (setq mp (cdr mp))))))
 
+(defun vm-check-for-killed-presentation ()
+  (and (bufferp vm-presentation-buffer-handle)
+       (null (buffer-name vm-presentation-buffer-handle))
+       (progn
+	 (setq vm-presentation-buffer-handle nil
+	       vm-presentation-buffer nil))))
+
 (defun vm-check-for-killed-folder ()
   (and (bufferp vm-mail-buffer) (null (buffer-name vm-mail-buffer))
        (setq vm-mail-buffer nil)))
@@ -237,6 +244,15 @@
 	(setq prev p p (cdr p))))
     list ))
 
+(defun vm-delete-directory-file-names (list)
+  (vm-delete 'file-directory-p list))
+
+(defun vm-delete-backup-file-names (list)
+  (vm-delete 'backup-file-name-p list))
+
+(defun vm-delete-auto-save-file-names (list)
+  (vm-delete 'auto-save-file-name-p list))
+
 (defun vm-delete-duplicates (list &optional all hack-addresses)
   "Delete duplicate equivalent strings from the list.
 If ALL is t, then if there is more than one occurrence of a string in the list,
@@ -317,12 +333,18 @@
 	   return-value ))
 	((vectorp object) (apply 'vector (mapcar 'vm-copy object)))
 	((stringp object) (copy-sequence object))
+	((markerp object) (copy-marker object))
 	(t object)))
 
 (defun vm-xemacs-p ()
   (let ((case-fold-search nil))
     (string-match "XEmacs" emacs-version)))
 
+(defun vm-xemacs-mule-p ()
+  (and (vm-xemacs-p)
+       (fboundp 'set-file-coding-system)
+       (fboundp 'decode-coding-region)))
+
 (defun vm-fsfemacs-19-p ()
   (and (string-match "^19" emacs-version)
        (not (string-match "XEmacs\\|Lucid" emacs-version))))
@@ -490,3 +512,100 @@
 
 (defun vm-buffer-string-no-properties ()
   (vm-buffer-substring-no-properties (point-min) (point-max)))
+
+(defun vm-insert-region-from-buffer (buffer &optional start end)
+  (let ((target-buffer (current-buffer)))
+    (set-buffer buffer)
+    (save-restriction
+      (widen)
+      (or start (setq start (point-min)))
+      (or end (setq end (point-max)))
+      (set-buffer target-buffer)
+      (insert-buffer-substring buffer start end)
+      (set-buffer buffer))
+    (set-buffer target-buffer)))
+
+(if (fboundp 'overlay-get)
+    (fset 'vm-extent-property 'overlay-get)
+  (fset 'vm-extent-property 'extent-property))
+
+(if (fboundp 'overlay-put)
+    (fset 'vm-set-extent-property 'overlay-put)
+  (fset 'vm-set-extent-property 'set-extent-property))
+
+(if (fboundp 'make-overlay)
+    (fset 'vm-make-extent 'make-overlay)
+  (fset 'vm-make-extent 'make-extent))
+
+(if (fboundp 'overlay-end)
+    (fset 'vm-extent-end-position 'overlay-end)
+  (fset 'vm-extent-end-position 'extent-end-position))
+
+(if (fboundp 'overlay-start)
+    (fset 'vm-extent-start-position 'overlay-start)
+  (fset 'vm-extent-start-position 'extent-start-position))
+
+(if (fboundp 'delete-overlay)
+    (fset 'vm-detach-extent 'delete-overlay)
+  (fset 'vm-detach-extent 'detach-extent))
+
+(if (fboundp 'overlay-properties)
+    (fset 'vm-extent-properties 'overlay-properties)
+  (fset 'vm-extent-properties 'extent-properties))
+
+(defun vm-copy-extent (e)
+  (let ((props (vm-extent-properties e))
+	(ee (vm-make-extent (vm-extent-start-position e)
+			    (vm-extent-end-position e))))
+    (while props
+      (vm-set-extent-property ee (car props) (car (cdr props)))
+      (setq props (cdr props)))))
+
+(defun vm-make-tempfile-name ()
+  (let ((done nil) (pid (emacs-pid)) filename)
+    (while (not done)
+      (setq filename (format "%s/vm%d.%d" vm-temp-file-directory pid
+			     vm-tempfile-counter)
+	    vm-tempfile-counter (1+ vm-tempfile-counter)
+	    done (not (file-exists-p filename))))
+    filename ))
+
+(defun vm-insert-char (char &optional count ignored buffer)
+  (condition-case nil
+      (progn
+	(insert-char char count ignored buffer)
+	(fset 'vm-insert-char 'insert-char))
+    (wrong-number-of-arguments
+     (fset 'vm-insert-char 'vm-xemacs-compatible-insert-char)
+     (vm-insert-char char count ignored buffer))))
+
+(defun vm-xemacs-compatible-insert-char (char &optional count ignored buffer)
+  (if (and buffer (eq buffer (current-buffer)))
+      (insert-char char count)
+    (save-excursion
+      (set-buffer buffer)
+      (insert-char char count))))
+
+(defun vm-symbol-lists-intersect-p (list1 list2)
+  (catch 'done
+    (while list1
+      (and (memq (car list1) list2)
+	   (throw 'done t))
+      (setq list1 (cdr list1)))
+    nil ))
+
+(defun vm-set-buffer-variable (buffer var value)
+  (save-excursion
+    (set-buffer buffer)
+    (set var value)))
+
+(defsubst vm-with-string-as-temp-buffer (string function)
+  (let ((work-buffer nil))
+    (unwind-protect
+	(save-excursion
+	  (setq work-buffer (generate-new-buffer " *work*"))
+	  (set-buffer work-buffer)
+	  (insert string)
+	  (funcall function)
+	  (buffer-string))
+      (and work-buffer (kill-buffer work-buffer)))))