[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master 796075e: Make use of Trash on macOS (bug#21340)
From: |
Alan Third |
Subject: |
master 796075e: Make use of Trash on macOS (bug#21340) |
Date: |
Sat, 4 Dec 2021 05:45:17 -0500 (EST) |
branch: master
commit 796075ef7e1c7a294fe8c3c36c999c10c2f09d38
Author: Alan Third <alan@idiocy.org>
Commit: Alan Third <alan@idiocy.org>
Make use of Trash on macOS (bug#21340)
* src/nsfns.m (Fsystem_move_file_to_trash): New function.
---
src/nsfns.m | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/src/nsfns.m b/src/nsfns.m
index c2791aa..81019fc 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -2362,6 +2362,47 @@ ns_get_string_resource (void *_rdb, const char *name,
const char *class)
==========================================================================
*/
+#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+/* 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. */)
+ (Lisp_Object filename)
+{
+ Lisp_Object handler;
+ Lisp_Object operation;
+
+ operation = Qdelete_file;
+ if (!NILP (Ffile_directory_p (filename))
+ && NILP (Ffile_symlink_p (filename)))
+ {
+ operation = intern ("delete-directory");
+ filename = Fdirectory_file_name (filename);
+ }
+
+ /* Must have fully qualified file names for moving files to Trash. */
+ filename = Fexpand_file_name (filename, Qnil);
+
+ handler = Ffind_file_name_handler (filename, operation);
+ if (!NILP (handler))
+ return call2 (handler, operation, filename);
+ else
+ {
+ NSFileManager *fm = [NSFileManager defaultManager];
+ BOOL result = NO;
+ NSURL *fileURL = [NSURL fileURLWithPath:[NSString
stringWithLispString:filename]
+ isDirectory:!NILP (Ffile_directory_p
(filename))];
+ if ([fm
respondsToSelector:@selector(trashItemAtURL:resultingItemURL:error:)])
+ result = [fm trashItemAtURL:fileURL resultingItemURL:nil error:nil];
+
+ if (!result)
+ report_file_error ("Removing old name", list1 (filename));
+ }
+ return Qnil;
+}
+#endif
+
DEFUN ("xw-color-defined-p", Fxw_color_defined_p, Sxw_color_defined_p, 1, 2, 0,
doc: /* SKIP: real doc in xfns.c. */)
(Lisp_Object color, Lisp_Object frame)
@@ -3243,6 +3284,10 @@ Default is t. */);
defsubr (&Sx_show_tip);
defsubr (&Sx_hide_tip);
+#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1080
+ defsubr (&Ssystem_move_file_to_trash);
+#endif
+
as_status = 0;
as_script = Qnil;
staticpro (&as_script);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 796075e: Make use of Trash on macOS (bug#21340),
Alan Third <=