diff options
Diffstat (limited to 'src/nsselect.m')
-rw-r--r-- | src/nsselect.m | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/src/nsselect.m b/src/nsselect.m index e4f5f0c613e..786ca36069c 100644 --- a/src/nsselect.m +++ b/src/nsselect.m @@ -27,16 +27,17 @@ GNUstep port and post-20 update by Adrian Robert (arobert@cogsci.ucsd.edu) /* This should be the first include, as it may set up #defines affecting interpretation of even the system includes. */ -#include "config.h" +#include <config.h> #include <setjmp.h> #include "lisp.h" #include "nsterm.h" #include "termhooks.h" +#include "keyboard.h" #define CUT_BUFFER_SUPPORT -Lisp_Object QPRIMARY, QSECONDARY, QTEXT, QFILE_NAME; +Lisp_Object QCLIPBOARD, QSECONDARY, QTEXT, QFILE_NAME; static Lisp_Object Vns_sent_selection_hooks; static Lisp_Object Vns_lost_selection_hooks; @@ -45,6 +46,8 @@ static Lisp_Object Vselection_converter_alist; static Lisp_Object Qforeign_selection; +/* NSGeneralPboard is pretty much analogous to X11 CLIPBOARD */ +NSString *NXPrimaryPboard; NSString *NXSecondaryPboard; @@ -60,7 +63,8 @@ static NSString * symbol_to_nsstring (Lisp_Object sym) { CHECK_SYMBOL (sym); - if (EQ (sym, QPRIMARY)) return NSGeneralPboard; + if (EQ (sym, QCLIPBOARD)) return NSGeneralPboard; + if (EQ (sym, QPRIMARY)) return NXPrimaryPboard; if (EQ (sym, QSECONDARY)) return NXSecondaryPboard; if (EQ (sym, QTEXT)) return NSStringPboardType; return [NSString stringWithUTF8String: SDATA (XSYMBOL (sym)->xname)]; @@ -71,6 +75,8 @@ static Lisp_Object ns_string_to_symbol (NSString *t) { if ([t isEqualToString: NSGeneralPboard]) + return QCLIPBOARD; + if ([t isEqualToString: NXPrimaryPboard]) return QPRIMARY; if ([t isEqualToString: NXSecondaryPboard]) return QSECONDARY; @@ -378,8 +384,7 @@ DEFUN ("x-own-selection-internal", Fx_own_selection_internal, SELECTION-NAME is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. VALUE is typically a string, or a cons of two markers, but may be anything that the functions on `selection-converter-alist' know about. */) - (selection_name, selection_value) - Lisp_Object selection_name, selection_value; + (Lisp_Object selection_name, Lisp_Object selection_value) { id pb; Lisp_Object old_value, new_value; @@ -413,8 +418,7 @@ anything that the functions on `selection-converter-alist' know about. */) DEFUN ("x-disown-selection-internal", Fx_disown_selection_internal, Sx_disown_selection_internal, 1, 2, 0, doc: /* If we own the selection SELECTION, disown it. */) - (selection_name, time) - Lisp_Object selection_name, time; + (Lisp_Object selection_name, Lisp_Object time) { id pb; check_ns (); @@ -434,8 +438,7 @@ the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. \(Those are literal upper-case symbol names.) For convenience, the symbol nil is the same as `PRIMARY', and t is the same as `SECONDARY'.) */) - (selection) - Lisp_Object selection; + (Lisp_Object selection) { id pb; NSArray *types; @@ -458,8 +461,7 @@ the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. \(Those are literal upper-case symbol names.) For convenience, the symbol nil is the same as `PRIMARY', and t is the same as `SECONDARY'.) */) - (selection) - Lisp_Object selection; + (Lisp_Object selection) { check_ns (); CHECK_SYMBOL (selection); @@ -475,8 +477,7 @@ DEFUN ("x-get-selection-internal", Fx_get_selection_internal, SELECTION is a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD'. \(Those are literal upper-case symbol names.) TYPE is the type of data desired, typically `STRING'. */) - (selection_name, target_type) - Lisp_Object selection_name, target_type; + (Lisp_Object selection_name, Lisp_Object target_type) { Lisp_Object val; @@ -501,8 +502,7 @@ TYPE is the type of data desired, typically `STRING'. */) DEFUN ("ns-get-cut-buffer-internal", Fns_get_cut_buffer_internal, Sns_get_cut_buffer_internal, 1, 1, 0, doc: /* Returns the value of the named cut buffer. */) - (buffer) - Lisp_Object buffer; + (Lisp_Object buffer) { id pb; check_ns (); @@ -516,8 +516,7 @@ DEFUN ("ns-rotate-cut-buffers-internal", Fns_rotate_cut_buffers_internal, doc: /* Rotate the values of the cut buffers by N steps. Positive N means move values forward, negative means backward. CURRENTLY NOT IMPLEMENTED UNDER NEXTSTEP. */ ) - (n) - Lisp_Object n; + (Lisp_Object n) { /* XXX This function is unimplemented under NeXTstep XXX */ Fsignal (Qquit, Fcons (build_string ( @@ -529,8 +528,7 @@ backward. CURRENTLY NOT IMPLEMENTED UNDER NEXTSTEP. */ ) DEFUN ("ns-store-cut-buffer-internal", Fns_store_cut_buffer_internal, Sns_store_cut_buffer_internal, 2, 2, 0, doc: /* Sets the value of the named cut buffer (typically CUT_BUFFER0). */) - (buffer, string) - Lisp_Object buffer, string; + (Lisp_Object buffer, Lisp_Object string) { id pb; check_ns (); @@ -544,16 +542,17 @@ DEFUN ("ns-store-cut-buffer-internal", Fns_store_cut_buffer_internal, void nxatoms_of_nsselect (void) { - NXSecondaryPboard = @"Selection"; + NXPrimaryPboard = @"Selection"; + NXSecondaryPboard = @"Secondary"; } void syms_of_nsselect (void) { - QPRIMARY = intern ("PRIMARY"); staticpro (&QPRIMARY); - QSECONDARY = intern ("SECONDARY"); staticpro (&QSECONDARY); - QTEXT = intern ("TEXT"); staticpro (&QTEXT); - QFILE_NAME = intern ("FILE_NAME"); staticpro (&QFILE_NAME); + 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); @@ -606,7 +605,7 @@ The functions are called with one argument, the selection type\n\ \(a symbol, typically `PRIMARY', `SECONDARY', or `CLIPBOARD')."); Vns_lost_selection_hooks = Qnil; - Qforeign_selection = intern ("foreign-selection"); + Qforeign_selection = intern_c_string ("foreign-selection"); staticpro (&Qforeign_selection); } |