changeset 14754:9955249f9b0f

(desktop-list*): New function. (desktop-internal-v2s): Generate output using desktop-list*.
author Richard M. Stallman <rms@gnu.org>
date Tue, 05 Mar 1996 04:22:44 +0000
parents cf8ad47dc610
children 3d473ed8c718
files lisp/desktop.el
diffstat 1 files changed, 18 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/desktop.el	Tue Mar 05 04:22:25 1996 +0000
+++ b/lisp/desktop.el	Tue Mar 05 04:22:44 1996 +0000
@@ -217,6 +217,17 @@
 	     nil
 	   (signal (car err) (cdr err)))))))
 ;; ----------------------------------------------------------------------------
+(defun desktop-list* (&rest args)
+  (if (null (cdr args))
+      (car args)
+    (setq args (nreverse args))
+    (let ((value (cons (nth 1 args) (car args))))
+      (setq args (cdr (cdr args)))
+      (while args
+	(setq value (cons (car args) value))
+	(setq args (cdr args)))
+      value)))
+
 (defun desktop-internal-v2s (val)
   "Convert VALUE to a pair (QUOTE . TXT); (eval (read TXT)) gives VALUE.
 TXT is a string that when read and evaluated yields value.
@@ -254,6 +265,7 @@
    ((consp val)
     (let ((p val)
 	  newlist
+	  use-list*
 	  anynil)
       (while (consp p)
 	(let ((q.txt (desktop-internal-v2s (car p))))
@@ -263,22 +275,15 @@
       (if p
 	  (let ((last (desktop-internal-v2s p))
 		(el (car newlist)))
-	    (setcar newlist
-		    (if (or anynil (setq anynil (null (car last))))
-			(cons nil
-			      (concat "(cons "
-				      (if (eq (car el) 'must) "'" "")
-				      (cdr el)
-				      " "
-				      (if (eq (car last) 'must) "'" "")
-				      (cdr last)
-				      ")"))
-		      (cons 'must
-			    (concat (cdr el) " . " (cdr last)))))))
+	    (or anynil (setq anynil (null (car last))))
+	    (or anynil
+		(setq newlist (cons '(must . ".") newlist)))
+	    (setq use-list* t)
+	    (setq newlist (cons last newlist))))
       (setq newlist (nreverse newlist))
       (if anynil
 	  (cons nil
-		(concat "(list "
+		(concat (if use-list* "(desktop-list* "  "(list ")
 			(mapconcat (lambda (el)
 				     (if (eq (car el) 'must)
 					 (concat "'" (cdr el))