* wl-acap.el (wl-acap-original-msgdb-directory): Renamed from
[elisp/wanderlust.git] / wl / wl-acap.el
index aa05598..eb4901e 100644 (file)
@@ -1,4 +1,4 @@
-;;; wl-acap.el -- ACAP support for Wanderlust.
+;;; wl-acap.el --- ACAP support for Wanderlust.
 
 ;; Copyright (C) 2001 Yuuichi Teranishi <teranisi@gohome.org>
 
@@ -96,8 +96,16 @@ If nil, default acap port is used."
   :type 'symbol
   :group 'wl)
 
+(defvar wl-acap-original-msgdb-directory nil)
+
+(defun wl-acap-exit ()
+  "End ACAP session."
+  (setq elmo-msgdb-directory wl-acap-original-msgdb-directory))
+
 (defun wl-acap-init ()
   "A candidate for `wl-folder-init-function'."
+  (setq wl-acap-original-msgdb-directory nil)
+  (condition-case nil ; catch error and quit.
   (let ((service (wl-acap-find-acap-service))
        proc entries settings folder-top type)
     (unless (car service) (error "No ACAP service found"))
@@ -161,10 +169,16 @@ If nil, default acap port is used."
     (dolist (setting settings)
       (set (car setting) (cdr setting)))
     ;; Database directory becomes specific to the ACAP server.
-    (setq elmo-msgdb-dir (expand-file-name
-                         (concat "acap/" (car service) "/" wl-acap-user)
-                         elmo-msgdb-dir))
-    (acap-close proc)))
+    (setq wl-acap-original-msgdb-directory elmo-msgdb-directory)
+    (setq elmo-msgdb-directory (expand-file-name
+                               (concat "acap/" (car service) "/" wl-acap-user)
+                               elmo-msgdb-directory))
+    (acap-close proc))
+  (error (when wl-acap-original-msgdb-directory
+          (setq elmo-msgdb-directory wl-acap-original-msgdb-directory)))
+  (quit (when wl-acap-original-msgdb-directory
+         (setq elmo-msgdb-directory wl-acap-original-msgdb-directory)))))
+
 
 (defun wl-acap-create-folder-entity (string)
   (with-temp-buffer