Thanks Alan. I might be a little over my head here, as I’m not sure how to apply a patch. I presume I would have to build from source...
On Sat, Nov 02, 2019 at 06:19:27AM -0400, Michael Dixon wrote: On macOS Catalina, if I attempt to open a file using * File > Open * The toolbar button * "Open a File" on the splash screen
Emacs crashes. I am using the Homebrew formula with GUI. I have tried with other Mac Emacs distributions, such as GNU Emacs for Mac OS X and the Homebrew emacs-plus formula with the same result.
Here's the part of the macOS crash report that I think is useful:
Application Specific Information: *** Terminating app due to uncaught exception 'NSObjectNotAvailableException', reason: 'EmacsSavePanel is not a supported subclass for sandboxing' abort() called terminating with uncaught exception of type NSException
That sounds suspiciously like the fact we’ve subclassed the save panelclass means it’s no longer considered ‘safe’ by Cocoa.I suspect there’s no immediate work‐around other than trying to workout what about EmacsSavePanel is problematic.Can you try applying the patch below? I don’t think it’ll fixanything, but it should at least rule out that it’s something in thesefunctions that’s causing this.modified src/nsfns.m@@ -3067,25 +3067,25 @@ The position is returned as a cons cell (X . Y) of the}@implementation EmacsSavePanel-- (BOOL)performKeyEquivalent:(NSEvent *)theEvent-{- BOOL ret = handlePanelKeys (self, theEvent);- if (! ret)- ret = [super performKeyEquivalent:theEvent];- return ret;-}+// - (BOOL)performKeyEquivalent:(NSEvent *)theEvent+// {+// BOOL ret = handlePanelKeys (self, theEvent);+// if (! ret)+// ret = [super performKeyEquivalent:theEvent];+// return ret;+// }@end@implementation EmacsOpenPanel-- (BOOL)performKeyEquivalent:(NSEvent *)theEvent-{- // NSOpenPanel inherits NSSavePanel, so passing self is OK.- BOOL ret = handlePanelKeys (self, theEvent);- if (! ret)- ret = [super performKeyEquivalent:theEvent];- return ret;-}+// - (BOOL)performKeyEquivalent:(NSEvent *)theEvent+// {+// // NSOpenPanel inherits NSSavePanel, so passing self is OK.+// BOOL ret = handlePanelKeys (self, theEvent);+// if (! ret)+// ret = [super performKeyEquivalent:theEvent];+// return ret;+// }@end-- Alan Third
|