From 0e7c8611353ed46a045b4eddb09e450d2b85f27b Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 8 Oct 1995 19:37:04 +0000 Subject: [PATCH] (desktop-outvar): Support truncation. (desktop-globals-to-save): Doc fix. --- lisp/desktop.el | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/lisp/desktop.el b/lisp/desktop.el index b9787a83766..aa881af5d03 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -3,7 +3,6 @@ ;; Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. ;; Author: Morten Welinder -;; Version: 2.10 ;; Keywords: customization ;; Favourite-brand-of-beer: None, I hate beer. @@ -124,7 +123,11 @@ Otherwise it simply ignores that file.") '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 @@ Not all types of values are supported." (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. -- 2.39.2