Mercurial > hg > xemacs-beta
diff lisp/energize/write-file.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/energize/write-file.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,56 @@ +; If you load this in your .emacs, write-file will be redefined to do +; what is described below. If you like it please tell us so +; that we could provide it by default. +; +; The function implements semantic 1. Comment out the lines marked -2 +; to get semantic 2 and comment out the lines marked -3 to get semantic 3. +; +; semantic 1: If it is assumed that C-x C-w _should_ rename the +; buffer as well as writing to the _new_ file, +; Energize is concerned, this should look as if I had copied the +; buffer, reverted the original to the disk image, and killed the +; reverted buffer, leaving only the new buffer without +; Energize dependencies or attachments. +; +; semantic 2: ... I would +; either want it to simply create the new file, leaving the buffer +; alone... +; +; semantic 3: ... or second best creating the file and a new buffer for it, +; so that I had two buffers, one for each named version of the +; file. + + +(defun energize-write-file (filename) + "Write the current buffer into file FILENAME. +Revert and kill the current buffer and replaces it by a new buffer +showing FILENAME." + (interactive + (list (if buffer-file-name + (read-file-name "Energize write file: " + nil nil nil nil) + (read-file-name "Energize write file: " + (cdr (assq 'default-directory + (buffer-local-variables))) + nil nil (buffer-name))))) + (if (and (file-exists-p filename) + (not + (yes-or-no-p (format "File %s already exists. Overwrite it? " + filename)))) + (error "Aborted")) + (write-region (point-min) (point-max) filename nil nil) + (if buffer-file-name ; -2 -3 + (revert-buffer t t)) ; -2 -3 + (kill-buffer nil) ; -2 -3 + (set-window-buffer ; -2 + (selected-window) ; -2 + (find-file-noselect filename)) ; -2 + ) + + +; Pick just one of the following +; This uses the new function for all buffers +(define-key ctl-x-map '(control w) 'energize-write-file) +; This preserves old behavior for non-energize buffers +; (energize-advise-function 'write-file) +