[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/w32fns.c,v
From: |
Jason Rumney |
Subject: |
[Emacs-diffs] Changes to emacs/src/w32fns.c,v |
Date: |
Wed, 02 Jul 2008 13:19:16 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Jason Rumney <jasonr> 08/07/02 13:19:09
Index: src/w32fns.c
===================================================================
RCS file: /sources/emacs/emacs/src/w32fns.c,v
retrieving revision 1.337
retrieving revision 1.338
diff -u -b -r1.337 -r1.338
--- src/w32fns.c 28 Jun 2008 23:54:27 -0000 1.337
+++ src/w32fns.c 2 Jul 2008 13:19:07 -0000 1.338
@@ -63,6 +63,10 @@
#include "font.h"
#include "w32font.h"
+#ifndef FOF_NO_CONNECTED_ELEMENTS
+#define FOF_NO_CONNECTED_ELEMENTS 0x2000
+#endif
+
void syms_of_w32fns ();
void globals_of_w32fns ();
@@ -6208,6 +6212,60 @@
}
+/* Moving files to the system recycle bin.
+ Used by `move-file-to-trash' instead of the default moving to ~/.Trash */
+DEFUN ("system-move-file-to-trash", Fsystem_move_file_to_trash,
+ Ssystem_move_file_to_trash, 1, 1, 0,
+ doc: /* Move file or directory named FILENAME to the recycle bin. */)
+ (filename)
+ Lisp_Object filename;
+{
+ Lisp_Object handler;
+ Lisp_Object encoded_file;
+ Lisp_Object operation;
+
+ operation = Qdelete_file;
+ if (!NILP (Ffile_directory_p (filename))
+ && NILP (Ffile_symlink_p (filename)))
+ {
+ operation = Qdelete_directory;
+ filename = Fdirectory_file_name (filename);
+ }
+ filename = Fexpand_file_name (filename, Qnil);
+
+ handler = Ffind_file_name_handler (filename, operation);
+ if (!NILP (handler))
+ return call2 (handler, operation, filename);
+
+ encoded_file = ENCODE_FILE (filename);
+
+ {
+ const char * path;
+ SHFILEOPSTRUCT file_op;
+ char tmp_path[MAX_PATH + 1];
+
+ path = map_w32_filename (SDATA (encoded_file), NULL);
+
+ /* On Windows, write permission is required to delete/move files. */
+ _chmod (path, 0666);
+
+ bzero (tmp_path, sizeof (tmp_path));
+ strcpy (tmp_path, path);
+
+ bzero (&file_op, sizeof (file_op));
+ file_op.hwnd = HWND_DESKTOP;
+ file_op.wFunc = FO_DELETE;
+ file_op.pFrom = tmp_path;
+ file_op.fFlags = FOF_SILENT | FOF_NOCONFIRMATION | FOF_ALLOWUNDO
+ | FOF_NOERRORUI | FOF_NO_CONNECTED_ELEMENTS;
+ file_op.fAnyOperationsAborted = FALSE;
+
+ if (SHFileOperation (&file_op) != 0)
+ report_file_error ("Removing old name", list1 (filename));
+ }
+ return Qnil;
+}
+
/***********************************************************************
w32 specialized functions
@@ -7241,6 +7299,7 @@
staticpro (&last_show_tip_args);
defsubr (&Sx_file_dialog);
+ defsubr (&Ssystem_move_file_to_trash);
}
- [Emacs-diffs] Changes to emacs/src/w32fns.c,v,
Jason Rumney <=
- [Emacs-diffs] Changes to emacs/src/w32fns.c,v, Juanma Barranquero, 2008/07/07
- [Emacs-diffs] Changes to emacs/src/w32fns.c,v, Chong Yidong, 2008/07/08
- [Emacs-diffs] Changes to emacs/src/w32fns.c,v, Jason Rumney, 2008/07/14
- [Emacs-diffs] Changes to emacs/src/w32fns.c,v, Adrian Robert, 2008/07/15
- [Emacs-diffs] Changes to emacs/src/w32fns.c,v, Jason Rumney, 2008/07/15
- [Emacs-diffs] Changes to emacs/src/w32fns.c,v, Dan Nicolaescu, 2008/07/30