X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/341dd15a7bd9d0b4adff846e94289b3e1877eed1..220d91b834f7f7252b9953460422151b86b3520c:/src/w32select.c diff --git a/src/w32select.c b/src/w32select.c index e436e09de8..f9bab38406 100644 --- a/src/w32select.c +++ b/src/w32select.c @@ -1,13 +1,13 @@ /* Selection processing for Emacs on the Microsoft W32 API. Copyright (C) 1993, 1994, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GNU Emacs. -GNU Emacs is free software; you can redistribute it and/or modify +GNU Emacs is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 3, or (at your option) -any later version. +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -15,9 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with GNU Emacs; see the file COPYING. If not, write to -the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -Boston, MA 02110-1301, USA. */ +along with GNU Emacs. If not, see . */ /* Written by Kevin Gallo, Benjamin Riefenstahl */ @@ -32,7 +30,7 @@ Boston, MA 02110-1301, USA. */ * (CF_UNICODETEXT), when a well-known console codepage is given, they * apply to the console version of the clipboard data (CF_OEMTEXT), * else they apply to the normal 8-bit text clipboard (CF_TEXT). - * + * * When pasting (getting data from the OS), the clipboard format that * matches the {next-}selection-coding-system is retrieved. If * Unicode is requested, but not available, 8-bit text (CF_TEXT) is @@ -47,13 +45,13 @@ Boston, MA 02110-1301, USA. */ * * Scenarios to use the facilities for customizing the selection * coding system are: - * + * * ;; Generally use KOI8-R instead of the russian MS codepage for * ;; the 8-bit clipboard. * (set-selection-coding-system 'koi8-r-dos) - * + * * Or - * + * * ;; Create a special clipboard copy function that uses codepage * ;; 1253 (Greek) to copy Greek text to a specific non-Unicode * ;; application. @@ -73,8 +71,9 @@ Boston, MA 02110-1301, USA. */ * types should be supported is also moved to Lisp, functionality * could be expanded to CF_HTML, CF_RTF and maybe other types. */ - + #include +#include #include "lisp.h" #include "w32term.h" /* for all of the w32 includes */ #include "w32heap.h" /* os_subtype */ @@ -90,8 +89,8 @@ static HGLOBAL convert_to_handle_as_ascii (void); static HGLOBAL convert_to_handle_as_coded (Lisp_Object coding_system); static Lisp_Object render (Lisp_Object oformat); static Lisp_Object render_locale (void); -static Lisp_Object render_all (void); -static void run_protected (Lisp_Object (*code) (), Lisp_Object arg); +static Lisp_Object render_all (Lisp_Object ignore); +static void run_protected (Lisp_Object (*code) (Lisp_Object), Lisp_Object arg); static Lisp_Object lisp_error_handler (Lisp_Object error); static LRESULT CALLBACK owner_callback (HWND win, UINT msg, WPARAM wp, LPARAM lp); @@ -221,11 +220,11 @@ convert_to_handle_as_coded (Lisp_Object coding_system) unsigned char *dst = NULL; struct coding_system coding; - ONTRACE (fprintf (stderr, "convert_to_handle_as_coded: %s\n", + ONTRACE (fprintf (stderr, "convert_to_handle_as_coded: %s\n", SDATA (SYMBOL_NAME (coding_system)))); setup_windows_coding_system (coding_system, &coding); - coding.dst_bytes = SBYTES(current_text) * 2; + coding.dst_bytes = SBYTES (current_text) * 2; coding.destination = (unsigned char *) xmalloc (coding.dst_bytes); encode_coding_object (&coding, current_text, 0, 0, SCHARS (current_text), SBYTES (current_text), Qnil); @@ -291,7 +290,7 @@ render (Lisp_Object oformat) if (SetClipboardData (format, htext) == NULL) { - GlobalFree(htext); + GlobalFree (htext); return Qnil; } @@ -315,7 +314,7 @@ render_locale (void) if ((lcid_ptr = (LCID *) GlobalLock (hlocale)) == NULL) { - GlobalFree(hlocale); + GlobalFree (hlocale); return Qnil; } @@ -324,7 +323,7 @@ render_locale (void) if (SetClipboardData (CF_LOCALE, hlocale) == NULL) { - GlobalFree(hlocale); + GlobalFree (hlocale); return Qnil; } @@ -335,7 +334,7 @@ render_locale (void) data survives us. This code will do that. */ static Lisp_Object -render_all (void) +render_all (Lisp_Object ignore) { ONTRACE (fprintf (stderr, "render_all\n")); @@ -381,7 +380,7 @@ render_all (void) automatic conversions anywhere else, so to get consistent results, we probably don't want to rely on it here either. */ - render_locale(); + render_locale (); if (current_clipboard_type == CF_UNICODETEXT) render (make_number (CF_TEXT)); @@ -393,13 +392,12 @@ render_all (void) } static void -run_protected (Lisp_Object (*code) (), Lisp_Object arg) +run_protected (Lisp_Object (*code) (Lisp_Object), Lisp_Object arg) { /* FIXME: This works but it doesn't feel right. Too much fiddling with global variables and calling strange looking functions. Is this really the right way to run Lisp callbacks? */ - extern int waiting_for_input; int owfi; BLOCK_INPUT; @@ -515,7 +513,7 @@ setup_config (void) && EQ (cfg_coding_system, dos_coding_system)) return; cfg_coding_system = dos_coding_system; - + /* Set some sensible fallbacks */ cfg_codepage = ANSICP; cfg_lcid = LOCALE_NEUTRAL; @@ -584,7 +582,7 @@ enum_locale_callback (/*const*/ char* loc_string) cfg_clipboard_type = CF_TEXT; return FALSE; /* Stop enumeration */ } - + /* Is the wanted codepage the OEM codepage for this locale? */ codepage = cp_from_locale (lcid, CF_OEMTEXT); if (codepage == cfg_codepage) @@ -682,8 +680,7 @@ setup_windows_coding_system (Lisp_Object coding_system, DEFUN ("w32-set-clipboard-data", Fw32_set_clipboard_data, Sw32_set_clipboard_data, 1, 2, 0, doc: /* This sets the clipboard data to the given text. */) - (string, ignored) - Lisp_Object string, ignored; + (Lisp_Object string, Lisp_Object ignored) { BOOL ok = TRUE; int nbytes; @@ -705,7 +702,7 @@ DEFUN ("w32-set-clipboard-data", Fw32_set_clipboard_data, current_lcid = cfg_lcid; current_num_nls = 0; current_requires_encoding = 0; - + BLOCK_INPUT; /* Check for non-ASCII characters. While we are at it, count the @@ -745,7 +742,7 @@ DEFUN ("w32-set-clipboard-data", Fw32_set_clipboard_data, /* If we have something non-ASCII we may want to set a locale. We do that directly (non-delayed), as it's just a small bit. */ if (ok) - ok = !NILP(render_locale()); + ok = !NILP (render_locale ()); if (ok) { @@ -754,7 +751,7 @@ DEFUN ("w32-set-clipboard-data", Fw32_set_clipboard_data, /* If for some reason we don't have a clipboard_owner, we just set the text format as chosen by the configuration and than forget about the whole thing. */ - ok = !NILP(render (make_number (current_clipboard_type))); + ok = !NILP (render (make_number (current_clipboard_type))); current_text = Qnil; current_coding_system = Qnil; } @@ -803,8 +800,7 @@ DEFUN ("w32-set-clipboard-data", Fw32_set_clipboard_data, DEFUN ("w32-get-clipboard-data", Fw32_get_clipboard_data, Sw32_get_clipboard_data, 0, 1, 0, doc: /* This gets the clipboard data in text format. */) - (ignored) - Lisp_Object ignored; + (Lisp_Object ignored) { HGLOBAL htext; Lisp_Object ret = Qnil; @@ -885,7 +881,7 @@ DEFUN ("w32-get-clipboard-data", Fw32_get_clipboard_data, struct coding_system coding; Lisp_Object coding_system = Qnil; Lisp_Object dos_coding_system; - + /* `next-selection-coding-system' should override everything, even when the locale passed by the system disagrees. The only exception is when `next-selection-coding-system' @@ -1028,8 +1024,7 @@ the symbols `PRIMARY', `SECONDARY', or `CLIPBOARD'. \(Those are literal upper-case symbol names, since that's what X expects.) 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_SYMBOL (selection); @@ -1066,7 +1061,7 @@ and t is the same as `SECONDARY'. */) dumped version. */ void -syms_of_w32select () +syms_of_w32select (void) { defsubr (&Sw32_set_clipboard_data); defsubr (&Sw32_get_clipboard_data); @@ -1077,7 +1072,7 @@ syms_of_w32select () When sending or receiving text via cut_buffer, selection, and clipboard, the text is encoded or decoded by this coding system. The default value is the current system default encoding on 9x/Me and -`utf-16le-dos' (Unicode) on NT/W2K/XP. */); +`utf-16le-dos' (Unicode) on NT/W2K/XP. */); /* The actual value is set dynamically in the dumped Emacs, see below. */ Vselection_coding_system = Qnil; @@ -1105,7 +1100,7 @@ set to nil. */); un-dumped version. */ void -globals_of_w32select () +globals_of_w32select (void) { DEFAULT_LCID = GetUserDefaultLCID (); /* Drop the sort order from the LCID, so we can compare this with