/* NeXT/Open/GNUstep / MacOSX Cocoa selection processing for emacs.
- Copyright (C) 1993-1994, 2005-2006, 2008-2013 Free Software
+ Copyright (C) 1993-1994, 2005-2006, 2008-2014 Free Software
Foundation, Inc.
This file is part of GNU Emacs.
{
Lisp_Object local_value;
Lisp_Object handler_fn, value, check;
- ptrdiff_t count;
local_value = assq_no_quit (selection_name, Vselection_alist);
if (NILP (local_value)) return Qnil;
- count = specpdl_ptr - specpdl;
+ dynwind_begin ();
specbind (Qinhibit_quit, Qt);
CHECK_SYMBOL (target_type);
handler_fn = Fcdr (Fassq (target_type, Vselection_converter_alist));
XCAR (XCDR (local_value)));
else
value = Qnil;
- unbind_to (count, Qnil);
+ dynwind_end ();
check = value;
if (CONSP (value) && SYMBOLP (XCAR (value)))
return value;
// FIXME: Why `quit' rather than `error'?
- Fsignal (Qquit, Fcons (build_string (
- "invalid data returned by selection-conversion function"),
- Fcons (handler_fn, Fcons (value, Qnil))));
+ Fsignal (Qquit,
+ list3 (build_string ("invalid data returned by"
+ " selection-conversion function"),
+ handler_fn, value));
// FIXME: Beware, `quit' can return!!
return Qnil;
}
type = [pb availableTypeFromArray: ns_return_types];
if (type == nil)
{
- Fsignal (Qquit,
- Fcons (build_string ("empty or unsupported pasteboard type"),
- Qnil));
- return Qnil;
+ return Qnil;
}
/* get the string */
}
else
{
- Fsignal (Qquit,
- Fcons (build_string ("pasteboard doesn't contain valid data"),
- Qnil));
return Qnil;
}
}
check_window_system (NULL);
CHECK_SYMBOL (selection);
if (NILP (value))
- error ("selection value may not be nil.");
+ error ("Selection value may not be nil");
pb = ns_symbol_to_pb (selection);
if (pb == nil) return Qnil;
ns_declare_pasteboard (pb);
old_value = assq_no_quit (selection, Vselection_alist);
- new_value = Fcons (selection, Fcons (value, Qnil));
+ new_value = list2 (selection, value);
if (NILP (old_value))
Vselection_alist = Fcons (new_value, Vselection_alist);
id pb;
NSArray *types;
- check_window_system (NULL);
+ if (!window_system_available (NULL))
+ return Qnil;
+
CHECK_SYMBOL (selection);
if (EQ (selection, Qnil)) selection = QPRIMARY;
if (EQ (selection, Qt)) selection = QSECONDARY;
void
syms_of_nsselect (void)
{
+#include "nsselect.x"
+
QCLIPBOARD = intern_c_string ("CLIPBOARD"); staticpro (&QCLIPBOARD);
QSECONDARY = intern_c_string ("SECONDARY"); staticpro (&QSECONDARY);
QTEXT = intern_c_string ("TEXT"); staticpro (&QTEXT);
QFILE_NAME = intern_c_string ("FILE_NAME"); staticpro (&QFILE_NAME);
- defsubr (&Sx_disown_selection_internal);
- defsubr (&Sx_get_selection_internal);
- defsubr (&Sx_own_selection_internal);
- defsubr (&Sx_selection_exists_p);
- defsubr (&Sx_selection_owner_p);
- defsubr (&Sns_get_selection_internal);
- defsubr (&Sns_store_selection_internal);
-
Vselection_alist = Qnil;
staticpro (&Vselection_alist);