changeset 13154:f86e18ff3736

(desktop-outvar): Support truncation. (desktop-globals-to-save): Doc fix.
author Richard M. Stallman <rms@gnu.org>
date Sun, 08 Oct 1995 19:37:04 +0000
parents c9694633f7ca
children 0b8e0559dcee
files lisp/desktop.el
diffstat 1 files changed, 26 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/desktop.el	Sun Oct 08 19:30:41 1995 +0000
+++ b/lisp/desktop.el	Sun Oct 08 19:37:04 1995 +0000
@@ -3,7 +3,6 @@
 ;; Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
 
 ;; Author: Morten Welinder <terra@diku.dk>
-;; Version: 2.10
 ;; Keywords: customization
 ;; Favourite-brand-of-beer: None, I hate beer.
 
@@ -124,7 +123,11 @@
 	'register-alist
 	;; 'desktop-globals-to-save	; Itself!
 	)
-  "List of global variables to save when killing Emacs.")
+  "List of global variables to save when killing Emacs.
+An element may be variable name (a symbol)
+or a cons cell of the form  (VAR . MAX-SIZE),
+which means to truncate VAR's value to at most MAX-SIZE elements
+\(if the value is a list) before saving the value.")
 
 (defvar desktop-locals-to-save
   (list 'desktop-locals-to-save		; Itself!  Think it over.
@@ -309,14 +312,27 @@
 	(concat "'" txt)
       txt)))
 ;; ----------------------------------------------------------------------------
-(defun desktop-outvar (var)
-  "Output a setq statement for VAR to the desktop file."
-  (if (boundp var)
-      (insert "(setq "
-	      (symbol-name var)
-	      " "
-	      (desktop-value-to-string (symbol-value var))
-	      ")\n")))
+(defun desktop-outvar (varspec)
+  "Output a setq statement for variable VAR to the desktop file.
+The argument VARSPEC may be the variable name VAR (a symbol),
+or a cons cell of the form  (VAR . MAX-SIZE),
+which means to truncate VAR's value to at most MAX-SIZE elements
+\(if the value is a list) before saving the value."
+  (let (var size)
+    (if (consp varspec)
+	(setq var (car varspec) size (cdr varspec))
+      (setq var varspec))
+    (if (boundp var)
+	(progn
+	  (if (and (integerp size)
+		   (> size 0)
+		   (listp (eval var)))
+	      (desktop-truncate (eval var) size)) 
+	  (insert "(setq "
+		  (symbol-name var)
+		  " "
+		  (desktop-value-to-string (symbol-value var))
+		  ")\n")))))
 ;; ----------------------------------------------------------------------------
 (defun desktop-save-buffer-p (filename bufname mode &rest dummy)
   "Return t if the desktop should record a particular buffer for next startup.