This is EmacsApp.m in view mode; [Download] [Up]
/* The Application implementation for Emacs.
For legal stuff see the file COPYRIGHT. */
#import "EmacsApp.h"
@implementation EmacsApp
/* We're ready to start. Size the window apropriately and fire up the emacs
process, possibly editing a file. */
-appDidInit: sender
{
id window;
DPSSetDeadKeysEnabled (DPSGetCurrentContext (), NO);
window = [currentView window];
[window setBackgroundGray: NX_WHITE];
[window removeFromEventMask: NX_KEYUPMASK | NX_FLAGSCHANGEDMASK];
[window makeFirstResponder: currentView];
[window setFrameUsingName: "main"];
[window setFrameAutosaveName: "main"];
[currentView startEmacs: files : nfiles];
if (!strcmp (NXGetDefaultValue ([NXApp appName], "NXAutoLaunch"), "YES")
&& !strcmp (NXGetDefaultValue ([NXApp appName],
"HideOnAutoLaunch"), "YES"))
[self hide: self];
else
[self appDidUnhide: self];
[self setDelegate: self];
return self;
} /* -appDidInit: */
-appDidUnhide: sender
{
#if 0
int eventChannel;
evenChannel = [currentView eventChannel];
if (eventChannel)
fprintf (eventChannel, "(redraw-display)\n");
#endif
[[currentView window] makeKeyAndOrderFront: self];
return self;
} /* -appDidUnhide */
/* Intercept the Quit command and replace it with C-x C-c. */
-terminate: sender
{
if (sender && [currentView quitEmacs])
return self;
return [super terminate: sender];
} /* -terminate: */
-(BOOL) appAcceptsAnotherFile: sender
{
return YES;
} /* appAcceptsAnotherFile: */
/* Stash the name of a file in an instance variable so we can give it to the
child emacs when we fire it up. */
-(BOOL) app: sender openFile: (const char *) path type: (const char *) type
{
if ([currentView emacsOn])
{
/* If emacs was already running, open file in a new buffer. */
return [currentView newFile: path];
}
else
{
files = realloc (files, (nfiles + 1) * sizeof (char *));
files[nfiles++] = strcpy (malloc (1 + strlen (path)), path);
}
return YES;
} /* -app:openFile:type: */
-currentView
{
return currentView;
} /* -currentView */
-fontManager
{
if (!fontManager)
{
fontManager = [FontManager new];
[fontManager setDelegate: self];
}
return fontManager;
} /* -fontManager */
-showFontPanel: sender
{
[[NXApp fontManager] orderFrontFontPanel: self];
[fontManager setSelFont: [currentView font] isMultiple: NO];
return self;
} /* -showFontPanel: */
-(BOOL) fontManager: sender willIncludeFont: (const char *) fontName
{
NXFontMetrics *metrics;
id font;
font = [Font newFont: fontName size: (float) 10];
if (font != nil)
{
metrics = [font readMetrics: NX_FONTHEADER];
if (metrics != NULL)
return metrics->isFixedPitch;
}
return NO;
} /* fontManager:willIncludeFont: */
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.