]> git.eshelyaron.com Git - emacs.git/commitdiff
* nsterm.m (not_in_argv): New function.
authorJan Djärv <jan.h.d@swipnet.se>
Sat, 11 Aug 2012 09:10:08 +0000 (11:10 +0200)
committerJan Djärv <jan.h.d@swipnet.se>
Sat, 11 Aug 2012 09:10:08 +0000 (11:10 +0200)
(application:openFile, application:openTempFile:):
(application:openFileWithoutUI:, application:openFiles:): Open file
if not_in_argv returns non-zero.

Fixes: debbugs:12171
src/ChangeLog
src/nsterm.m

index b60ab6ec56fc8de506b8c06e11bdfe9746bdc0d0..7f89fcbe867741dc47f9f5ecb4ae4acb40b9e58d 100644 (file)
@@ -1,5 +1,10 @@
 2012-08-11  Jan Djärv  <jan.h.d@swipnet.se>
 
+       * nsterm.m (not_in_argv): New function.
+       (application:openFile,  application:openTempFile:):
+       (application:openFileWithoutUI:, application:openFiles:): Open file
+       if not_in_argv returns non-zero (bug#12171).
+
        * gtkutil.c (gtk_font_chooser_dialog_new, GTK_FONT_CHOOSER)
        (gtk_font_chooser_set_font, gtk_font_chooser_get_font): Define
        for Gtk+ versions less than 3.2.
index 807ff5642139b92b3b8fdea179f19c99027210d7..b99241f4e15bdb7c339beb42d8f47ba2a09d065a 100644 (file)
@@ -4448,11 +4448,20 @@ ns_term_shutdown (int sig)
     return NSTerminateNow;  /* just in case */
 }
 
+static int
+not_in_argv (NSString *arg)
+{
+  int k;
+  const char *a = [arg UTF8String];
+  for (k = 1; k < initial_argc; ++k)
+    if (strcmp (a, initial_argv[k]) == 0) return 0;
+  return 1;
+}
 
 /*   Notification from the Workspace to open a file */
 - (BOOL)application: sender openFile: (NSString *)file
 {
-  if (ns_do_open_file)
+  if (ns_do_open_file || not_in_argv (file))
     [ns_pending_files addObject: file];
   return YES;
 }
@@ -4461,7 +4470,7 @@ ns_term_shutdown (int sig)
 /*   Open a file as a temporary file */
 - (BOOL)application: sender openTempFile: (NSString *)file
 {
-  if (ns_do_open_file)
+  if (ns_do_open_file || not_in_argv (file))
     [ns_pending_files addObject: file];
   return YES;
 }
@@ -4470,25 +4479,22 @@ ns_term_shutdown (int sig)
 /*   Notification from the Workspace to open a file noninteractively (?) */
 - (BOOL)application: sender openFileWithoutUI: (NSString *)file
 {
-  if (ns_do_open_file)
+  if (ns_do_open_file || not_in_argv (file))
     [ns_pending_files addObject: file];
   return YES;
 }
 
-
 /*   Notification from the Workspace to open multiple files */
 - (void)application: sender openFiles: (NSArray *)fileList
 {
-  /* Don't open files from the command line, Cocoa parses the command line
-     wrong anyway, --option value tries to open value if --option is the last
-     option.  */
-  if (ns_do_open_file)
-    {
-      NSEnumerator *files = [fileList objectEnumerator];
-      NSString *file;
-      while ((file = [files nextObject]) != nil)
-        [ns_pending_files addObject: file];
-    }
+  NSEnumerator *files = [fileList objectEnumerator];
+  NSString *file;
+  /* Don't open files from the command line unconditionally,
+     Cocoa parses the command line wrong, --option value tries to open value
+     if --option is the last option.  */
+  while ((file = [files nextObject]) != nil) 
+    if (ns_do_open_file || not_in_argv (file))
+      [ns_pending_files addObject: file];
   
   [self replyToOpenOrPrint: NSApplicationDelegateReplySuccess];