aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/notes/bugtracker61
-rw-r--r--lisp/ChangeLog10
-rw-r--r--lisp/calendar/diary-lib.el4
-rw-r--r--lisp/files.el42
-rw-r--r--src/ChangeLog8
-rw-r--r--src/fileio.c28
6 files changed, 128 insertions, 25 deletions
diff --git a/admin/notes/bugtracker b/admin/notes/bugtracker
index 1a9f6f2bd4c..964cc869b8f 100644
--- a/admin/notes/bugtracker
+++ b/admin/notes/bugtracker
@@ -2,6 +2,36 @@ NOTES ON THE EMACS BUG TRACKER -*- outline -*-
2 2
3The Emacs Bug Tracker can be found at http://debbugs.gnu.org/ 3The Emacs Bug Tracker can be found at http://debbugs.gnu.org/
4 4
5* Quick-start guide
6
7This is 95% of all you will ever need.
8
9** How do I report a bug?
10Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org.
11If you want to Cc someone, use an "X-Debbugs-CC" header instead.
12
13** How do I comment on a bug?
14Reply to a mail on the bug-gnu-emacs list in the normal way.
15Or send a mail to 123@debbugs.gnu.org.
16
17If the bug is old and closed, you may have to unarchive it first.
18Send a mail to control@debbugs.gnu.org with
19unarchive 123
20on the first line of the body.
21
22** How do I close a bug?
23Send a mail to 123-done@debbugs.gnu.org. In the body, explain
24why the bug is being closed.
25
26** How do I set bug meta-data?
27By mailing commands to control@debbugs.gnu.org. Place commands at the
28start of the message body, one per line.
29
30severity 123 serious|important|normal|minor|wishlist
31tags 123 moreinfo|unreproducible|wontfix|patch
32
33* More detailed information
34
5For a list of all bugs, see http://debbugs.gnu.org/db/pa/lemacs.html 35For a list of all bugs, see http://debbugs.gnu.org/db/pa/lemacs.html
6This is a static page, updated once a day. There is also a dynamic 36This is a static page, updated once a day. There is also a dynamic
7list, generated on request, but since there are many bug reports this 37list, generated on request, but since there are many bug reports this
@@ -110,11 +140,7 @@ Remember to fix FOO, as discussed on emacs-devel at http://... .
110** Not interested in tracker control messages (tags being set, etc)? 140** Not interested in tracker control messages (tags being set, etc)?
111Discard mails matching: 141Discard mails matching:
112 142
113^X-Emacs-PR-Message: transcript 143^X-Emacs-PR-Message: (transcript|closed)
114
115When you close a bug, you get a message matching:
116
117^X-Emacs-PR-Message: closed
118 144
119** How to avoid multiple copies of mails. 145** How to avoid multiple copies of mails.
120If you reply to reports in the normal way, this should work fine. 146If you reply to reports in the normal way, this should work fine.
@@ -131,6 +157,31 @@ There is no need to cc the address without the "-done" part or the
131submitter; they get copies anyway so this will just result in more 157submitter; they get copies anyway so this will just result in more
132duplicate mail. 158duplicate mail.
133 159
160** Details of closing a bug.
161(For information only)
162Sending a mail to 123-done does the following:
163
1641) Mark the bug as closed in the database.
165
1662) Send a mail to the original submitter telling them that their bug
167has been closed. This mail has a header:
168
169X-Emacs-PR-Message: they-closed 123
170
1713) Send a mail to you and to the emacs-bug-tracker list confirming
172that the bug has been closed. This mail has a header:
173
174X-Emacs-PR-Message: closed 123
175
1764) Send a copy of your mail to the bug-gnu-emacs list in exactly the
177same way as if you had sent mail to "123" (sans -done). This mail has
178headers:
179
180X-Emacs-PR-Message: cc-closed 123
181Mail-Followup-To: 123@debbugs.gnu.org, ...
182
183(This is Emacs-specific. Normally the bug list gets the same mail as in 3).
184
134** Setting bug parameters. 185** Setting bug parameters.
135There are two ways to set the parameters of bugs in the database 186There are two ways to set the parameters of bugs in the database
136(tags, severity level, etc). When you report a new bug, you can 187(tags, severity level, etc). When you report a new bug, you can
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 5097af5c1ed..8ac8d5ed450 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,13 @@
12010-01-27 Stephen Berman <stephen.berman@gmx.net>
2
3 * calendar/diary-lib.el (diary-unhide-everything): Handle narrowed
4 buffers. (Bug#5477)
5
62010-01-27 David De La Harpe Golden <david@harpegolden.net>
7
8 * files.el (delete-directory): Handle moving to trash without
9 first doing recursion (Bug#5436).
10
12010-01-26 Dan Nicolaescu <dann@ics.uci.edu> 112010-01-26 Dan Nicolaescu <dann@ics.uci.edu>
2 12
3 * vc-hooks.el (vc-path): Mark as obsolete. 13 * vc-hooks.el (vc-path): Mark as obsolete.
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index e1400cc2fa6..8fb464aa7e6 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -804,7 +804,9 @@ LIST-ONLY is non-nil, in which case it just returns the list."
804(defun diary-unhide-everything () 804(defun diary-unhide-everything ()
805 "Show all invisible text in the diary." 805 "Show all invisible text in the diary."
806 (kill-local-variable 'diary-selective-display) 806 (kill-local-variable 'diary-selective-display)
807 (remove-overlays (point-min) (point-max) 'invisible 'diary) 807 (save-restriction ; bug#5477
808 (widen)
809 (remove-overlays (point-min) (point-max) 'invisible 'diary))
808 (kill-local-variable 'mode-line-format)) 810 (kill-local-variable 'mode-line-format))
809 811
810(defvar original-date) ; bound in diary-list-entries 812(defvar original-date) ; bound in diary-list-entries
diff --git a/lisp/files.el b/lisp/files.el
index 99e818643d0..d372ff3420a 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -4665,21 +4665,35 @@ If RECURSIVE is non-nil, all files in DIRECTORY are deleted as well."
4665 ;; delete-directory handler. 4665 ;; delete-directory handler.
4666 (setq directory (directory-file-name (expand-file-name directory))) 4666 (setq directory (directory-file-name (expand-file-name directory)))
4667 (let ((handler (find-file-name-handler directory 'delete-directory))) 4667 (let ((handler (find-file-name-handler directory 'delete-directory)))
4668 (if handler 4668 (cond
4669 (funcall handler 'delete-directory directory recursive) 4669 (handler
4670 (funcall handler 'delete-directory directory recursive))
4671 (delete-by-moving-to-trash
4672 ;; Only move non-empty dir to trash if recursive deletion was
4673 ;; requested. This mimics the non-`delete-by-moving-to-trash'
4674 ;; case, where the operation fails in delete-directory-internal.
4675 ;; As `move-file-to-trash' trashes directories (empty or
4676 ;; otherwise) as a unit, we do not need to recurse here.
4677 (if (and (not recursive)
4678 ;; Check if directory is empty apart from "." and "..".
4679 (directory-files
4680 directory 'full directory-files-no-dot-files-regexp))
4681 (error "Directory is not empty, not moving to trash")
4682 (move-file-to-trash directory)))
4683 ;; Otherwise, call outselves recursively if needed.
4684 (t
4670 (if (and recursive (not (file-symlink-p directory))) 4685 (if (and recursive (not (file-symlink-p directory)))
4671 (mapc 4686 (mapc (lambda (file)
4672 (lambda (file) 4687 ;; This test is equivalent to
4673 ;; This test is equivalent to 4688 ;; (and (file-directory-p fn) (not (file-symlink-p fn)))
4674 ;; (and (file-directory-p fn) (not (file-symlink-p fn))) 4689 ;; but more efficient
4675 ;; but more efficient 4690 (if (eq t (car (file-attributes file)))
4676 (if (eq t (car (file-attributes file))) 4691 (delete-directory file recursive)
4677 (delete-directory file recursive) 4692 (delete-file file)))
4678 (delete-file file))) 4693 ;; We do not want to delete "." and "..".
4679 ;; We do not want to delete "." and "..". 4694 (directory-files
4680 (directory-files 4695 directory 'full directory-files-no-dot-files-regexp)))
4681 directory 'full directory-files-no-dot-files-regexp))) 4696 (delete-directory-internal directory)))))
4682 (delete-directory-internal directory))))
4683 4697
4684(defun copy-directory (directory newname &optional keep-time parents) 4698(defun copy-directory (directory newname &optional keep-time parents)
4685 "Copy DIRECTORY to NEWNAME. Both args must be strings. 4699 "Copy DIRECTORY to NEWNAME. Both args must be strings.
diff --git a/src/ChangeLog b/src/ChangeLog
index 1b1a9c1ee73..eb996b92a73 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -3,6 +3,12 @@
3 * regex.c (analyse_first): Fix setting of fastmap for unibyte 3 * regex.c (analyse_first): Fix setting of fastmap for unibyte
4 pattern string. 4 pattern string.
5 5
62010-01-27 David De La Harpe Golden <david@harpegolden.net>
7
8 * fileio.c (Frename_file): Call copy-directory and
9 delete-directory for directories, in order to handle cross-device
10 renaming (Bug#3353).
11
62010-01-25 Jan Djärv <jan.h.d@swipnet.se> 122010-01-25 Jan Djärv <jan.h.d@swipnet.se>
7 13
8 * xfns.c (Fx_create_frame): If frame height is too big, try 14 * xfns.c (Fx_create_frame): If frame height is too big, try
@@ -9328,7 +9334,7 @@
9328 (syms_of_xterm): Don't declare it any more. 9334 (syms_of_xterm): Don't declare it any more.
9329 (x_draw_glyph_string): Adjust to the new name. 9335 (x_draw_glyph_string): Adjust to the new name.
9330 9336
93312008-06-10 David De La Harpe Golden <david@harpegolden.net> (tiny change) 93372008-06-10 David De La Harpe Golden <david@harpegolden.net>
9332 9338
9333 * xterm.c (x_underline_minimum_display_offset): New var. 9339 * xterm.c (x_underline_minimum_display_offset): New var.
9334 (x_draw_glyph_string): Use it. 9340 (x_draw_glyph_string): Use it.
diff --git a/src/fileio.c b/src/fileio.c
index d6cb814641b..36eaf7db533 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -215,6 +215,12 @@ Lisp_Object Qdelete_by_moving_to_trash;
215/* Lisp function for moving files to trash. */ 215/* Lisp function for moving files to trash. */
216Lisp_Object Qmove_file_to_trash; 216Lisp_Object Qmove_file_to_trash;
217 217
218/* Lisp function for recursively copying directories. */
219Lisp_Object Qcopy_directory;
220
221/* Lisp function for recursively deleting directories. */
222Lisp_Object Qdelete_directory;
223
218extern Lisp_Object Vuser_login_name; 224extern Lisp_Object Vuser_login_name;
219 225
220#ifdef WINDOWSNT 226#ifdef WINDOWSNT
@@ -2241,7 +2247,11 @@ This is what happens in interactive use with M-x. */)
2241 && (NILP (Fstring_equal (Fdowncase (file), Fdowncase (newname)))) 2247 && (NILP (Fstring_equal (Fdowncase (file), Fdowncase (newname))))
2242#endif 2248#endif
2243 ) 2249 )
2244 newname = Fexpand_file_name (Ffile_name_nondirectory (file), newname); 2250 {
2251 Lisp_Object fname = NILP (Ffile_directory_p (file))
2252 ? file : Fdirectory_file_name (file);
2253 newname = Fexpand_file_name (Ffile_name_nondirectory (fname), newname);
2254 }
2245 else 2255 else
2246 newname = Fexpand_file_name (newname, Qnil); 2256 newname = Fexpand_file_name (newname, Qnil);
2247 2257
@@ -2279,15 +2289,21 @@ This is what happens in interactive use with M-x. */)
2279 NILP (ok_if_already_exists) ? Qnil : Qt); 2289 NILP (ok_if_already_exists) ? Qnil : Qt);
2280 else 2290 else
2281#endif 2291#endif
2292 if (Ffile_directory_p (file))
2293 call4 (Qcopy_directory, file, newname, Qt, Qnil);
2294 else
2295 /* We have already prompted if it was an integer, so don't
2296 have copy-file prompt again. */
2282 Fcopy_file (file, newname, 2297 Fcopy_file (file, newname,
2283 /* We have already prompted if it was an integer,
2284 so don't have copy-file prompt again. */
2285 NILP (ok_if_already_exists) ? Qnil : Qt, 2298 NILP (ok_if_already_exists) ? Qnil : Qt,
2286 Qt, Qt); 2299 Qt, Qt);
2287 2300
2288 count = SPECPDL_INDEX (); 2301 count = SPECPDL_INDEX ();
2289 specbind (Qdelete_by_moving_to_trash, Qnil); 2302 specbind (Qdelete_by_moving_to_trash, Qnil);
2290 Fdelete_file (file); 2303 if (Ffile_directory_p (file))
2304 call2 (Qdelete_directory, file, Qt);
2305 else
2306 Fdelete_file (file);
2291 unbind_to (count, Qnil); 2307 unbind_to (count, Qnil);
2292 } 2308 }
2293 else 2309 else
@@ -5727,6 +5743,10 @@ When non-nil, the function `move-file-to-trash' will be used by
5727 Qdelete_by_moving_to_trash = intern_c_string ("delete-by-moving-to-trash"); 5743 Qdelete_by_moving_to_trash = intern_c_string ("delete-by-moving-to-trash");
5728 Qmove_file_to_trash = intern_c_string ("move-file-to-trash"); 5744 Qmove_file_to_trash = intern_c_string ("move-file-to-trash");
5729 staticpro (&Qmove_file_to_trash); 5745 staticpro (&Qmove_file_to_trash);
5746 Qcopy_directory = intern_c_string ("copy-directory");
5747 staticpro (&Qcopy_directory);
5748 Qdelete_directory = intern_c_string ("delete-directory");
5749 staticpro (&Qdelete_directory);
5730 5750
5731 defsubr (&Sfind_file_name_handler); 5751 defsubr (&Sfind_file_name_handler);
5732 defsubr (&Sfile_name_directory); 5752 defsubr (&Sfile_name_directory);