Browse Source

Better backup files for remember.

Carsten Dominik 16 years ago
parent
commit
f8ae635ba3
2 changed files with 37 additions and 6 deletions
  1. 7 0
      lisp/ChangeLog
  2. 30 6
      lisp/org-remember.el

+ 7 - 0
lisp/ChangeLog

@@ -1,5 +1,12 @@
 2009-03-26  Carsten Dominik  <carsten.dominik@gmail.com>
 2009-03-26  Carsten Dominik  <carsten.dominik@gmail.com>
 
 
+	* org-remember.el (org-remember-finalize): Do not set buffer file
+	name to nil.
+	(org-remember-handler): Mark buffer as unmodified.
+	(org-remember-handler): Delete backup file and show message about
+	remaining backup files.
+	(org-remember-auto-remove-backup-files): New option.
+
 	* org.el (org-store-link): Use buffer name as link description in
 	* org.el (org-store-link): Use buffer name as link description in
 	w3-mode buffers.
 	w3-mode buffers.
 	(org-ido-switchb): Fix argument bug for completion.
 	(org-ido-switchb): Fix argument bug for completion.

+ 30 - 6
lisp/org-remember.el

@@ -232,12 +232,24 @@ user each time a remember buffer with a running clock is filed away.  "
   "Directory where to store all remember buffers, for backup purposes.
   "Directory where to store all remember buffers, for backup purposes.
 After a remember buffer has been stored successfully, the backup file
 After a remember buffer has been stored successfully, the backup file
 will be removed.  However, if you forget to finish the remember process,
 will be removed.  However, if you forget to finish the remember process,
-the file will remain there."
+the file will remain there.
+See also `org-remember-auto-remove-backup-files'."
   :group 'org-remember
   :group 'org-remember
   :type '(choice
   :type '(choice
 	  (const :tag "No backups" nil)
 	  (const :tag "No backups" nil)
 	  (directory :tag "Directory")))
 	  (directory :tag "Directory")))
 
 
+(defcustom org-remember-auto-remove-backup-files t
+  "Non-nil means, remove remember backup files after successfully storage.
+When remember is finished successfully, with storing the note at the
+desired target, remove the backup files related to this remember process
+and show a message about remaining backup files, from previous, unfinished
+remember sessions.
+Backup files will only be made at all, when `org-remember-backup-directory'
+is set."
+  :group 'org-remember
+  :type 'boolean)
+
 (defvar annotation) ; from remember.el, dynamically scoped in `remember-mode'
 (defvar annotation) ; from remember.el, dynamically scoped in `remember-mode'
 (defvar initial)    ; from remember.el, dynamically scoped in `remember-mode'
 (defvar initial)    ; from remember.el, dynamically scoped in `remember-mode'
 
 
@@ -630,8 +642,7 @@ from that hook."
 			(y-or-n-p "The clock is running in this buffer.  Clock out now? "))))
 			(y-or-n-p "The clock is running in this buffer.  Clock out now? "))))
       (let (org-log-note-clock-out) (org-clock-out))))
       (let (org-log-note-clock-out) (org-clock-out))))
   (when buffer-file-name
   (when buffer-file-name
-    (save-buffer)
+    (save-buffer))
-    (setq buffer-file-name nil))
   (remember-finalize))
   (remember-finalize))
 
 
 (defun org-remember-kill ()
 (defun org-remember-kill ()
@@ -826,6 +837,7 @@ See also the variable `org-reverse-note-order'."
       (goto-char (point-min))
       (goto-char (point-min))
       (setq txt (buffer-string))
       (setq txt (buffer-string))
       (org-save-markers-in-region (point-min) (point-max))
       (org-save-markers-in-region (point-min) (point-max))
+      (set-buffer-modified-p nil)
       (when (and (eq org-remember-interactive-interface 'refile)
       (when (and (eq org-remember-interactive-interface 'refile)
 		 (not fastp))
 		 (not fastp))
 	(org-refile nil (or visiting (find-file-noselect file)))
 	(org-refile nil (or visiting (find-file-noselect file)))
@@ -978,9 +990,21 @@ See also the variable `org-reverse-note-order'."
 		       (not (equal (marker-buffer org-clock-marker)
 		       (not (equal (marker-buffer org-clock-marker)
 				   (current-buffer))))
 				   (current-buffer))))
 		  (kill-buffer (current-buffer))))
 		  (kill-buffer (current-buffer))))
-	    (when backup-file
+	    (when org-remember-auto-remove-backup-files
-	      (delete-file backup-file)))))))
+	      (when backup-file
-
+		(ignore-errors
+		  (delete-file backup-file)
+		  (delete-file (concat backup-file "~"))))
+	      (when org-remember-backup-directory
+		(let ((n (length
+			  (directory-files
+			   org-remember-backup-directory nil
+			   "^remember-.*[0-9]$"))))
+		  (when (> n 0)
+		    (message
+		     "%d backup files (unfinished remember calls) in %s" 
+		     n org-remember-backup-directory))))))))))
+  
   t)    ;; return t to indicate that we took care of this note.
   t)    ;; return t to indicate that we took care of this note.
 
 
 (defun org-do-remember (&optional initial)
 (defun org-do-remember (&optional initial)