From 7e09ef09a479731d01b1ca46e94ddadd73ac98e3 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 1 Jan 2015 14:26:41 -0800 Subject: Update copyright year to 2015 Run admin/update-copyright. --- src/coding.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/coding.c') diff --git a/src/coding.c b/src/coding.c index e4b52f6db48..f3f8dc18875 100644 --- a/src/coding.c +++ b/src/coding.c @@ -1,5 +1,5 @@ /* Coding system handler (conversion, detection, etc). - Copyright (C) 2001-2014 Free Software Foundation, Inc. + Copyright (C) 2001-2015 Free Software Foundation, Inc. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 National Institute of Advanced Industrial Science and Technology (AIST) -- cgit v1.2.1 From 58f2d6ef32b28a787fcc4e0d98b3f331ceb2a68c Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 5 Jan 2015 09:07:45 -0800 Subject: Compute C decls for DEFSYMs automatically Fixes Bug#15880. This patch also makes Q constants (e.g., Qnil) constant addresses from the C point of view. * make-docfile.c: Revamp to generate table of symbols, too. Include . (xstrdup): New function. (main): Don't process the same file twice. (SYMBOL): New constant in enum global_type. (struct symbol): Turn 'value' member into a union, either v.value for int or v.svalue for string. All uses changed. (add_global): New arg svalue, which overrides value, so that globals can have a string value. (close_emacs_global): New arg num_symbols; all uses changed. Output lispsym decl. (write_globals): Output symbol globals too. Output more ATTRIBUTE_CONST, now that Qnil etc. are C constants. Output defsym_name table. (scan_c_file): Move most of guts into ... (scan_c_stream): ... new function. Scan for DEFSYMs and record symbols found. Don't read past EOF if file doesn't end in newline. * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle: * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c: * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c: * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c: * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c: * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c: * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m: * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c: * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c: * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c: * xselect.c, xsettings.c, xterm.c: Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs). These names are now defined automatically by make-docfile. * alloc.c (init_symbol): New function. (Fmake_symbol): Use it. (c_symbol_p): New function. (valid_lisp_object_p, purecopy): Use it. * alloc.c (marked_pinned_symbols): Use make_lisp_symbol instead of make_lisp_ptr. (garbage_collect_1): Mark lispsym symbols. (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro. (mark_object): Use it. (sweep_symbols): Sweep lispsym symbols. (symbol_uses_obj): New function. (which_symbols): Use it. Work for lispsym symbols, too. (init_alloc_once): Initialize Vpurify_flag here; no need to wait, since Qt's address is already known now. (syms_of_alloc): Add lispsym count to symbols_consed. * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0), when testing whether storage is all bits zero. * dispextern (struct image_type): * font.c (font_property_table): * frame.c (struct frame_parm_table, frame_parms): * keyboard.c (scroll_bar_parts, struct event_head): * xdisp.c (struct props): Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and Lisp_Object *, since Qfoo is no longer an object whose address can be taken. All uses changed. * eval.c (run_hook): New function. Most uses of Frun_hooks changed to use it, so that they no longer need to take the address of a Lisp sym. (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable. * frame.c (syms_of_frame): Add defsyms for the frame_parms table. * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here. DEFSYM Qdeactivate_mark before the corresponding var. * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line instead of interning their symbols; this avoids duplicates. (LISP_INITIALLY, TAG_PTR) (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT): New macros. (LISP_INITIALLY_ZERO): Use it. (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol) (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*): Move decls up, to avoid forward uses. Include globals.h earlier, too. (make_lisp_symbol): New function. (XSETSYMBOL): Use it. (DEFSYM): Now just a placeholder for make-docfile. * lread.c (DEFINE_SYMBOLS): Define, for globals.h. (intern_sym): New function, with body taken from old intern_driver. (intern_driver): Use it. Last arg is now Lisp integer, not ptrdiff_t. All uses changed. (define_symbol): New function. (init_obarray): Define the C symbols taken from lispsym. Use plain DEFSYM for Qt and Qnil. * syntax.c (init_syntax_once): No need to worry about Qchar_table_extra_slots. --- src/coding.c | 51 ++++++--------------------------------------------- 1 file changed, 6 insertions(+), 45 deletions(-) (limited to 'src/coding.c') diff --git a/src/coding.c b/src/coding.c index f3f8dc18875..20c64762160 100644 --- a/src/coding.c +++ b/src/coding.c @@ -303,35 +303,6 @@ encode_coding_XXX (struct coding_system *coding) Lisp_Object Vcoding_system_hash_table; -static Lisp_Object Qcoding_system, Qeol_type; -static Lisp_Object Qcoding_aliases; -Lisp_Object Qunix, Qdos; -static Lisp_Object Qmac; -Lisp_Object Qbuffer_file_coding_system; -static Lisp_Object Qpost_read_conversion, Qpre_write_conversion; -static Lisp_Object Qdefault_char; -Lisp_Object Qno_conversion, Qundecided; -Lisp_Object Qcharset, Qutf_8; -static Lisp_Object Qiso_2022; -static Lisp_Object Qutf_16, Qshift_jis, Qbig5; -static Lisp_Object Qbig, Qlittle; -static Lisp_Object Qcoding_system_history; -static Lisp_Object Qvalid_codes; -static Lisp_Object QCcategory, QCmnemonic, QCdefault_char; -static Lisp_Object QCdecode_translation_table, QCencode_translation_table; -static Lisp_Object QCpost_read_conversion, QCpre_write_conversion; -static Lisp_Object QCascii_compatible_p; - -Lisp_Object Qcall_process, Qcall_process_region; -Lisp_Object Qstart_process, Qopen_network_stream; -static Lisp_Object Qtarget_idx; - -static Lisp_Object Qinsufficient_source, Qinvalid_source, Qinterrupted; - -/* If a symbol has this property, evaluate the value to define the - symbol as a coding system. */ -static Lisp_Object Qcoding_system_define_form; - /* Format of end-of-line decided by system. This is Qunix on Unix and Mac, Qdos on DOS/Windows. This has an effect only for external encoding (i.e. for output to @@ -340,17 +311,6 @@ static Lisp_Object system_eol_type; #ifdef emacs -Lisp_Object Qcoding_system_p, Qcoding_system_error; - -/* Coding system emacs-mule and raw-text are for converting only - end-of-line format. */ -Lisp_Object Qemacs_mule, Qraw_text; -Lisp_Object Qutf_8_emacs; - -#if defined (WINDOWSNT) || defined (CYGWIN) -static Lisp_Object Qutf_16le; -#endif - /* Coding-systems are handed between Emacs Lisp programs and C internal routines by the following three variables. */ /* Coding system to be used to encode text for terminal display when @@ -359,11 +319,6 @@ struct coding_system safe_terminal_coding; #endif /* emacs */ -Lisp_Object Qtranslation_table; -Lisp_Object Qtranslation_table_id; -static Lisp_Object Qtranslation_table_for_decode; -static Lisp_Object Qtranslation_table_for_encode; - /* Two special coding systems. */ static Lisp_Object Vsjis_coding_system; static Lisp_Object Vbig5_coding_system; @@ -10903,6 +10858,7 @@ syms_of_coding (void) DEFSYM (Qcoding_system_p, "coding-system-p"); + /* Error signaled when there's a problem with detecting a coding system. */ DEFSYM (Qcoding_system_error, "coding-system-error"); Fput (Qcoding_system_error, Qerror_conditions, listn (CONSTYPE_PURE, 2, Qcoding_system_error, Qerror)); @@ -10917,6 +10873,8 @@ syms_of_coding (void) DEFSYM (Qvalid_codes, "valid-codes"); + /* Coding system emacs-mule and raw-text are for converting only + end-of-line format. */ DEFSYM (Qemacs_mule, "emacs-mule"); DEFSYM (QCcategory, ":category"); @@ -10979,6 +10937,9 @@ syms_of_coding (void) DEFSYM (Qinsufficient_source, "insufficient-source"); DEFSYM (Qinvalid_source, "invalid-source"); DEFSYM (Qinterrupted, "interrupted"); + + /* If a symbol has this property, evaluate the value to define the + symbol as a coding system. */ DEFSYM (Qcoding_system_define_form, "coding-system-define-form"); defsubr (&Scoding_system_p); -- cgit v1.2.1