diff options
| -rw-r--r-- | admin/notes/bugtracker | 61 | ||||
| -rw-r--r-- | lisp/ChangeLog | 10 | ||||
| -rw-r--r-- | lisp/calendar/diary-lib.el | 4 | ||||
| -rw-r--r-- | lisp/files.el | 42 | ||||
| -rw-r--r-- | src/ChangeLog | 8 | ||||
| -rw-r--r-- | src/fileio.c | 28 |
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 | ||
| 3 | The Emacs Bug Tracker can be found at http://debbugs.gnu.org/ | 3 | The Emacs Bug Tracker can be found at http://debbugs.gnu.org/ |
| 4 | 4 | ||
| 5 | * Quick-start guide | ||
| 6 | |||
| 7 | This is 95% of all you will ever need. | ||
| 8 | |||
| 9 | ** How do I report a bug? | ||
| 10 | Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org. | ||
| 11 | If you want to Cc someone, use an "X-Debbugs-CC" header instead. | ||
| 12 | |||
| 13 | ** How do I comment on a bug? | ||
| 14 | Reply to a mail on the bug-gnu-emacs list in the normal way. | ||
| 15 | Or send a mail to 123@debbugs.gnu.org. | ||
| 16 | |||
| 17 | If the bug is old and closed, you may have to unarchive it first. | ||
| 18 | Send a mail to control@debbugs.gnu.org with | ||
| 19 | unarchive 123 | ||
| 20 | on the first line of the body. | ||
| 21 | |||
| 22 | ** How do I close a bug? | ||
| 23 | Send a mail to 123-done@debbugs.gnu.org. In the body, explain | ||
| 24 | why the bug is being closed. | ||
| 25 | |||
| 26 | ** How do I set bug meta-data? | ||
| 27 | By mailing commands to control@debbugs.gnu.org. Place commands at the | ||
| 28 | start of the message body, one per line. | ||
| 29 | |||
| 30 | severity 123 serious|important|normal|minor|wishlist | ||
| 31 | tags 123 moreinfo|unreproducible|wontfix|patch | ||
| 32 | |||
| 33 | * More detailed information | ||
| 34 | |||
| 5 | For a list of all bugs, see http://debbugs.gnu.org/db/pa/lemacs.html | 35 | For a list of all bugs, see http://debbugs.gnu.org/db/pa/lemacs.html |
| 6 | This is a static page, updated once a day. There is also a dynamic | 36 | This is a static page, updated once a day. There is also a dynamic |
| 7 | list, generated on request, but since there are many bug reports this | 37 | list, 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)? |
| 111 | Discard mails matching: | 141 | Discard mails matching: |
| 112 | 142 | ||
| 113 | ^X-Emacs-PR-Message: transcript | 143 | ^X-Emacs-PR-Message: (transcript|closed) |
| 114 | |||
| 115 | When 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. |
| 120 | If you reply to reports in the normal way, this should work fine. | 146 | If 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 | |||
| 131 | submitter; they get copies anyway so this will just result in more | 157 | submitter; they get copies anyway so this will just result in more |
| 132 | duplicate mail. | 158 | duplicate mail. |
| 133 | 159 | ||
| 160 | ** Details of closing a bug. | ||
| 161 | (For information only) | ||
| 162 | Sending a mail to 123-done does the following: | ||
| 163 | |||
| 164 | 1) Mark the bug as closed in the database. | ||
| 165 | |||
| 166 | 2) Send a mail to the original submitter telling them that their bug | ||
| 167 | has been closed. This mail has a header: | ||
| 168 | |||
| 169 | X-Emacs-PR-Message: they-closed 123 | ||
| 170 | |||
| 171 | 3) Send a mail to you and to the emacs-bug-tracker list confirming | ||
| 172 | that the bug has been closed. This mail has a header: | ||
| 173 | |||
| 174 | X-Emacs-PR-Message: closed 123 | ||
| 175 | |||
| 176 | 4) Send a copy of your mail to the bug-gnu-emacs list in exactly the | ||
| 177 | same way as if you had sent mail to "123" (sans -done). This mail has | ||
| 178 | headers: | ||
| 179 | |||
| 180 | X-Emacs-PR-Message: cc-closed 123 | ||
| 181 | Mail-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. |
| 135 | There are two ways to set the parameters of bugs in the database | 186 | There 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 @@ | |||
| 1 | 2010-01-27 Stephen Berman <stephen.berman@gmx.net> | ||
| 2 | |||
| 3 | * calendar/diary-lib.el (diary-unhide-everything): Handle narrowed | ||
| 4 | buffers. (Bug#5477) | ||
| 5 | |||
| 6 | 2010-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 | |||
| 1 | 2010-01-26 Dan Nicolaescu <dann@ics.uci.edu> | 11 | 2010-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 | ||
| 6 | 2010-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 | |||
| 6 | 2010-01-25 Jan Djärv <jan.h.d@swipnet.se> | 12 | 2010-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 | ||
| 9331 | 2008-06-10 David De La Harpe Golden <david@harpegolden.net> (tiny change) | 9337 | 2008-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. */ |
| 216 | Lisp_Object Qmove_file_to_trash; | 216 | Lisp_Object Qmove_file_to_trash; |
| 217 | 217 | ||
| 218 | /* Lisp function for recursively copying directories. */ | ||
| 219 | Lisp_Object Qcopy_directory; | ||
| 220 | |||
| 221 | /* Lisp function for recursively deleting directories. */ | ||
| 222 | Lisp_Object Qdelete_directory; | ||
| 223 | |||
| 218 | extern Lisp_Object Vuser_login_name; | 224 | extern 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); |