ftp.nice.ch/pub/next/tools/frontends/Emacs.3.0.1.s.tar.gz#/Emacs-3.0.1/EmacsApp.m

This is EmacsApp.m in view mode; [Download] [Up]

/* The Application implementation for Emacs.

   For legal stuff see the file COPYRIGHT.  */

#import "EmacsApp.h"
#import "EditListener.h"

@implementation EmacsApp

  /* Some things have to be taken care of before we start up.		   */
-appWillInit: sender
{
  /* Stuff to handle opening up a afile and posistioning the cursor at a
     specific line number.						   */
  editListener = [[EditListener alloc] init];
  [NXApp setAppListener:editListener];
  return self;
}

  /* 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];

  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
{
  return [currentView newFile: path];
} /* -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: */

-(int)openFile : (char *) fileName
	onHost : (char *) hName
	atTrueLine : (int) line
{
  return [currentView openFile:fileName onHost:hName atTrueLine:line];
}

-(int)openFile : (char *) fileName
	onHost : (char *) hName
	fromTrueLine : (int) line1
	to : (int) line2
{
  return [currentView openFile:fileName onHost:hName fromTrueLine:line1
		      to:line2];
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.