branch: elpa/vm
commit 4de80ac0a1687f0db29a65a049f5bcd702a19109
Merge: 64bdc61319 7b794e294c
Author: Mark Diekhans <[email protected]>
Commit: Mark Diekhans <[email protected]>

    Merge branch 'main' into 'main'
    
    Fix byte-compile warnings in vm-imap, vm-pop, vm-postpone, vm-rfaddons, 
vm-vcard
    
    Closes #320, #472, and #517
    
    See merge request emacs-vm/vm!81
---
 Makefile.in            | 13 +++++++++----
 dev/docs/releasing.org |  4 ++++
 lisp/vm-avirtual.el    | 12 ++++++++++--
 lisp/vm-biff.el        |  4 ++++
 lisp/vm-build.el       |  8 +++++++-
 lisp/vm-crypto.el      |  2 +-
 lisp/vm-folder.el      | 25 +++++++++++++++++++++++--
 lisp/vm-imap.el        | 42 +++++++++++++-----------------------------
 lisp/vm-message.el     |  6 ++++--
 lisp/vm-mime.el        | 10 ++++++++++
 lisp/vm-misc.el        | 11 +++++++++++
 lisp/vm-pcrisis.el     | 10 +++++++++-
 lisp/vm-pop.el         | 16 +++++++++-------
 lisp/vm-postpone.el    |  4 ++--
 lisp/vm-reply.el       | 10 ++++++++++
 lisp/vm-rfaddons.el    |  4 ++--
 lisp/vm-save.el        |  4 ++--
 lisp/vm-serial.el      |  5 ++++-
 lisp/vm-summary.el     |  3 +++
 lisp/vm-vcard.el       |  7 +++++++
 20 files changed, 144 insertions(+), 56 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 9f83055499..8b3945ecd2 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -84,11 +84,17 @@ distclean:
 #
 PACKAGE_INIT = --eval "(progn (require 'package) (package-initialize))"
 
+# don't try to run in parallel as byte-compile-lint removes .elc files
+lint:
+       ${MAKE} byte-compile-lint
+       ${MAKE} native-compile-lint
+
 # byte compile check
+# Note: pgg is deprecated which also generated a warning, so can't generate 
errors
 byte-compile-lint:
        rm -f list/*.elc
        $(EMACS_PROG) -batch -Q -L lisp \
-           --eval '(setq byte-compile-error-on-warn t)' \
+           --eval '(setq byte-compile-error-on-warn nil)' \
            -f batch-byte-compile lisp/*.el
 
 # native compile check
@@ -103,9 +109,8 @@ native-compile-lint:
 
 # check with build-in elint
 elint-lint:
-       $(EMACS_PROG) -batch -Q -l `pwd`/lisp \
-           --eval '(mapc (lambda (f) (message "Checking %s" f) (elint-file f)) 
\
-                         (directory-files "lisp" t "\\.el$$"))'
+       $(EMACS_PROG) -batch -Q -L lisp \
+           --eval '(dolist (f (directory-files "lisp" t "\\.el$$")) (message 
"Checking %s" f) (elint-file f))'
 
 # check package file with external package-lint
 package-lint:
diff --git a/dev/docs/releasing.org b/dev/docs/releasing.org
index c8754cffce..1080c14944 100644
--- a/dev/docs/releasing.org
+++ b/dev/docs/releasing.org
@@ -17,6 +17,10 @@ Once release is made with a release version number (1.2.3)
 in vm.el, it will become available as a NonGNU ELPA
 package at https://elpa.nongnu.org/nongnu/vm.html
 
+* check for unexpected warnings
+- make -j 32  # needs generated files
+- make -j 32 lint
+
 * use package-lint to check vm.el packages
 requires package-lint
   make package-lint
diff --git a/lisp/vm-avirtual.el b/lisp/vm-avirtual.el
index 41b097be4c..377817868b 100644
--- a/lisp/vm-avirtual.el
+++ b/lisp/vm-avirtual.el
@@ -115,12 +115,20 @@
 ;; The following function is erroneously called for fsfemacs as well
 (declare-function key-or-menu-binding "vm-xemacs" (key &optional menu-flag))
 (declare-function bbdb-get-addresses "ext:bbdb-com"
-                 (only-first-address 
-                  uninteresting-senders 
+                 (only-first-address
+                  uninteresting-senders
                   get-header-content-function
                   &rest get-header-content-function-args))
 (declare-function bbdb-search-simple "ext:bbdb" (name net))
 
+;; vm-save.el function
+(declare-function vm-save-message "vm-save"
+                 (folder &optional count mlist quiet))
+
+;; vm-virtual.el function - cyclic dependency
+(declare-function vm-build-virtual-message-list "vm-virtual"
+                 (new-messages &optional dont-finalize))
+
 ; group already defined in vm-vars
 ;(defgroup vm nil
 ;  "VM"
diff --git a/lisp/vm-biff.el b/lisp/vm-biff.el
index 0fd1101291..3addac708c 100644
--- a/lisp/vm-biff.el
+++ b/lisp/vm-biff.el
@@ -58,6 +58,10 @@
 (defvar current-itimer)
 
 (declare-function vm-decode-mime-encoded-words-in-string "vm-mime" (string))
+
+;; X11 display functions
+(declare-function x-display-pixel-width "xfns.c" (&optional terminal))
+(declare-function x-display-pixel-height "xfns.c" (&optional terminal))
 (declare-function vm-goto-message "vm-motion" (n))
 (declare-function vm-mouse-set-mouse-track-highlight "vm-mouse"
                  (start end &optional overlay))
diff --git a/lisp/vm-build.el b/lisp/vm-build.el
index 46d942222c..5b87fc1325 100644
--- a/lisp/vm-build.el
+++ b/lisp/vm-build.el
@@ -44,7 +44,13 @@
            err
            )))
   
-;; Load byte compile 
+;; Declarations for optional/platform-specific functions
+(declare-function cygwin-mount-activate "ext:cygwin-mount" ())
+(declare-function cygwin-mount-convert-file-name "ext:cygwin-mount" (path))
+(declare-function custom-make-dependencies "cus-dep" ())
+(declare-function update-autoloads-from-directories "autoload" (&rest dirs))
+
+;; Load byte compile
 (require 'bytecomp)
 ;; Current public setting
 ;; Check for undefined functions, ignore save-excursion problems
diff --git a/lisp/vm-crypto.el b/lisp/vm-crypto.el
index 2aa46b7de1..4823f7f89a 100644
--- a/lisp/vm-crypto.el
+++ b/lisp/vm-crypto.el
@@ -148,7 +148,7 @@
     ;; wait for some output from vm-ssh-remote-command.  this
     ;; ensures that when we return the ssh connection is ready to
     ;; do port-forwarding.
-    (accept-process-output process)
+    (vm-accept-process-output process)
 
     local-port ))
 
diff --git a/lisp/vm-folder.el b/lisp/vm-folder.el
index 4f85c973be..008f2ad270 100644
--- a/lisp/vm-folder.el
+++ b/lisp/vm-folder.el
@@ -42,10 +42,31 @@
 (declare-function set-itimer-restart "vm-xemacs.el" (itimer restart))
 
 (declare-function vm-update-draft-count "vm.el" ())
-(declare-function vm "vm.el" 
-                 (&optional folder 
+(declare-function vm "vm.el"
+                 (&optional folder
                             &key read-only access-method reload revisit))
 (declare-function vm-mode "vm.el" (&optional read-only))
+(declare-function vm-version "vm.el" ())
+
+;; vm-imap.el functions - cyclic dependency
+(declare-function vm-imap-make-filename-for-spec "vm-imap" (spec))
+(declare-function vm-imap-set-default-attributes "vm-imap" (m))
+(declare-function vm-imap-end-session "vm-imap"
+                 (process &optional imap-buffer keep-buffer))
+(declare-function vm-imap-synchronize-folder "vm-imap" t)
+(declare-function vm-imap-find-spec-for-buffer "vm-imap" (buffer))
+(declare-function vm-imap-folder-check-mail "vm-imap" (&optional interactive))
+(declare-function vm-imap-account-name-for-spec "vm-imap" (spec))
+
+;; vm-virtual.el functions - cyclic dependency
+(declare-function vm-virtual-quit "vm-virtual" (&optional no-expunge 
no-change))
+(declare-function vm-virtual-save-folder "vm-virtual" (prefix))
+(declare-function vm-virtual-get-new-mail "vm-virtual" ())
+(declare-function vm-build-virtual-message-list "vm-virtual"
+                 (new-messages &optional dont-finalize))
+
+;; vm-mark.el function
+(declare-function vm-marked-messages "vm-mark" ())
                  
 
 ;; Operations for vm-folder-access-data
diff --git a/lisp/vm-imap.el b/lisp/vm-imap.el
index 1c9f55f28b..5ad9b2c54b 100644
--- a/lisp/vm-imap.el
+++ b/lisp/vm-imap.el
@@ -45,6 +45,7 @@
 ;;                                  (retry nil)))
 
 (defvar selectable-only) ;; FIXME: Add `vm-' prefix!
+(defvar auth-sources)  ;; from auth-source.el, used for dynamic binding
 
 ;;; To-Do  (USR)
 ;; - Need to ensure that new imap sessions get created as and when needed.
@@ -457,25 +458,13 @@ for accessing MAILBOX."
 (defsubst vm-imap-auth-method (auth)
   (memq auth vm-imap-auth-methods))
 
-(defsubst vm-accept-process-output (process)
-  "Accept output from PROCESS.  
-
+(defun vm-imap-accept-process-output (process)
+  "Accept output from PROCESS for IMAP operations.
 The variable `vm-imap-server-timeout' specifies how many seconds
-to wait before timing out.  If a timeout occurs, an exception is
-thrown.  In such a situation, typically VM cannot proceed."
-  ;; protect against possible buffer change due to bug in Emacs
-  (let ((buf (current-buffer))
-       (got-output (accept-process-output process vm-imap-server-timeout)))
-    (if got-output
-       (when (not (equal (current-buffer) buf))
-         (when (string-lessp "24" emacs-version)
-           ;; the Emacs bug should have been fixed in version 24
-           (vm-warn 0 2 
-            "Emacs process output error: Buffer changed to %s" 
-            (current-buffer)))
-         ;; recover from the bug
-         (set-buffer buf))
-      (vm-imap-protocol-error "Timed out for response from the IMAP server"))))
+to wait before timing out.  If a timeout occurs, a protocol error
+is signaled."
+  (unless (vm-accept-process-output process vm-imap-server-timeout)
+    (vm-imap-protocol-error "Timed out for response from the IMAP server")))
 
 
 ;; (defvar vm-imap-connection-mode 'online)  ; moved to vm-vars.el
@@ -1175,7 +1164,7 @@ Returns the process or nil if the session could not be 
created."
          protocol (car source-list)
          host (nth 1 source-list)
          port (nth 2 source-list)
-         ;; mailbox (nth 3 source-list)
+         mailbox (nth 3 source-list)
          auth (nth 4 source-list)
          user (nth 5 source-list)
          pass (nth 6 source-list)
@@ -1548,11 +1537,6 @@ as well."
   (if (not (= (point) (point-max)))
       (vm-imap-log-tokens (list 'send1 (point) (point-max))))
   (goto-char (point-max))
-  ;; try if it makes a difference to get pending output here, use timeout
-  ;; (accept-process-output process 0 0.01)
-  ;; (if (not (= (point) (point-max)))
-  ;;     (vm-imap-log-tokens (list 'send2 (point) (point-max))))
-  ;; (goto-char (point-max))
 
   (unless no-tag (insert-before-markers (or tag "VM") " "))
   (let ((case-fold-search t))
@@ -2311,7 +2295,7 @@ May throw exceptions."
                 (setq opoint (point))
                 (vm-imap-check-connection process)
                 ;; point might change here?
-                (vm-accept-process-output process) 
+                (vm-imap-accept-process-output process)
                 (goto-char opoint))
                ((looking-at "\r\n")
                 (forward-char 2)
@@ -2380,7 +2364,7 @@ May throw exceptions."
                     (while (< (- (point-max) start) n-octets)
                       (vm-imap-check-connection process)
                       ;; point might change here?  USR, 2011-03-16
-                      (vm-accept-process-output process))
+                      (vm-imap-accept-process-output process))
                     (goto-char (+ start n-octets))
                     (setq token (list 'string start (point))
                           done t)))
@@ -2400,7 +2384,7 @@ May throw exceptions."
                           (forward-char 1))
                       (vm-imap-check-connection process)
                       ;; point might change here?
-                      (vm-accept-process-output process)
+                      (vm-imap-accept-process-output process)
                       (goto-char curpoint))
                     (setq token (list 'string start curpoint)))))
                ;; should be (looking-at "[\000-\040\177-\377]")
@@ -2429,7 +2413,7 @@ May throw exceptions."
                         (setq done t)
                       (vm-imap-check-connection process)
                       ;; point might change here?
-                      (vm-accept-process-output process)
+                      (vm-imap-accept-process-output process)
                       (goto-char curpoint))
                     (vm-imap-log-token (buffer-substring start curpoint))
                     (setq token (list 'atom start curpoint)))))))
@@ -4667,7 +4651,7 @@ May throw exceptions."
        (mailboxes nil)
        (fcc-string (vm-mail-get-header-contents "FCC:" ","))
        fcc-list fcc maildrop spec-list 
-       process flags string m ;; response
+       process (flags nil) string m ;; response
        (vm-imap-ok-to-ask t))
     (if (null mailbox)
        (setq mailboxes nil)
diff --git a/lisp/vm-message.el b/lisp/vm-message.el
index 29ea1a82cf..cacc51876d 100644
--- a/lisp/vm-message.el
+++ b/lisp/vm-message.el
@@ -442,6 +442,10 @@ works in all VM buffers."
 (defsubst vm-set-thread-indentation-offset-of (message offset)
   (aset (aref message 1) 22 offset))
 
+;; Defined here early because it's used by vm-set-edited-flag-of below
+(defsubst vm-set-stuff-flag-of (message val)
+  (aset (aref message 4) 2 val))
+
 ;; The other routines in attributes group are part of the undo system.
 (defun vm-set-edited-flag-of (message flag)
   (aset (aref message 2) 7 flag)
@@ -557,8 +561,6 @@ works in all VM buffers."
   (set (aref (aref message 4) 1) list))
 (defsubst vm-set-virtual-messages-sym-of (message sym)
   (aset (aref message 4) 1 sym))
-(defsubst vm-set-stuff-flag-of (message val)
-  (aset (aref message 4) 2 val))
 (defsubst vm-set-decoded-labels-of (message labels)
   (aset (aref message 4) 3 labels))
 (defalias 'vm-set-labels-of 'vm-set-decoded-labels-of)
diff --git a/lisp/vm-mime.el b/lisp/vm-mime.el
index 62b992cc5d..8a08c363e4 100644
--- a/lisp/vm-mime.el
+++ b/lisp/vm-mime.el
@@ -66,6 +66,16 @@
 (declare-function vm-imagemagick-call-convert "vm-misc" (infile buffer args))
 (declare-function vm-imagemagick-convert-shell-command "vm-misc" ())
 
+;; vm-digest.el functions - cyclic dependency
+(declare-function vm-mime-encapsulate-messages "vm-digest" t)
+(declare-function vm-mime-burst-layout "vm-digest" (layout ident-header))
+
+;; vm-edit.el function
+(declare-function vm-discard-cached-data "vm-edit" (&optional count))
+
+;; Image cache function
+(declare-function clear-image-cache "image.c" (&optional filter))
+
 (defvar enable-multibyte-characters)
 
 ;; The following variables are defined in the code, depending on the
diff --git a/lisp/vm-misc.el b/lisp/vm-misc.el
index a1b35510ba..b4ff1d7ea2 100644
--- a/lisp/vm-misc.el
+++ b/lisp/vm-misc.el
@@ -30,6 +30,9 @@
 ;; vm-xemacs.el is a fake file to fool the Emacs 23 compiler
 (declare-function find-coding-system "vm-xemacs" (coding-system-or-name))
 (declare-function map-extents "vm-xemacs" (function &optional buffer from to))
+(declare-function focus-frame "vm-xemacs" (frame))
+(declare-function char-to-int "vm-xemacs" (char))
+(declare-function scroll-bar-mode "scroll-bar" (&optional arg))
 
 ;; Aliases for xemacs/fsfemacs functions with different arguments
 ;; (declare-function vm-interactive-p "vm-misc.el"
@@ -86,6 +89,14 @@ message."
 (defsubst vm-garbage-collect ()
   (pp (vm-zip-lists gc-fields (garbage-collect))))
 
+(defun vm-accept-process-output (process &optional timeout)
+  "Accept output from PROCESS, optionally with TIMEOUT seconds.
+Binds `inhibit-quit' to nil to allow user interrupts and avoid
+the \"Blocking call to accept-process-output with quit inhibited\" warning.
+Returns non-nil if output was received, nil on timeout."
+  (let ((inhibit-quit nil))
+    (accept-process-output process timeout)))
+
 ;; Make sure that interprogram-cut-function is defined
 (unless (boundp 'interprogram-cut-function)
   (defvar interprogram-cut-function nil))
diff --git a/lisp/vm-pcrisis.el b/lisp/vm-pcrisis.el
index b41a4a458b..9063b41a97 100644
--- a/lisp/vm-pcrisis.el
+++ b/lisp/vm-pcrisis.el
@@ -45,9 +45,17 @@
 (eval-when-compile (require 'vm-macro))
 
 (declare-function set-extent-face "vm-xemacs" (extent face))
-(declare-function timezone-absolute-from-gregorian "ext:timezone" 
+(declare-function timezone-absolute-from-gregorian "ext:timezone"
                  (month day year))
 (declare-function bbdb-buffer "ext:bbdb" ())
+(declare-function bbdb-record-putprop "ext:bbdb" (record property value))
+(declare-function bbdb-save-db "ext:bbdb" (&optional postprocess))
+(declare-function bbdb-record-net "ext:bbdb" (record))
+(declare-function bbdb-get-field "ext:bbdb-com" (record field &optional 
yet-another))
+(declare-function bbdb-search "ext:bbdb" (records &optional name company net 
notes phone))
+(declare-function bbdb-create-internal "ext:bbdb" (&rest args))
+;; bbdb-with-db-buffer is a macro, declare it to suppress warning
+(declare-function bbdb-with-db-buffer "ext:bbdb" t)
 (declare-function vm-imap-account-name-for-spec "vm-imap" (maildrop-spec))
 (declare-function vm-pop-find-name-for-spec "vm-pop" (maildrop-spec))
 
diff --git a/lisp/vm-pop.el b/lisp/vm-pop.el
index f91a173587..4053254eb7 100644
--- a/lisp/vm-pop.el
+++ b/lisp/vm-pop.el
@@ -32,11 +32,13 @@
 (require 'vm-mime)
 (eval-when-compile (require 'cl-lib))
 
-(declare-function vm-submit-bug-report 
+(declare-function vm-submit-bug-report
                  "vm.el" (&optional pre-hooks post-hooks))
-(declare-function open-network-stream 
+(declare-function open-network-stream
                  "subr.el" (name buffer host service &rest parameters))
 
+(defvar auth-sources)  ;; from auth-source.el, used for dynamic binding
+
 (if (fboundp 'define-error)
     (progn
       (define-error 'vm-cant-uidl "Can't use UIDL")
@@ -790,7 +792,7 @@ killed as well."
     (goto-char vm-pop-read-point)
     (while (not (search-forward "\r\n" nil t))
       (vm-pop-check-connection process)
-      (accept-process-output process)
+      (vm-accept-process-output process)
       (goto-char vm-pop-read-point))
     (setq match-end (point))
     (goto-char vm-pop-read-point)
@@ -810,7 +812,7 @@ killed as well."
       ;; save-excursion doesn't work right
       (let ((opoint (point)))
        (vm-pop-check-connection process)
-       (accept-process-output process)
+       (vm-accept-process-output process)
        (goto-char opoint)))
     (setq vm-pop-read-point (point))))
 
@@ -839,7 +841,7 @@ killed as well."
        ;; save-excursion doesn't work right
        (let ((opoint (point)))
          (vm-pop-check-connection process)
-         (accept-process-output process)
+         (vm-accept-process-output process)
          (goto-char opoint)))
       (setq vm-pop-read-point (point-marker))
       (goto-char start)
@@ -944,7 +946,7 @@ popdrop
                           (vm-pop-report-retrieval-status statblob)))))))
             (after-change-functions (cons func after-change-functions)))
        (vm-pop-check-connection process)
-       (accept-process-output process)
+       (vm-accept-process-output process)
        (goto-char opoint)))
     (vm-set-pop-stat-x-need statblob nil)
     (setq vm-pop-read-point (point-marker))
@@ -1048,7 +1050,7 @@ popdrop
            ;; save-excursion doesn't work right
            (let ((opoint (point)))
              (vm-pop-check-connection process)
-             (accept-process-output process)
+             (vm-accept-process-output process)
              (goto-char opoint)))
          (setq vm-pop-read-point (point-marker))
          (goto-char start)
diff --git a/lisp/vm-postpone.el b/lisp/vm-postpone.el
index 532589d7bb..8c2af34a53 100644
--- a/lisp/vm-postpone.el
+++ b/lisp/vm-postpone.el
@@ -941,7 +941,7 @@ See the variable `vm-mail-priority'."
                                     vm-auto-folder-alist)
   "Like `vm-auto-folder-alist' but for outgoing messages.
 It should be fed to `vm-mail-select-folder'."
-  :type 'list
+  :type 'sexp
   :group 'vm-postpone)
 
 ;;;###autoload
@@ -954,7 +954,7 @@ By reordering the elements of this list or adding own 
functions you
 can control the behavior of vm-mail-fcc and `vm-mail-auto-fcc'.
 You may allow a sophisticated decision for the right folder for your
 outgoing message."
-  :type 'list
+  :type 'sexp
   :group 'vm-postpone)
 
 ;;;###autoload
diff --git a/lisp/vm-reply.el b/lisp/vm-reply.el
index a6f35c10ca..2008309d87 100644
--- a/lisp/vm-reply.el
+++ b/lisp/vm-reply.el
@@ -72,8 +72,18 @@
 
 (declare-function vm-mode "vm" (&optional read-only))
 (declare-function vm-session-initialization "vm" ())
+(declare-function vm-version "vm" ())
 (declare-function get-itimer "vm-xemacs.el" (name))
 
+;; vm-digest.el functions - cyclic dependency
+(declare-function vm-no-frills-encapsulate-message "vm-digest"
+                 (m keep-list discard-regexp))
+(declare-function vm-mime-encapsulate-messages "vm-digest" t)
+(declare-function vm-rfc934-encapsulate-messages "vm-digest"
+                 (message-list keep-list discard-regexp))
+(declare-function vm-rfc1153-encapsulate-messages "vm-digest"
+                 (message-list keep-list discard-regexp))
+
 (declare-function mail-strip-quoted-names "ext:mail-utils" (address))
 (declare-function mail-fetch-field "ext:mail-utils" 
                  (field-name &optional last all list))
diff --git a/lisp/vm-rfaddons.el b/lisp/vm-rfaddons.el
index fd27eff411..ef04919476 100644
--- a/lisp/vm-rfaddons.el
+++ b/lisp/vm-rfaddons.el
@@ -146,7 +146,7 @@ nil. (Rob F)"
       (vm-mime-auto-save-all-attachments-delete-external m)))
 
 ;;;###autoload
-(defun vm-rfaddons-infect-vm (&optional sit-for
+(defun vm-rfaddons-infect-vm (&optional _sit-for
                                         option-list exclude-option-list)
   "This function will setup the key bindings, advices and hooks
 necessary to use all the function of vm-rfaddons.el.
@@ -1388,7 +1388,7 @@ text/alternative message depending on the value of the 
variable
                (setq end (point-marker))
                (insert "--" boundary "--\n")))
 
-    (if qp-encoded (vm-mime-qp-decode-region start end))
+    (if qp-encoded (quoted-printable-decode-region start end))
     
     (goto-char body)
     (if (stringp vm-assimilate-html-command)
diff --git a/lisp/vm-save.el b/lisp/vm-save.el
index 5fb7b40dce..05db7a4bb9 100644
--- a/lisp/vm-save.el
+++ b/lisp/vm-save.el
@@ -809,9 +809,9 @@ arguments after the command finished."
 
     (process-send-eof process)
 
-    (when (not no-wait) 
+    (when (not no-wait)
       (while (and (eq 'run (process-status process)))
-       (accept-process-output process)
+       (vm-accept-process-output process)
        (sit-for 0))
       (vm-pipe-command-exit-handler process command discard-output))
     buffer))
diff --git a/lisp/vm-serial.el b/lisp/vm-serial.el
index f7e3c23715..56f717df10 100644
--- a/lisp/vm-serial.el
+++ b/lisp/vm-serial.el
@@ -85,8 +85,11 @@
   "Sending personalized serial mails and getting message templates."
   :group  'vm-ext)
 
-(declare-function bbdb-extract-address-components 
+(declare-function bbdb-extract-address-components
                  "ext:bbdb-snarf" (adstring &optional ignore-errors))
+
+;; XEmacs function
+(declare-function read-expression "vm-xemacs" (prompt &optional 
initial-contents))
 (declare-function bbdb-record-firstname "ext:bbdb" (record))
 (declare-function bbdb-record-lastname "ext:bbdb" (record))
 (declare-function bbdb-search-simple "ext:bbdb" (name net))
diff --git a/lisp/vm-summary.el b/lisp/vm-summary.el
index e74ce2c151..9f7cb9b2a7 100644
--- a/lisp/vm-summary.el
+++ b/lisp/vm-summary.el
@@ -38,6 +38,9 @@
 (declare-function vm-sort-messages "vm-sort.el"
                  (keys &optional lets-get-physical))
 
+;; vm-imap.el function
+(declare-function vm-imap-folder-for-spec "vm-imap" (spec))
+
 (defvar scrollbar-height)              ; defined for XEmacs
 
 
diff --git a/lisp/vm-vcard.el b/lisp/vm-vcard.el
index 0acd0e654f..29c43a6742 100644
--- a/lisp/vm-vcard.el
+++ b/lisp/vm-vcard.el
@@ -34,6 +34,13 @@
   (require 'vm-misc)
   (vm-load-features-silent-when-compiling '(vcard)))
 
+(defvar vcard-pretty-print-function)  ;; from vcard.el, used for dynamic 
binding
+
+;; vcard.el functions
+(declare-function vcard-pretty-print "ext:vcard" (vcard))
+(declare-function vcard-parse-string "ext:vcard" (string &optional filter))
+(declare-function vcard-format-sample-string "ext:vcard" (vcard))
+
 (and (boundp 'vcard-api-version) (string-lessp vcard-api-version "2.0")
      (error "vm-vcard.el requires vcard API version 2.0 or later."))
 

Reply via email to