Mercurial > emacs
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) |