Lisp_Object Qalt, Qcontrol, Qhyper, Qmeta, Qsuper;
extern Lisp_Object Qcursor_color, Qcursor_type, Qns;
-
-/* Some preferences equivalent to those set by X resources under X are
- managed through the OpenStep defaults system. We depart from X
- behavior and refuse to read defaults when started under these
- options. */
-
-/* Set in emacs.c. */
-char ns_no_defaults;
-
/* Specifies which emacs modifier should be generated when NS receives
the Alternate modifer. May be Qnone or any of the modifier lisp symbols. */
Lisp_Object ns_alternate_modifier;
no way to control this behavior. */
float ns_antialias_threshold;
-/* Controls use of an undocumented CG function to do Quickdraw-style font
- smoothing (less heavy) instead of regular Quartz smoothing. */
-Lisp_Object ns_use_qd_smoothing;
-
/* Used to pick up AppleHighlightColor on OS X */
-Lisp_Object ns_use_system_highlight_color;
NSString *ns_selection_color;
/* Confirm on exit. */
Lisp_Object ns_confirm_quit;
NSArray *ns_send_types =0, *ns_return_types =0, *ns_drag_types =0;
+NSString *ns_app_name = @"Emacs"; /* default changed later */
/* Display variables */
struct ns_display_info *x_display_list; /* Chain of existing displays */
struct nsfont_info *ns_tmp_font; /* FIXME */
/*static int debug_lock = 0; */
-#ifdef NS_IMPL_COCOA
-/* This undocumented Quartz function controls how fonts are anti-aliased.
- (Found from code in Mac wxWindows impl, discovered by running `nm' on
- the "QD" framework.)
- Mode 0 is normal anti-aliasing, mode 1 is no anti-aliasing, and mode 2 is
- 4-bit pixel-aligned anti-aliasing (the old QuickDraw standard). */
-extern void CGContextSetFontRenderingMode (CGContextRef cg, int v);
-#endif
-
-
/* event loop */
static BOOL send_appdefined = YES;
static NSEvent *last_appdefined_event = 0;
[e buttonNumber] - 1)
/* Convert the time field to a timestamp in milliseconds. */
-#ifdef NS_IMPL_GNUSTEP
-/* Apple says timestamp is in seconds, but GNUstep seems to be returning msec */
-#define EV_TIMESTAMP(e) ([e timestamp])
-#else
#define EV_TIMESTAMP(e) ([e timestamp] * 1000)
-#endif /* not gnustep */
/* This is a piece of code which is common to all the event handling
methods. Maybe it should even be a function. */
}
if ([resourcePaths length] > 0)
setenv ("EMACSLOADPATH", [resourcePaths UTF8String], 1);
-/*NSLog (@"loadPath: '%s'\n", resourcePaths); */
+/*NSLog (@"loadPath: '%@'\n", resourcePaths); */
}
if (!getenv ("EMACSPATH"))
resourcePath = [resourceDir stringByAppendingPathComponent: @"info"];
if ([fileManager fileExistsAtPath: resourcePath isDirectory: &isDir])
if (isDir)
- setenv ("INFOPATH", [resourcePath UTF8String], 1);
+ setenv ("INFOPATH", [[resourcePath stringByAppendingString: @":"]
+ UTF8String], 1);
+ /* Note, extra colon needed to cause merge w/later user additions. */
}
}
NSTRACE (ns_reset_terminal_modes);
}
+
static void
ns_set_terminal_modes (struct terminal *terminal)
/* Externally called as hook */
if (xoff < 100)
f->left_pos = 100; /* don't overlap menu */
#endif
+
if (view != nil && (screen = [[view window] screen]))
[[view window] setFrameTopLeftPoint:
NSMakePoint (SCREENMAXBOUND (f->left_pos),
/* If we have a toolbar, take its height into account. */
if (tb)
+ /* NOTE: previously this would generate wrong result if toolbar not
+ yet displayed and fixing toolbar_height=32 helped, but
+ now (200903) seems no longer needed */
FRAME_NS_TOOLBAR_HEIGHT (f) =
- /* XXX: GNUstep has not yet implemented the first method below, added
- in Panther, however the second is incorrect under Cocoa. */
-#ifdef NS_IMPL_COCOA
NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)])
- /* NOTE: previously this would generate wrong result if toolbar not
- yet displayed and fixing toolbar_height=32 helped, but
- now (200903) seems no longer needed */
-#else
- NSHeight ([NSWindow frameRectForContentRect: NSMakeRect (0, 0, 0, 0)
- styleMask: [window styleMask]])
-#endif
- - FRAME_NS_TITLEBAR_HEIGHT (f);
+ - FRAME_NS_TITLEBAR_HEIGHT (f);
else
FRAME_NS_TOOLBAR_HEIGHT (f) = 0;
ns_lookup_indexed_color (unsigned long idx, struct frame *f)
{
struct ns_color_table *color_table = FRAME_NS_DISPLAY_INFO (f)->color_table;
+ if (idx < 1 || idx >= color_table->avail)
+ return nil;
return color_table->colors[idx];
}
color_table->avail = 1; /* skip idx=0 as marker */
color_table->colors
= (NSColor **)xmalloc (color_table->size * sizeof (NSColor *));
+ color_table->colors[0] = nil;
color_table->empty_indices = [[NSMutableSet alloc] init];
}
ns_get_color (const char *name, NSColor **col)
/* --------------------------------------------------------------------------
Parse a color name
-/* --------------------------------------------------------------------------
-/* On *Step, we recognize several color formats, in addition to a catalog
- of colors found in the file Emacs.clr. Color formats include:
- - #rrggbb or RGBrrggbb where rr, gg, bb specify red, green and blue in hex
- - ARGBaarrggbb is similar, with aa being the alpha channel (FF = opaque)
- - HSVhhssvv and AHSVaahhssvv (or HSB/AHSB) are similar for hue, saturation,
- value;
- - CMYKccmmyykk is similar for cyan, magenta, yellow, black. */
-{
- NSColor * new = nil;
- const char *hex = NULL;
- enum { rgb, argb, hsv, ahsv, cmyk, gray } color_space;
+ -------------------------------------------------------------------------- */
+/* On *Step, we attempt to mimic the X11 platform here, down to installing an
+ X11 rgb.txt-compatible color list in Emacs.clr (see ns_term_init()).
+ See: http://thread.gmane.org/gmane.emacs.devel/113050/focus=113272). */
+{
+ NSColor *new = nil;
+ static char hex[20];
+ int scaling;
+ float r = -1.0, g, b;
NSString *nsname = [NSString stringWithUTF8String: name];
/*fprintf (stderr, "ns_get_color: '%s'\n", name); */
name = [ns_selection_color UTF8String];
}
- if (name[0] == '0' || name[0] == '1' || name[0] == '.')
+ /* First, check for some sort of numeric specification. */
+ hex[0] = '\0';
+
+ if (name[0] == '0' || name[0] == '1' || name[0] == '.') /* RGB decimal */
{
- /* RGB decimal */
NSScanner *scanner = [NSScanner scannerWithString: nsname];
- float r, g, b;
[scanner scanFloat: &r];
[scanner scanFloat: &g];
[scanner scanFloat: &b];
- *col = [NSColor colorWithCalibratedRed: r green: g blue: b alpha: 1.0];
- UNBLOCK_INPUT;
- return 0;
- }
-
- /* FIXME: emacs seems to downcase everything before passing it here,
- which we can work around, except for GRAY, since gray##, where ## is
- decimal between 0 and 99, is also an X11 colorname. */
- if (name[0] == '#') /* X11 format */
- {
- hex = name + 1;
- color_space = rgb;
- }
- else if (!memcmp (name, "RGB", 3) || !memcmp (name, "rgb", 3))
- {
- hex = name + 3;
- color_space = rgb;
}
- else if (!memcmp (name, "ARGB", 4) || !memcmp (name, "argb", 4))
+ else if (!strncmp(name, "rgb:", 4)) /* A newer X11 format -- rgb:r/g/b */
{
- hex = name + 4;
- color_space = argb;
+ strcpy(hex, name + 4);
+ scaling = (strlen(hex) - 2) / 3;
}
- else if (!memcmp (name, "HSV", 3) || !memcmp (name, "hsv", 3) ||
- !memcmp (name, "HSB", 3) || !memcmp (name, "hsb", 3))
+ else if (name[0] == '#') /* An old X11 format; convert to newer */
{
- hex = name + 3;
- color_space = hsv;
- }
- else if (!memcmp (name, "AHSV", 4) || !memcmp (name, "ahsv", 4) ||
- !memcmp (name, "AHSB", 4) || !memcmp (name, "ahsb", 4))
- {
- hex = name + 4;
- color_space = ahsv;
- }
- else if (!memcmp (name, "CMYK", 4) || !memcmp (name, "cmyk", 4))
- {
- hex = name + 4;
- color_space = cmyk;
- }
- else if (!memcmp (name, "GRAY", 4) /*|| !memcmp (name, "gray", 4)*/)
- {
- hex = name + 4;
- color_space = gray;
+ int len = (strlen(name) - 1);
+ int start = (len % 3 == 0) ? 1 : len / 4 + 1;
+ int i;
+ scaling = strlen(name+start) / 3;
+ for (i=0; i<3; i++) {
+ strncpy(hex + i * (scaling + 1), name + start + i * scaling, scaling);
+ hex[(i+1) * (scaling + 1) - 1] = '/';
+ }
+ hex[3 * (scaling + 1) - 1] = '\0';
}
- /* Direct colors (hex values) */
- if (hex)
+ if (hex[0])
{
- unsigned long long color = 0;
- if (sscanf (hex, "%x", &color))
+ int rr, gg, bb;
+ float fscale = scaling == 4 ? 65535.0 : (scaling == 2 ? 255.0 : 15.0);
+ if (sscanf (hex, "%x/%x/%x", &rr, &gg, &bb))
{
- float f1, f2, f3, f4;
- /* Assume it's either 1 byte or 2 per channel... */
- if (strlen(hex) > 8) {
- f1 = ((color >> 48) & 0xffff) / 65535.0;
- f2 = ((color >> 32) & 0xffff) / 65535.0;
- f3 = ((color >> 16) & 0xffff) / 65535.0;
- f4 = ((color ) & 0xffff) / 65535.0;
- } else {
- f1 = ((color >> 24) & 0xff) / 255.0;
- f2 = ((color >> 16) & 0xff) / 255.0;
- f3 = ((color >> 8) & 0xff) / 255.0;
- f4 = ((color ) & 0xff) / 255.0;
- }
-
- switch (color_space)
- {
- case rgb:
- *col = [NSColor colorWithCalibratedRed: f2
- green: f3
- blue: f4
- alpha: 1.0];
- break;
- case argb:
- *col = [NSColor colorWithCalibratedRed: f2
- green: f3
- blue: f4
- alpha: f1];
- break;
- case hsv:
- *col = [NSColor colorWithCalibratedHue: f2
- saturation: f3
- brightness: f4
- alpha: 1.0];
- break;
- case ahsv:
- *col = [NSColor colorWithCalibratedHue: f2
- saturation: f3
- brightness: f4
- alpha: f1];
- break;
- case gray:
- *col = [NSColor colorWithCalibratedWhite: f3 alpha: f4];
- break;
- case cmyk:
- *col = [NSColor colorWithDeviceCyan: f1
- magenta: f2
- yellow: f3
- black: f4
- alpha: 1.0];
- break;
- }
- *col = [*col colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
- UNBLOCK_INPUT;
- return 0;
+ r = rr / fscale;
+ g = gg / fscale;
+ b = bb / fscale;
}
}
+ if (r >= 0.0)
+ {
+ *col = [NSColor colorWithCalibratedRed: r green: g blue: b alpha: 1.0];
+ UNBLOCK_INPUT;
+ return 0;
+ }
+
/* Otherwise, color is expected to be from a list */
{
NSEnumerator *lenum, *cenum;
}
}
- if ( new )
+ if (new)
*col = [new colorUsingColorSpaceName: NSCalibratedRGBColorSpace];
-/* else
- NSLog (@"Failed to find color '%@'", nsname); */
UNBLOCK_INPUT;
return new ? 0 : 1;
}
Convert a color to a lisp string with the RGB equivalent
-------------------------------------------------------------------------- */
{
- float red, green, blue, alpha, gray;
+ CGFloat red, green, blue, alpha, gray;
char buf[1024];
const char *str;
NSTRACE (ns_color_to_lisp);
{
[[col colorUsingColorSpaceName: NSCalibratedWhiteColorSpace]
getWhite: &gray alpha: &alpha];
- snprintf (buf, sizeof (buf), "GRAY%02.2lx%02.2lx",
- lrint (gray * 0xff), lrint (alpha * 0xff));
+ snprintf (buf, sizeof (buf), "#%2.2lx%2.2lx%2.2lx",
+ lrint (gray * 0xff), lrint (gray * 0xff), lrint (gray * 0xff));
UNBLOCK_INPUT;
return build_string (buf);
}
- snprintf (buf, sizeof (buf), "ARGB%02.2lx%02.2lx%02.2lx%02.2lx",
- lrint (alpha*0xff),
+ snprintf (buf, sizeof (buf), "#%2.2lx%2.2lx%2.2lx",
lrint (red*0xff), lrint (green*0xff), lrint (blue*0xff));
UNBLOCK_INPUT;
and set color_def pixel to the resulting index.
-------------------------------------------------------------------------- */
{
- float r, g, b, a;
+ CGFloat r, g, b, a;
[((NSColor *)col) getRed: &r green: &g blue: &b alpha: &a];
color_def->red = r * 65535;
int fx, fy, h;
struct frame *f = WINDOW_XFRAME (w);
struct glyph *phys_cursor_glyph;
- int overspill, cursorToDraw;
+ int overspill;
NSTRACE (dumpcursor);
//fprintf(stderr, "drawcursor (%d,%d) activep = %d\tonp = %d\tc_type = %d\twidth = %d\n",x,y, active_p,on_p,cursor_type,cursor_width);
NSDisableScreenUpdates ();
#endif
- cursorToDraw = active_p ? cursor_type : HOLLOW_BOX_CURSOR;
- switch (cursorToDraw)
+ switch (cursor_type)
{
case NO_CURSOR:
break;
ns_unfocus (f);
/* draw the character under the cursor */
- if (cursorToDraw != NO_CURSOR)
+ if (cursor_type != NO_CURSOR)
draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR);
#ifdef NS_IMPL_COCOA
r = ns_fix_rect_ibw (r, FRAME_INTERNAL_BORDER_WIDTH (s->f),
FRAME_PIXEL_WIDTH (s->f));
- if (s->face->box == FACE_SIMPLE_BOX)
+ /* TODO: Sometimes box_color is 0 and this seems wrong; should investigate. */
+ if (s->face->box == FACE_SIMPLE_BOX && s->face->box_color)
{
- xassert (s->face->box_color != nil);
ns_draw_box (r, abs (thickness),
ns_lookup_indexed_color (face->box_color, s->f),
left_p, right_p);
if (s->for_overlaps || (s->cmp_from > 0
&& ! s->first_glyph->u.cmp.automatic))
s->background_filled_p = 1;
- else /* 1 */
+ else
ns_maybe_dumpglyphs_background
(s, s->first_glyph->type == COMPOSITE_GLYPH);
If we're being called outside of that, it's also OK to return quickly
after one iteration through the event loop, since other terms do
this and emacs expects it. */
- if (!(inNsSelect && expected)) // (!inNsSelect || !expected)
+ if (!(inNsSelect && expected))
{
/* Post an application defined event on the event queue. When this is
received the [NXApp run] will return, thus having processed all
ns_function_modifier = Qnone;
ns_antialias_text = Qt;
ns_antialias_threshold = 10.0; /* not exposed to lisp side */
- ns_use_qd_smoothing = Qnil;
- ns_use_system_highlight_color = Qt;
ns_confirm_quit = Qnil;
}
/* Read various user defaults. */
ns_set_default_prefs ();
- if (!ns_no_defaults)
+ if (!inhibit_x_resources)
{
ns_default ("GSFontAntiAlias", &ns_antialias_text,
Qt, Qnil, NO, NO);
delete_keyboard_wait_descriptor (0);
+ ns_app_name = [[NSProcessInfo processInfo] processName];
+
/* Set up OS X app menu */
#ifdef NS_IMPL_COCOA
{
keyEquivalent: @""
atIndex: 4];
[appMenu setSubmenu: svcsMenu forItem: item];
-/* [svcsMenu setSupercell: item]; */
[appMenu insertItem: [NSMenuItem separatorItem] atIndex: 5];
[appMenu insertItemWithTitle: @"Hide Emacs"
action: @selector (hide:)
keyEquivalent: @"q"
atIndex: 9];
- item = [mainMenu insertItemWithTitle: @"Emacs"
+ item = [mainMenu insertItemWithTitle: ns_app_name
action: @selector (menuDown:)
keyEquivalent: @""
atIndex: 0];
if (NILP (ns_confirm_quit)) // || ns_shutdown_properly --> TO DO
return NSTerminateNow;
- ret = NSRunAlertPanel([[NSProcessInfo processInfo] processName],
+ ret = NSRunAlertPanel(ns_app_name,
[NSString stringWithUTF8String:"Exit requested. Would you like to Save Buffers and Exit, or Cancel the request?"],
@"Save Buffers and Exit", @"Cancel", nil);
while ((file = [files nextObject]) != nil)
[ns_pending_files addObject: file];
-/* TODO: when GNUstep implements this (and we require that version of
- GNUstep), remove. */
-#ifndef NS_IMPL_GNUSTEP
[self replyToOpenOrPrint: NSApplicationDelegateReplySuccess];
-#endif /* !NS_IMPL_GNUSTEP */
}
return;
if (![[self window] isKeyWindow]
- && [[theEvent window] isKindOfClass: [EmacsWindow class]])
+ && [[theEvent window] isKindOfClass: [EmacsWindow class]]
+ /* we must avoid an infinite loop here. */
+ && (EmacsView *)[[theEvent window] delegate] != self)
{
/* XXX: There is an occasional condition in which, when Emacs display
updates a different frame from the current one, and temporarily
/* Needed to pick up Ctrl-tab and possibly other events that OS X has
decided not to send key-down for.
See http://osdir.com/ml/editors.vim.mac/2007-10/msg00141.html
+ This only applies on Tiger and earlier.
If it matches one of these, send it on to keyDown. */
-(void)keyUp: (NSEvent *)theEvent
{
int flags = [theEvent modifierFlags];
int code = [theEvent keyCode];
- if (code == 0x30 && (flags & NSControlKeyMask) && !(flags & NSCommandKeyMask))
+ if (floor (NSAppKitVersionNumber) <= 824 /*NSAppKitVersionNumber10_4*/ &&
+ code == 0x30 && (flags & NSControlKeyMask) && !(flags & NSCommandKeyMask))
{
if (NS_KEYLOG)
fprintf (stderr, "keyUp: passed test");
return NSMakeRange (NSNotFound, 0);
}
-- (unsigned int)characterIndexForPoint: (NSPoint)thePoint
+- (NSUInteger)characterIndexForPoint: (NSPoint)thePoint
{
if (NS_KEYLOG)
NSLog (@"characterIndexForPoint request");
}
#endif /* NS_IMPL_COCOA */
- // Calling x_set_window_size tends to get us into inf-loops
- // (x_set_window_size causes a resize which causes
- // a "windowDidResize" which calls x_set_window_size).
- // At least with GNUStep, don't know about MacOSX. --Stef
+ /* Avoid loop under GNUstep due to call at beginning of this function.
+ (x_set_window_size causes a resize which causes
+ a "windowDidResize" which calls x_set_window_size). */
#ifndef NS_IMPL_GNUSTEP
if (cols > 0 && rows > 0)
x_set_window_size (emacsframe, 0, cols, rows);
r = NSMakeRect (0, 0, FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, f->text_cols),
FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, f->text_lines));
[self initWithFrame: r];
+ [self setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable];
FRAME_NS_VIEW (f) = self;
emacsframe = f;
NSWindow *win = [self window];
NSRect r = [win frame];
NSScreen *screen = [win screen];
- NSRect sr = [screen frame];
NSTRACE (windowDidMove);
return;
if (screen != nil)
{
- emacsframe->left_pos = r.origin.x; /* - sr.origin.x; */
- emacsframe->top_pos = sr.size.height -
- (r.origin.y + r.size.height); /* + sr.origin.y; */
+ emacsframe->left_pos = r.origin.x;
+ emacsframe->top_pos =
+ [screen frame].size.height - (r.origin.y + r.size.height);
}
}
-#ifdef NS_IMPL_COCOA
-/* if we don't do this manually, the window will resize but not move */
+
+/* Called AFTER method below, but before our windowWillResize call there leads
+ to windowDidResize -> x_set_window_size. Update emacs' notion of frame
+ location so set_window_size moves the frame. */
- (BOOL)windowShouldZoom: (NSWindow *)sender toFrame: (NSRect)newFrame
{
NSTRACE (windowShouldZoom);
- [[self window] setFrame: newFrame display: NO];
+ emacsframe->left_pos = (int)newFrame.origin.x;
+ emacsframe->top_pos = [[sender screen] frame].size.height
+ - (newFrame.origin.y+newFrame.size.height);
return YES;
}
-#endif
/* Override to do something slightly nonstandard, but nice. First click on
defaultFrame:(NSRect)defaultFrame
{
NSRect result = [sender frame];
+ static NSRect ns_userRect = { 0, 0, 0, 0 };
+
NSTRACE (windowWillUseStandardFrame);
- if (result.size.height == defaultFrame.size.height) {
- result = defaultFrame;
- } else {
- result.size.height = defaultFrame.size.height;
- result.origin.y = defaultFrame.origin.y;
- }
+ if (abs (defaultFrame.size.height - result.size.height)
+ > FRAME_LINE_HEIGHT (emacsframe))
+ {
+ /* first click */
+ ns_userRect = result;
+ result.size.height = defaultFrame.size.height;
+ result.origin.y = defaultFrame.origin.y;
+ }
+ else
+ {
+ if (abs (defaultFrame.size.width - result.size.width)
+ > FRAME_COLUMN_WIDTH (emacsframe))
+ result = defaultFrame; /* second click */
+ else
+ result = ns_userRect.size.height ? ns_userRect : result; /* restore */
+ }
- /* A windowWillResize does not get generated at least on Tiger. */
[self windowWillResize: sender toSize: result.size];
return result;
}
/* NSDraggingDestination protocol methods. Actually this is not really a
protocol, but a category of Object. O well... */
--(unsigned int) draggingEntered: (id <NSDraggingInfo>) sender
+-(NSUInteger) draggingEntered: (id <NSDraggingInfo>) sender
{
NSTRACE (draggingEntered);
return NSDragOperationGeneric;
#define SCROLL_BAR_FIRST_DELAY 0.5
#define SCROLL_BAR_CONTINUOUS_DELAY (1.0 / 15)
-+ (float) scrollerWidth
++ (CGFloat) scrollerWidth
{
/* TODO: if we want to allow variable widths, this is the place to do it,
however neither GNUstep nor Cocoa support it very well */
[self setEnabled: YES];
/* Ensure auto resizing of scrollbars occurs within the emacs frame's view
- locked against the right, top and bottom edges. */
+ locked against the top and bottom edges, and right edge on OS X, where
+ scrollers are on right. */
+#ifdef NS_IMPL_GNUSTEP
+ [self setAutoresizingMask: NSViewMaxXMargin | NSViewHeightSizable];
+#else
[self setAutoresizingMask: NSViewMinXMargin | NSViewHeightSizable];
+#endif
win = nwin;
condemned = NO;
por = (float)portion/whole;
[self setFloatValue: pos knobProportion: por];
}
-#ifdef NS_IMPL_GNUSTEP
- [self display];
-#endif
return self;
}
case NSScrollerKnobSlot: /* GNUstep-only */
last_hit_part = scroll_bar_move_ratio; break;
default: /* NSScrollerNoPart? */
- fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %d\n", part);
+ fprintf (stderr, "EmacsScoller-mouseDown: unexpected part %ld\n",
+ (long) part);
return;
}
/* set a timer to repeat, as we can't let superclass do this modally */
scroll_repeat_entry
- = [[NSTimer scheduledTimerWithTimeInterval: 0.5
+ = [[NSTimer scheduledTimerWithTimeInterval: SCROLL_BAR_FIRST_DELAY
target: self
selector: @selector (repeatScroll:)
userInfo: 0
DEFVAR_LISP ("ns-antialias-text", &ns_antialias_text,
"Non-nil (the default) means to render text antialiased. Only has an effect on OS X Panther and above.");
- DEFVAR_LISP ("ns-use-qd-smoothing", &ns_use_qd_smoothing,
- "Whether to render text using QuickDraw (less heavy) antialiasing. Only has an effect on OS X Panther and above. Default is nil (use Quartz smoothing).");
-
- DEFVAR_LISP ("ns-use-system-highlight-color",
- &ns_use_system_highlight_color,
- "Whether to use the system default (on OS X only) for the highlight color. Nil means to use standard emacs (prior to version 21) 'grey'.");
-
DEFVAR_LISP ("ns-confirm-quit", &ns_confirm_quit,
"Whether to confirm application quit using dialog.");