Here's a new version that takes Matthieu's feedback into account. The lack of user-wide ignore file support isn't a critical error, so I changed the displayed message to that effect. Additionally, I noticed that `buffer' was used instead of `buf' later on in the function.
<<LOG-START>> * lisp/bzr.el (bzr-ignore-setup): Call dvc-make-temp-dir. Remove the temporary directory when done. Display a more informative message if "bzr init; bzr ignored" fails to make the file. Fix use of `buffer' instead of `buf'. * lisp/dvc-core.el (dvc-delete-recursively): New function that recursively removes a file or directory. * lisp/dvc-emacs.el (dvc-emacs-make-temp-dir): New function that is aliased to dvc-make-temp-dir. It creates a temporary directory with a given prefix in the default temp area, returning its location. * lisp/dvc-xemacs.el (dvc-xmas-make-temp-dir): Ditto, but for XEmacs. <<LOG-END>> [VERSION] dvc-dev-bzr bzr (bazaar-ng) 0.8.2 Emacs : GNU Emacs 22.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.8.18) of 2006-07-30 on tuxtanker -- Michael Olson -- FSF Associate Member #652 -- http://www.mwolson.org/ Interests: Emacs Lisp, text markup, protocols -- Jabber: mwolson_at_hcoop.net /` |\ | | | IRC: freenode.net/mwolson: #emacs, #hcoop, #muse, #PurdueLUG |_] | \| |_| Projects: Emacs, Muse, ERC, EMMS, Planner, ErBot, DVC
pgpAXQ3RCnY1M.pgp
Description: PGP signature
=== modified file 'lisp/bzr.el'
--- lisp/bzr.el
+++ lisp/bzr.el
@@ -537,19 +537,19 @@
(buf (or (when (file-exists-p file)
(find-file-noselect file))
;; let bzr create the file.
- (let* ((dir (make-temp-name "dvc-bzr-ignore"))
- (foo (make-directory dir))
- (default-directory dir))
- (dvc-run-dvc-sync 'bzr (list "init")
- :finished 'dvc-null-handler)
- (dvc-run-dvc-sync 'bzr (list "ignored")
- :finished 'dvc-null-handler)
+ (let ((dir (dvc-make-temp-dir "dvc-bzr-ignore")))
+ (let ((default-directory dir))
+ (dvc-run-dvc-sync 'bzr (list "init")
+ :finished 'dvc-null-handler)
+ (dvc-run-dvc-sync 'bzr (list "ignored")
+ :finished 'dvc-null-handler))
+ (dvc-delete-recursively dir)
(if (file-exists-p file)
(find-file-noselect file)
- (message "WARNING: Could not find or create bzr user-wide ignore file.")
+ (message "Your version of bzr does not support a user-wide ignore file.")
nil))))
(ins t))
- (when buffer
+ (when buf
(with-current-buffer buf
(goto-char (point-min))
(if (re-search-forward "^# DVC ignore (don't edit !!)\n\\(\\(.\\|\n\\)*\n\\)# end DVC ignore$" nil 'end)
=== modified file 'lisp/dvc-core.el'
--- lisp/dvc-core.el
+++ lisp/dvc-core.el
@@ -138,6 +138,20 @@
(interactive "e")
(mouse-set-point event)
(,function)))
+
+;; Adapted from `dired-delete-file' in Emacs 22
+(defun dvc-delete-recursively (file)
+ "Delete FILE or directory recursively."
+ (let (files)
+ (if (not (eq t (car (file-attributes file))))
+ (delete-file file)
+ (when (setq files
+ (directory-files
+ file t "^\\([^.]\\|\\.\\([^.]\\|\\..\\)\\).*"))
+ (while files
+ (dvc-delete-recursively (car files))
+ (setq files (cdr files))))
+ (delete-directory file))))
;; --------------------------------------------------------------------------------
;; File selection helpers
=== modified file 'lisp/dvc-emacs.el'
--- lisp/dvc-emacs.el
+++ lisp/dvc-emacs.el
@@ -66,6 +66,16 @@
(forward-line 0)
(1+ (count-lines start (point)))))))
+(defun dvc-emacs-make-temp-dir (prefix)
+ "Make a temporary directory using PREFIX.
+Return the name of the directory."
+ (let ((dir (make-temp-name
+ (expand-file-name prefix temporary-file-directory))))
+ (make-directory dir)
+ dir))
+
+(defalias 'dvc-make-temp-dir 'dvc-emacs-make-temp-dir)
+
(provide 'dvc-emacs)
;; Local Variables:
;; arch-tag: 66b92889-1ce9-4c1d-818a-8bd5ee499091
=== modified file 'lisp/dvc-xemacs.el'
--- lisp/dvc-xemacs.el
+++ lisp/dvc-xemacs.el
@@ -315,6 +315,15 @@
(unless (functionp 'diff-hunk-prev)
(defalias 'diff-hunk-prev 'diff-prev-hunk))
+(defun dvc-xmas-make-temp-dir (prefix)
+ "Make a temporary directory using PREFIX.
+Return the name of the directory."
+ (let ((dir (make-temp-name (expand-file-name prefix (temp-directory)))))
+ (make-directory dir)
+ dir))
+
+(defalias 'dvc-make-temp-dir 'dvc-xmas-make-temp-dir)
+
;; From Gnus.
(defun dvc-xmas-move-overlay (extent start end &optional buffer)
(set-extent-endpoints extent start end buffer))
_______________________________________________ Dvc-dev mailing list [email protected] https://mail.gna.org/listinfo/dvc-dev
