comparison lisp/resume.el @ 2536:e8426c217792

(resume-empty-args-file): Renamed from empty-args-file. Add autoload cookie. (resume-emacs-args-buffer): Renamed. (resume-write-buffer-to-file): Renamed.
author Richard M. Stallman <rms@gnu.org>
date Wed, 14 Apr 1993 21:41:27 +0000
parents 2c87b7e144c0
children 62b0d90a62e8
comparison
equal deleted inserted replaced
2535:86d5500624d5 2536:e8426c217792
79 ;; command line arguments are placed in a file name ~/.emacs_args. 79 ;; command line arguments are placed in a file name ~/.emacs_args.
80 ;; The "-nw" switch to Emacs means no windowing system. 80 ;; The "-nw" switch to Emacs means no windowing system.
81 81
82 ;; Insert this in your .emacs file: 82 ;; Insert this in your .emacs file:
83 ;;(setq suspend-resume-hook 'resume-process-args) 83 ;;(setq suspend-resume-hook 'resume-process-args)
84 ;;(setq suspend-hooks 'empty-args-file) 84 ;;(setq suspend-hooks 'resume-empty-args-file)
85 ;;(autoload 'empty-args-file "resume") 85 ;;(autoload 'resume-empty-args-file "resume")
86 ;;(autoload 'resume-process-args "resume") 86 ;;(autoload 'resume-process-args "resume")
87 87
88 ;; Finally, put the rest in a file named "resume.el" in a lisp library 88 ;; Finally, put the rest in a file named "resume.el" in a lisp library
89 ;; directory. 89 ;; directory.
90 90
91 ;;; Code: 91 ;;; Code:
92 92
93 (defvar emacs-args-file (expand-file-name "~/.emacs_args") 93 (defvar resume-emacs-args-file (expand-file-name "~/.emacs_args")
94 "*This file is where arguments are placed for a suspended emacs job.") 94 "*This file is where arguments are placed for a suspended emacs job.")
95 95
96 (defvar emacs-args-buffer " *Command Line Args*" 96 (defvar resume-emacs-args-buffer " *Command Line Args*"
97 "Buffer that is used by resume-process-args.") 97 "Buffer that is used by resume-process-args.")
98 98
99 (defun resume-process-args () 99 (defun resume-process-args ()
100 "This should be called from inside of suspend-resume-hook. This 100 "Handler for command line args given when Emacs is resumed."
101 grabs the contents of the file whose name is stored in
102 emacs-args-file, and processes these arguments like command line
103 options."
104 (let ((start-buffer (current-buffer)) 101 (let ((start-buffer (current-buffer))
105 (args-buffer (get-buffer-create emacs-args-buffer)) 102 (args-buffer (get-buffer-create resume-emacs-args-buffer))
106 length args) 103 length args)
107 (unwind-protect 104 (unwind-protect
108 (progn 105 (progn
109 (set-buffer args-buffer) 106 (set-buffer args-buffer)
110 (erase-buffer) 107 (erase-buffer)
111 ;; get the contents of emacs-args-file 108 ;; get the contents of resume-emacs-args-file
112 (condition-case () 109 (condition-case ()
113 (let ((result (insert-file-contents emacs-args-file))) 110 (let ((result (insert-file-contents resume-emacs-args-file)))
114 (setq length (car (cdr result)))) 111 (setq length (car (cdr result))))
115 ;; the file doesn't exist, ergo no arguments 112 ;; the file doesn't exist, ergo no arguments
116 (file-error 113 (file-error
117 (erase-buffer) 114 (erase-buffer)
118 (setq length 0))) 115 (setq length 0)))
128 (skip-chars-forward " \t\n")) 125 (skip-chars-forward " \t\n"))
129 ;; arguments are now in reverse order 126 ;; arguments are now in reverse order
130 (setq args (nreverse args)) 127 (setq args (nreverse args))
131 ;; make sure they're not read again 128 ;; make sure they're not read again
132 (erase-buffer)) 129 (erase-buffer))
133 (write-buffer-to-file (current-buffer) emacs-args-file) 130 (resume-write-buffer-to-file (current-buffer) resume-emacs-args-file)
134 ;; if nothing was in buffer, args will be null 131 ;; if nothing was in buffer, args will be null
135 (or (null args) 132 (or (null args)
136 (setq default-directory (file-name-as-directory (car args)) 133 (setq default-directory (file-name-as-directory (car args))
137 args (cdr args))) 134 args (cdr args)))
138 ;; actually process the arguments 135 ;; actually process the arguments
145 ;; in the context of the original buffer is because let does not 142 ;; in the context of the original buffer is because let does not
146 ;; work properly with buffer-local variables. 143 ;; work properly with buffer-local variables.
147 (if (eq (current-buffer) args-buffer) 144 (if (eq (current-buffer) args-buffer)
148 (set-buffer start-buffer))))) 145 (set-buffer start-buffer)))))
149 146
150 (defun empty-args-file () 147 ;;;###autoload
151 "This empties the contents of the file whose name is specified by 148 (defun resume-empty-args-file ()
152 emacs-args-file." 149 "Clear out the file used for transmitting args when Emacs resumes."
153 (save-excursion 150 (save-excursion
154 (set-buffer (get-buffer-create emacs-args-buffer)) 151 (set-buffer (get-buffer-create resume-emacs-args-buffer))
155 (erase-buffer) 152 (erase-buffer)
156 (write-buffer-to-file (current-buffer) emacs-args-file))) 153 (resume-write-buffer-to-file (current-buffer) resume-emacs-args-file)))
157 154
158 (defun write-buffer-to-file (buffer file) 155 (defun resume-write-buffer-to-file (buffer file)
159 "Writes the contents of BUFFER into FILE, if permissions allow." 156 "Writes the contents of BUFFER into FILE, if permissions allow."
160 (if (not (file-writable-p file)) 157 (if (not (file-writable-p file))
161 (error "No permission to write file %s" file)) 158 (error "No permission to write file %s" file))
162 (save-excursion 159 (save-excursion
163 (set-buffer buffer) 160 (set-buffer buffer)