;ELC ;;; compiled by rms@mole.gnu.ai.mit.edu on Tue Mar 5 11:42:18 1996 ;;; from file /home/fsf/rms/e19/lisp/desktop.el ;;; emacs version 19.30.91.2. ;;; bytecomp version FSF 2.10 ;;; optimization is on. ;;; this file uses opcodes which do not exist in Emacs 18. (if (and (boundp 'emacs-version) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`desktop.el' was compiled for Emacs 19.29 or later")) #@59 File for Emacs desktop, not including the directory name. (defconst desktop-basefilename (byte-code "=\f=Çć" [system-type ms-dos windows-nt "emacs.dsk" ".emacs.desktop"] 2) (#$ . 472)) #@101 *If non-nil then desktop warns when a file no longer exists. Otherwise it simply ignores that file. (defvar desktop-missing-file-warning t (#$ . -675)) #@258 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-globals-to-save (list (quote desktop-missing-file-warning) (quote tags-file-name) (quote tags-table-list) (quote search-ring) (quote regexp-search-ring) (quote register-alist)) (#$ . 834)) #@107 List of local variables to save for each buffer. The variables are saved only when they really are local. (defvar desktop-locals-to-save (list (quote desktop-locals-to-save) (quote truncate-lines) (quote case-fold-search) (quote case-replace) (quote fill-column) (quote overwrite-mode) (quote change-log-default-name) (quote line-number-mode)) (#$ . 1303)) (make-variable-buffer-local (quote desktop-locals-to-save)) #@65 Regexp identifying buffers that are to be excluded from saving. (defvar desktop-buffers-not-to-save "\\(^nn\\.a[0-9]+\\|\\.log\\|(ftp)\\|^tags\\|^TAGS\\)$" (#$ . 1726)) #@72 Regexp identifying files whose buffers are to be excluded from saving. (defvar desktop-files-not-to-save "^/[^/:]*:" (#$ . 1901)) #@67 When desktop creates a buffer, this holds the desired Major mode. (defvar desktop-buffer-major-mode nil (#$ . 2037)) #@67 When desktop creates a buffer, this holds the file name to visit. (defvar desktop-buffer-file-name nil (#$ . 2160)) #@68 When desktop creates a buffer, this holds the desired buffer name. (defvar desktop-buffer-name nil (#$ . 2282)) #@119 When desktop creates a buffer, this holds a list of misc info. It is used by the `desktop-buffer-handlers' functions. (defvar desktop-buffer-misc nil (#$ . 2401)) #@347 *List of functions to call in order to create a buffer. The functions are called without explicit parameters but can use the variables `desktop-buffer-major-mode', `desktop-buffer-file-name', `desktop-buffer-name'. If one function returns non-nil, no further functions are called. If the function returns t then the buffer is considered created. (defvar desktop-buffer-handlers (quote (desktop-buffer-dired desktop-buffer-rmail desktop-buffer-mh desktop-buffer-info desktop-buffer-file)) (#$ . -2571)) #@46 Opening of form for creation of new buffers. (defvar desktop-create-buffer-form "(desktop-create-buffer 205" (#$ . 3079)) #@92 Hook run before saving the desktop to allow you to cut history lists and the like shorter. (defvar desktop-save-hook nil (#$ . 3207)) #@58 The directory in which the current desktop file resides. (defvar desktop-dirname nil (#$ . 3347)) #@35 *Header to place in Desktop file. (defconst desktop-header ";; --------------------------------------------------------------------------\n;; Desktop File for Emacs\n;; --------------------------------------------------------------------------\n" (#$ . -3451)) #@68 Hooks run after all buffers are loaded; intended for internal use. (defvar desktop-delay-hook nil (#$ . 3718)) #@52 Truncate LIST to at most N elements destructively. (defalias 'desktop-truncate #[(l n) "S : \ná)" [n l here nil] 3 (#$ . 3835)]) #@20 Empty the Desktop. (defalias 'desktop-clear #[nil " \" " [nil kill-ring kill-ring-yank-pointer search-ring search-ring-yank-pointer regexp-search-ring regexp-search-ring-yank-pointer mapcar kill-buffer buffer-list delete-other-windows] 3 (#$ . 3978) nil]) (add-hook (quote kill-emacs-hook) (quote desktop-kill)) (defalias 'desktop-kill #[nil "Ï" [desktop-dirname err (desktop-save desktop-dirname) ((file-error (byte-code "!? @ A\"" [yes-or-no-p "Error while saving the desktop. Quit anyway? " signal err] 3)))] 3]) (defalias 'desktop-list* #[(&rest args) "A@A@@BAA&@ BA )" [args value] 3]) #@238 Convert VALUE to a pair (QUOTE . TXT); (eval (read TXT)) gives VALUE. TXT is a string that when read and evaluated yields value. QUOTE may be `may' (value may be quoted), `must' (values must be quoted), or nil (value may not be quoted). (defalias 'desktop-internal-v2s #[(val) "=!B;-! G $ !)B98!B!g \" Z#QBe#QB*:ȉ:@!@?B)Ay!@@?BB*#QB#QB,!!OQB!6!!!!!,--,*BB" [val t may prin1-to-string copy-sequence copy set-text-properties 0 nil must vectorp special mapcar #[(el) " !@ \n)" [desktop-internal-v2s el res t special] 3] pass1 "(vector " mapconcat #[(el) "@=\fAPA" [el must "'"] 2] " " ")" "[" cdr "]" anynil use-list* newlist p desktop-internal-v2s q\.txt el last (must . ".") "(desktop-list* " "(list " #[(el) "@=\fAPA" [el must "'"] 2] "(" subrp "(symbol-function '" 7 -1 markerp marker-position buffer-name marker-buffer buf pos "(let ((mk (make-marker)))" " (add-hook 'desktop-delay-hook" " (list 'lambda '() (list 'set-marker mk " " (get-buffer " ")))) mk)" "\"Unprintable entity\""] 9 (#$ . 4637)]) #@110 Convert VALUE to a string that when read evaluates to the same value. Not all types of values are supported. (defalias 'desktop-value-to-string #[(val) " !@A= P\"-" [t print-escape-newlines nil float-output-format desktop-internal-v2s val quote\.txt quote txt must "'"] 3 (#$ . 5910)]) #@286 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. (defalias 'desktop-outvar #[(varspec) " : @ A \n!? 3 V3\n!<3\n! \"\n!\nJ!̱*" [nil size var varspec boundp 0 eval desktop-truncate "(setq " symbol-name " " desktop-value-to-string ")\n"] 5 (#$ . 6230)]) #@168 Return t if the desktop should record a particular buffer for next startup. FILENAME is the visited file name, BUFNAME is the buffer name, and MODE is the major mode. (defalias 'desktop-save-buffer-p #[(filename bufname mode &rest dummy) "\n\f \"\n\"?7=. !q\n\")?7\n?7>)" [nil case-fold-search filename string-match desktop-buffers-not-to-save bufname desktop-files-not-to-save mode dired-mode get-buffer default-directory (Info-mode rmail-mode)] 3 (#$ . 6759)]) #@76 Save the Desktop file. Parameter DIRNAME specifies where to save desktop. (defalias 'desktop-save #[(dirname) "! \fP! \"!\n \f\nq  ձ\">IGGZ!ܱc \" \f!a\f!ed\f%, %" [run-hooks desktop-save-hook expand-file-name dirname desktop-basefilename mapcar #[(b) "q \f??C`!D =#\n D5 =5!\"AB u@ZBk@k@B)AD+ " [b buffer-file-name buffer-name major-mode auto-fill-function mark t mark-active buffer-read-only Info-mode Info-current-file Info-current-node dired-mode expand-file-name dired-directory mapcar car dired-subdir-alist desktop-locals-to-save buffer-local-variables nil ll loclist locals here] 12] buffer-list get-buffer-create "*desktop*" buf info filename erase-buffer desktop-header ";; Created " current-time-string "\n" ";; Emacs version " emacs-version "\n\n" ";; Global section:\n" desktop-outvar desktop-globals-to-save kill-ring "(setq kill-ring-yank-pointer (nthcdr " int-to-string kill-ring-yank-pointer " kill-ring))\n" "\n;; Buffer section:\n" #[(l) "\n\" c\n\"c" [apply desktop-save-buffer-p l desktop-create-buffer-form mapcar #[(e) "\n!" ["\n " desktop-value-to-string e] 3] ")\n\n"] 3] default-directory file-exists-p delete-file write-region nil nomessage desktop-dirname] 8 (#$ . 7262) "DDirectory to save desktop file in: "]) #@60 Delete the Desktop file and inactivate the desktop system. (defalias 'desktop-remove #[nil " P\n!\n!)" [desktop-dirname desktop-basefilename filename nil file-exists-p delete-file] 2 (#$ . 8682) nil]) #@104 Read the Desktop file and the files it specifies. This is a no-op when Emacs is running in batch mode. (defalias 'desktop-read #[nil "?A \n@\"!\nA\n \n@!> \"ȉ$!\n!@ )" [noninteractive ("./" "~/") dirs file-exists-p expand-file-name desktop-basefilename desktop-dirname load t run-hooks desktop-delay-hook nil message "Desktop loaded." desktop-clear] 6 (#$ . 8904) nil]) #@165 Load the `default' start-up library manually. Also inhibit further loading of it. Call this from your `.emacs' file to provide correct modes for autoloaded files. (defalias 'desktop-load-default #[nil "?É#É" [inhibit-default-init load "default" t] 4 (#$ . 9322)]) #@20 Load an info file. (defalias 'desktop-buffer-info #[nil "=! @ A@\"Ƈ" [desktop-buffer-major-mode Info-mode require info Info-find-node desktop-buffer-misc t] 3 (#$ . 9604)]) #@21 Load an RMAIL file. (defalias 'desktop-buffer-rmail #[nil "=\nď" [desktop-buffer-major-mode rmail-mode error (byte-code " !‡" [rmail-input desktop-buffer-file-name t] 2) ((file-locked (byte-code "p!" [kill-buffer ignored] 2)))] 3 (#$ . 9794)]) #@33 Load a folder in the mh system. (defalias 'desktop-buffer-mh #[nil "=! !LJ" [desktop-buffer-major-mode mh-folder-mode require mh-e mh-find-path mh-visit-folder desktop-buffer-name t] 2 (#$ . 10059)]) #@31 Load a directory using dired. (defalias 'desktop-buffer-dired #[nil "='\f@!!\f@!\fA\"ȇ\f@\"!͇" [desktop-buffer-major-mode dired-mode file-directory-p file-name-directory desktop-buffer-misc dired mapcar dired-insert-subdir t message "Directory %s no longer exists." sit-for 1 ignored] 3 (#$ . 10279)]) #@14 Load a file. (defalias 'desktop-buffer-file #[nil "!\n\"!!LJȇ" [desktop-buffer-file-name file-exists-p desktop-missing-file-warning y-or-n-p format "File \"%s\" no longer exists. Re-create? " find-file t ignored] 4 (#$ . 10609)]) (defalias 'desktop-create-buffer #[(ver desktop-buffer-file-name desktop-buffer-name desktop-buffer-major-mode mim pt mk ro desktop-buffer-misc &optional locals) " \f\f@ \fA = -!\n@8˂9! b:T@!A@Y!b@:@!@AL!!)Ag+" [desktop-buffer-handlers nil handler result hlist t buffer-name desktop-buffer-name rename-buffer auto-fill-mode mim 1 0 pt mk set-mark mark-active ro buffer-read-only locals this make-local-variable makunbound] 4]) (defalias 'desktop-buffer #[(desktop-buffer-file-name desktop-buffer-name desktop-buffer-major-mode mim pt mk ro tl fc cfs cr desktop-buffer-misc) "\n \f A  B BBB @B&\n" [desktop-create-buffer 205 desktop-buffer-file-name desktop-buffer-name desktop-buffer-major-mode mim pt mk ro desktop-buffer-misc truncate-lines tl fill-column fc case-fold-search cfs case-replace cr overwrite-mode] 16]) (provide (quote desktop))