comparison src/console.c @ 1204:e22b0213b713

[xemacs-hg @ 2003-01-12 11:07:58 by michaels] modules/ChangeLog: 2002-12-16 Ben Wing <ben@xemacs.org> * postgresql/postgresql.c: remove ifdef USE_KKCC. src/ChangeLog: 2003-01-08 Mike Sperber <mike@xemacs.org> * console.h (CDFW_CONSOLE): Don't lead to a crash if we're dealing with a dead window/frame/device/console. 2002-12-20 Mike Sperber <mike@xemacs.org> * ui-gtk.c: Fix typo from Ben's patch: emacs_ffi_data is a typedef, not a struct. emacs_gtk_object_data is a typedef, not a struct. * gtk-glue.c (gdk_event_to_emacs_event): Fix typos from Ben's patch: le -> emacs_event + rearrange the code. * event-gtk.c (gtk_event_to_emacs_event): Fix typos from Ben's patch: ..._UNDERLYING_GDK_EVENT -> ..._GDK_EVENT, ev -> key_event. * device-gtk.c: Fix typo from Ben's patch: x_keysym_map_hash_table -> x_keysym_map_hashtable. 2002-12-19 Mike Sperber <mike@xemacs.org> * menubar-x.c (set_frame_menubar): Initialize protect_me field of popup_data. 2002-12-16 Ben Wing <ben@xemacs.org> Major cleanup of KKCC, etc. KKCC, pdump-related: -- descriptions are written for all objects. this required some changes in the format of some objects, e.g. extents, popup-data, coding system, lstream, lcrecord-list. -- KKCC now handles weakness in markers, hash tables, elsewhere correctly (formerly, you'd eventually get a stack overflow due to endlessly expanding markers). -- textual changes: lrecord_description -> memory_description, struct_description -> sized_memory_description. -- extensive comment describing descriptions and pdump. -- redo XD_UNION so it works inline and change its format to provide sufficient info for pdump. implement XD_UNION in pdump. also add XD_UNION_DYNAMIC_SIZE, which works like XD_UNION except for when auto-computing structure sizes. -- add support for XD_INDIRECT in description offsets (used by extents). -- add support for "description maps", allowing for indirect descriptions that are retrieved from an object at run-time. this generalizes XD_CODING_SYSTEM_END, XD_SPECIFIER_END, etc., which have now been eliminated. -- add a fifth field "flags" to memory_description, to support flags that can be specified for this particular line. Currently defined flags are XD_FLAG_NO_KKCC (KKCC should ignore this entry; useful for the weakness above in markers, etc.), XD_FLAG_NO_PDUMP (pdump should ignore this entry), XD_FLAG_UNION_DEFAULT_ENTRY (in union maps, this specifies a "default" entry for all remaining values), and XD_FLAG_FREE_LISP_OBJECT (for use with lcrecord-lists). -- clean up the kkcc-itis in events, so that the differences between event data as separate objects and as a union are now minimized to a small number of places. with the new XD_UNION, we no longer need event data as separate objects, so this code is no longer ifdef USE_KKCC, but instead ifdef EVENT_DATA_AS_OBJECTS, not used by default. make sure that we explicitly free the separate event data objects when no longer in use, to maintain the invariant the event processing causes no consing. -- also remove other USE_KKCC ifdefs when not necessary. -- allow for KKCC compilation under MS Windows. -- fix README.kkcc. -- dump_add_root_object -> dump_add_root_lisp_object. -- implement dump_add_root_block and use this to handle dump_add_opaque. -- factor out some code duplicated in kkcc and pdump. Other allocation/object-related: -- change various *slots.h so MARKED_SLOT() call no longer includes semicolon. -- free_marker() takes a Lisp_Object not a direct pointer. -- make bit vectors lcrecords, like vectors, and eliminate code that essentially duplicated the lcrecord handling. -- additional asserts in FREE_FIXED_TYPE, formerly duplicated in the various callers of this. -- all lcrecord allocation functions now zero out the returned lcrecords. unnecessary calls to zero_lcrecord removed. add long comment describing these functions. -- extract out process and coding system slots, like for buffers, frames, etc. -- lcrecords now set the type of items sitting on the free list to lcrecord_type_free. -- changes to the way that gap arrays are allocated, for kkcc's benefit -- now, one single memory block with a stretchy array on the end, instead of a separate block holding the array. Error-checking-related: -- now can compile with C++ under MS Windows. clean up compile errors discovered that way. (a few were real problems) -- add C++ error-checking code to verify problems with mismatched GCPRO/UNGCPRO. (there were a few in the kkcc code.) add long comment about how to catch insufficient GCPRO (yes, it's possible using C++). -- add debug_p4(), a simple object printer, when debug_print() doesn't work. -- add dp() and db() as short synonyms of debug_print(), debug_backtrace(). -- `print' tries EXTREMELY hard to avoid core dumping when printing when crashing or from debug_print(), and tries as hard as it reasonably can in other situations. -- Correct the message output upon crashing to be more up-to-date. Event-related: -- document event-matches-key-specifier-p better. -- generalize the dispatch queues formerly duplicated in the various event implementations. add event methods to drain pending events. generalize and clean up QUIT handling, removing event-specific quit processing. allow arbitrary keystrokes, not just ASCII, to be the QUIT char. among other things, this should fix some longstanding bugs in X quit handling. long comment describing the various event queues. -- implement delaying of XFlush() if there are pending expose events. SOMEONE PLEASE TRY THIS OUT. -- Fix `xemacs -batch -l dunnet' under Cygwin. Try to fix under MS Windows but not quite there yet. Other: -- class -> class_ and no more C++ games with this item. new -> new_ in the lwlib code, so far not elsewhere. -- use `struct htentry' not `struct hentry' in elhash.c to avoid debugger confusion with hash.c. -- new macros ALIST_LOOP_3, ALIST_LOOP_4. * README.kkcc: * alloc.c: * alloc.c (deadbeef_memory): * alloc.c (allocate_lisp_storage): * alloc.c (copy_lisp_object): * alloc.c (ALLOCATE_FIXED_TYPE_1): * alloc.c (FREE_FIXED_TYPE): * alloc.c (make_vector_internal): * alloc.c (make_bit_vector_internal): * alloc.c (make_key_data): * alloc.c (make_button_data): * alloc.c (make_motion_data): * alloc.c (make_process_data): * alloc.c (make_timeout_data): * alloc.c (make_magic_data): * alloc.c (make_magic_eval_data): * alloc.c (make_eval_data): * alloc.c (make_misc_user_data): * alloc.c (struct string_chars_block): * alloc.c (mark_lcrecord_list): * alloc.c (make_lcrecord_list): * alloc.c (alloc_managed_lcrecord): * alloc.c (free_managed_lcrecord): * alloc.c (alloc_automanaged_lcrecord): * alloc.c (staticpro_1): * alloc.c (staticpro): * alloc.c (lispdesc_indirect_count_1): * alloc.c (lispdesc_indirect_description_1): * alloc.c (lispdesc_one_description_line_size): * alloc.c (lispdesc_structure_size): * alloc.c (mark_object_maybe_checking_free): * alloc.c (mark_with_description): * alloc.c (mark_struct_contents): * alloc.c (mark_object): * alloc.c (tick_lcrecord_stats): * alloc.c (free_cons): * alloc.c (free_key_data): * alloc.c (free_button_data): * alloc.c (free_motion_data): * alloc.c (free_process_data): * alloc.c (free_timeout_data): * alloc.c (free_magic_data): * alloc.c (free_magic_eval_data): * alloc.c (free_eval_data): * alloc.c (free_misc_user_data): * alloc.c (free_marker): * alloc.c (compact_string_chars): * alloc.c (gc_sweep): * alloc.c (garbage_collect_1): * alloc.c (Fgarbage_collect): * alloc.c (common_init_alloc_early): * alloc.c (init_alloc_early): * alloc.c (init_alloc_once_early): * buffer.c: * buffer.c (mark_buffer): * buffer.c (MARKED_SLOT): * buffer.c (cleanup_buffer_undo_lists): * buffer.c (Fget_file_buffer): * buffer.h (MARKED_SLOT): * bufslots.h: * bytecode.c: * callint.c: * casetab.c: * chartab.c: * chartab.c (symbol_to_char_table_type): * cmdloop.c: * cmdloop.c (Fcommand_loop_1): * config.h.in (new): * conslots.h: * console-gtk-impl.h (struct gtk_frame): * console-impl.h: * console-impl.h (struct console): * console-impl.h (MARKED_SLOT): * console-impl.h (CONSOLE_QUIT_EVENT): * console-msw-impl.h (XM_BUMPQUEUE): * console-msw.c (write_string_to_mswindows_debugging_output): * console-msw.h: * console-stream-impl.h: * console-stream-impl.h (struct stream_console): * console-stream.c: * console-stream.c (stream_init_console): * console-stream.h: * console-tty.c: * console-tty.h: * console-x.h: * console.c: * console.c (mark_console): * console.c (MARKED_SLOT): * console.c (allocate_console): * console.c (get_console_variant): * console.c (create_console): * console.c (delete_console_internal): * console.c (Fset_input_mode): * console.c (Fcurrent_input_mode): * console.c (common_init_complex_vars_of_console): * console.h: * console.h (console_variant): * console.h (device_metrics): * data.c: * data.c (Faref): * data.c (Faset): * data.c (decode_weak_list_type): * database.c: * debug.c (xemacs_debug_loop): * debug.c (FROB): * debug.c (Fadd_debug_class_to_check): * debug.c (Fdelete_debug_class_to_check): * debug.c (Fset_debug_classes_to_check): * debug.c (Fset_debug_class_types_to_check): * debug.c (Fdebug_types_being_checked): * debug.h (DASSERT): * device-gtk.c: * device-impl.h (struct device): * device-impl.h (MARKED_SLOT): * device-msw.c: * device-x.c: * device-x.c (x_init_device_class): * device-x.c (x_comp_visual_info): * device-x.c (x_try_best_visual_class): * device-x.c (x_init_device): * device-x.c (construct_name_list): * device-x.c (x_get_resource_prefix): * device-x.c (Fx_get_resource): * device-x.c (Fx_display_visual_class): * device.c: * device.c (MARKED_SLOT): * device.c (allocate_device): * device.c (Fmake_device): * device.c (delete_device_internal): * device.c (Fset_device_class): * device.h: * devslots.h: * devslots.h (MARKED_SLOT): * dialog-msw.c: * dired-msw.c (mswindows_ls_sort_fcn): * dired-msw.c (mswindows_get_files): * dired-msw.c (mswindows_format_file): * doprnt.c (parse_doprnt_spec): * dumper.c: * dumper.c (struct): * dumper.c (dump_add_root_block): * dumper.c (dump_add_root_struct_ptr): * dumper.c (dump_add_root_lisp_object): * dumper.c (pdump_struct_list_elt): * dumper.c (pdump_get_entry_list): * dumper.c (pdump_backtrace): * dumper.c (pdump_bump_depth): * dumper.c (pdump_register_sub): * dumper.c (pdump_register_object): * dumper.c (pdump_register_struct_contents): * dumper.c (pdump_register_struct): * dumper.c (pdump_store_new_pointer_offsets): * dumper.c (pdump_dump_data): * dumper.c (pdump_reloc_one): * dumper.c (pdump_allocate_offset): * dumper.c (pdump_scan_by_alignment): * dumper.c (pdump_dump_root_blocks): * dumper.c (pdump_dump_rtables): * dumper.c (pdump_dump_root_lisp_objects): * dumper.c (pdump): * dumper.c (pdump_load_finish): * dumper.c (pdump_file_get): * dumper.c (pdump_resource_get): * dumper.c (pdump_load): * editfns.c (save_excursion_restore): * editfns.c (user_login_name): * editfns.c (save_restriction_restore): * elhash.c: * elhash.c (htentry): * elhash.c (struct Lisp_Hash_Table): * elhash.c (HTENTRY_CLEAR_P): * elhash.c (LINEAR_PROBING_LOOP): * elhash.c (check_hash_table_invariants): * elhash.c (mark_hash_table): * elhash.c (hash_table_equal): * elhash.c (print_hash_table_data): * elhash.c (free_hentries): * elhash.c (make_general_lisp_hash_table): * elhash.c (decode_hash_table_weakness): * elhash.c (decode_hash_table_test): * elhash.c (Fcopy_hash_table): * elhash.c (resize_hash_table): * elhash.c (pdump_reorganize_hash_table): * elhash.c (find_htentry): * elhash.c (Fgethash): * elhash.c (Fputhash): * elhash.c (remhash_1): * elhash.c (Fremhash): * elhash.c (Fclrhash): * elhash.c (copy_compress_hentries): * elhash.c (elisp_maphash_unsafe): * elhash.c (finish_marking_weak_hash_tables): * elhash.c (prune_weak_hash_tables): * elhash.h: * emacs.c: * emacs.c (main_1): * emacs.c (main): * emacs.c (shut_down_emacs): * emodules.h (dump_add_root_lisp_object): * eval.c: * eval.c (unwind_to_catch): * eval.c (maybe_signal_error_1): * eval.c (maybe_signal_continuable_error_1): * eval.c (maybe_signal_error): * eval.c (maybe_signal_continuable_error): * eval.c (maybe_signal_error_2): * eval.c (maybe_signal_continuable_error_2): * eval.c (maybe_signal_ferror): * eval.c (maybe_signal_continuable_ferror): * eval.c (maybe_signal_ferror_with_frob): * eval.c (maybe_signal_continuable_ferror_with_frob): * eval.c (maybe_syntax_error): * eval.c (maybe_sferror): * eval.c (maybe_invalid_argument): * eval.c (maybe_invalid_constant): * eval.c (maybe_invalid_operation): * eval.c (maybe_invalid_change): * eval.c (maybe_invalid_state): * eval.c (Feval): * eval.c (call_trapping_problems): * eval.c (call_with_suspended_errors): * eval.c (warn_when_safe_lispobj): * eval.c (warn_when_safe): * eval.c (vars_of_eval): * event-Xt.c: * event-Xt.c (maybe_define_x_key_as_self_inserting_character): * event-Xt.c (x_to_emacs_keysym): * event-Xt.c (x_event_to_emacs_event): * event-Xt.c (emacs_Xt_enqueue_focus_event): * event-Xt.c (emacs_Xt_format_magic_event): * event-Xt.c (emacs_Xt_compare_magic_event): * event-Xt.c (emacs_Xt_hash_magic_event): * event-Xt.c (emacs_Xt_handle_magic_event): * event-Xt.c (Xt_timeout_to_emacs_event): * event-Xt.c (Xt_process_to_emacs_event): * event-Xt.c (signal_special_Xt_user_event): * event-Xt.c (emacs_Xt_next_event): * event-Xt.c (emacs_Xt_event_handler): * event-Xt.c (emacs_Xt_drain_queue): * event-Xt.c (emacs_Xt_event_pending_p): * event-Xt.c (check_if_pending_expose_event): * event-Xt.c (reinit_vars_of_event_Xt): * event-Xt.c (vars_of_event_Xt): * event-gtk.c: * event-gtk.c (IS_MODIFIER_KEY): * event-gtk.c (emacs_gtk_format_magic_event): * event-gtk.c (emacs_gtk_compare_magic_event): * event-gtk.c (emacs_gtk_hash_magic_event): * event-gtk.c (emacs_gtk_handle_magic_event): * event-gtk.c (gtk_to_emacs_keysym): * event-gtk.c (gtk_timeout_to_emacs_event): * event-gtk.c (gtk_process_to_emacs_event): * event-gtk.c (dragndrop_data_received): * event-gtk.c (signal_special_gtk_user_event): * event-gtk.c (emacs_gtk_next_event): * event-gtk.c (gtk_event_to_emacs_event): * event-gtk.c (generic_event_handler): * event-gtk.c (emacs_shell_event_handler): * event-gtk.c (emacs_gtk_drain_queue): * event-gtk.c (emacs_gtk_event_pending_p): * event-gtk.c (reinit_vars_of_event_gtk): * event-gtk.c (vars_of_event_gtk): * event-msw.c: * event-msw.c (struct winsock_stream): * event-msw.c (winsock_reader): * event-msw.c (winsock_writer): * event-msw.c (mswindows_enqueue_dispatch_event): * event-msw.c (mswindows_enqueue_misc_user_event): * event-msw.c (mswindows_enqueue_magic_event): * event-msw.c (mswindows_enqueue_process_event): * event-msw.c (mswindows_enqueue_mouse_button_event): * event-msw.c (mswindows_enqueue_keypress_event): * event-msw.c (mswindows_dequeue_dispatch_event): * event-msw.c (emacs_mswindows_drain_queue): * event-msw.c (mswindows_need_event_in_modal_loop): * event-msw.c (mswindows_need_event): * event-msw.c (mswindows_wm_timer_callback): * event-msw.c (dde_eval_string): * event-msw.c (Fdde_alloc_advise_item): * event-msw.c (mswindows_dde_callback): * event-msw.c (mswindows_wnd_proc): * event-msw.c (remove_timeout_mapper): * event-msw.c (emacs_mswindows_remove_timeout): * event-msw.c (emacs_mswindows_event_pending_p): * event-msw.c (emacs_mswindows_format_magic_event): * event-msw.c (emacs_mswindows_compare_magic_event): * event-msw.c (emacs_mswindows_hash_magic_event): * event-msw.c (emacs_mswindows_handle_magic_event): * event-msw.c (emacs_mswindows_select_console): * event-msw.c (emacs_mswindows_unselect_console): * event-msw.c (reinit_vars_of_event_mswindows): * event-msw.c (vars_of_event_mswindows): * event-stream.c: * event-stream.c (mark_command_builder): * event-stream.c (reset_command_builder_event_chain): * event-stream.c (allocate_command_builder): * event-stream.c (copy_command_builder): * event-stream.c (command_builder_append_event): * event-stream.c (event_stream_event_pending_p): * event-stream.c (event_stream_force_event_pending): * event-stream.c (maybe_read_quit_event): * event-stream.c (event_stream_drain_queue): * event-stream.c (remove_quit_p_event): * event-stream.c (event_stream_quit_p): * event-stream.c (echo_key_event): * event-stream.c (maybe_kbd_translate): * event-stream.c (execute_help_form): * event-stream.c (event_stream_generate_wakeup): * event-stream.c (enqueue_dispatch_event): * event-stream.c (enqueue_magic_eval_event): * event-stream.c (Fenqueue_eval_event): * event-stream.c (enqueue_misc_user_event): * event-stream.c (enqueue_misc_user_event_pos): * event-stream.c (next_event_internal): * event-stream.c (Fnext_event): * event-stream.c (Faccept_process_output): * event-stream.c (execute_internal_event): * event-stream.c (munge_keymap_translate): * event-stream.c (command_builder_find_leaf_no_mule_processing): * event-stream.c (command_builder_find_leaf): * event-stream.c (lookup_command_event): * event-stream.c (is_scrollbar_event): * event-stream.c (execute_command_event): * event-stream.c (Fdispatch_event): * event-stream.c (Fread_key_sequence): * event-stream.c (dribble_out_event): * event-stream.c (vars_of_event_stream): * event-tty.c (tty_timeout_to_emacs_event): * event-tty.c (emacs_tty_next_event): * event-tty.c (emacs_tty_drain_queue): * event-tty.c (reinit_vars_of_event_tty): * event-unixoid.c: * event-unixoid.c (find_tty_or_stream_console_from_fd): * event-unixoid.c (read_event_from_tty_or_stream_desc): * event-unixoid.c (drain_tty_devices): * event-unixoid.c (poll_fds_for_input): * events.c: * events.c (deinitialize_event): * events.c (zero_event): * events.c (mark_event): * events.c (print_event_1): * events.c (print_event): * events.c (event_equal): * events.c (event_hash): * events.c (Fmake_event): * events.c (Fdeallocate_event): * events.c (Fcopy_event): * events.c (map_event_chain_remove): * events.c (character_to_event): * events.c (event_to_character): * events.c (Fevent_to_character): * events.c (format_event_object): * events.c (upshift_event): * events.c (downshift_event): * events.c (event_upshifted_p): * events.c (Fevent_live_p): * events.c (Fevent_type): * events.c (Fevent_timestamp): * events.c (CHECK_EVENT_TYPE): * events.c (CHECK_EVENT_TYPE2): * events.c (CHECK_EVENT_TYPE3): * events.c (Fevent_key): * events.c (Fevent_button): * events.c (Fevent_modifier_bits): * events.c (event_x_y_pixel_internal): * events.c (event_pixel_translation): * events.c (Fevent_process): * events.c (Fevent_function): * events.c (Fevent_object): * events.c (Fevent_properties): * events.c (syms_of_events): * events.c (vars_of_events): * events.h: * events.h (struct event_stream): * events.h (struct Lisp_Key_Data): * events.h (KEY_DATA_KEYSYM): * events.h (EVENT_KEY_KEYSYM): * events.h (struct Lisp_Button_Data): * events.h (EVENT_BUTTON_BUTTON): * events.h (struct Lisp_Motion_Data): * events.h (EVENT_MOTION_X): * events.h (struct Lisp_Process_Data): * events.h (EVENT_PROCESS_PROCESS): * events.h (struct Lisp_Timeout_Data): * events.h (EVENT_TIMEOUT_INTERVAL_ID): * events.h (struct Lisp_Eval_Data): * events.h (EVENT_EVAL_FUNCTION): * events.h (struct Lisp_Misc_User_Data): * events.h (EVENT_MISC_USER_FUNCTION): * events.h (struct Lisp_Magic_Eval_Data): * events.h (EVENT_MAGIC_EVAL_INTERNAL_FUNCTION): * events.h (struct Lisp_Magic_Data): * events.h (EVENT_MAGIC_UNDERLYING): * events.h (EVENT_MAGIC_GDK_EVENT): * events.h (struct Lisp_Event): * events.h (XEVENT_CHANNEL): * events.h (SET_EVENT_TIMESTAMP_ZERO): * events.h (SET_EVENT_CHANNEL): * events.h (SET_EVENT_NEXT): * events.h (XSET_EVENT_TYPE): * events.h (struct command_builder): * extents.c: * extents.c (gap_array_adjust_markers): * extents.c (gap_array_recompute_derived_values): * extents.c (gap_array_move_gap): * extents.c (gap_array_make_gap): * extents.c (gap_array_insert_els): * extents.c (gap_array_delete_els): * extents.c (gap_array_make_marker): * extents.c (gap_array_delete_marker): * extents.c (gap_array_move_marker): * extents.c (make_gap_array): * extents.c (free_gap_array): * extents.c (extent_list_num_els): * extents.c (extent_list_insert): * extents.c (mark_extent_auxiliary): * extents.c (allocate_extent_auxiliary): * extents.c (decode_extent_at_flag): * extents.c (verify_extent_mapper): * extents.c (symbol_to_glyph_layout): * extents.c (syms_of_extents): * faces.c: * file-coding.c: * file-coding.c (struct_detector_category_description =): * file-coding.c (detector_category_dynarr_description_1): * file-coding.c (struct_detector_description =): * file-coding.c (detector_dynarr_description_1): * file-coding.c (MARKED_SLOT): * file-coding.c (mark_coding_system): * file-coding.c (coding_system_extra_description_map): * file-coding.c (coding_system_description): * file-coding.c (allocate_coding_system): * file-coding.c (symbol_to_eol_type): * file-coding.c (Fcoding_system_aliasee): * file-coding.c (set_coding_stream_coding_system): * file-coding.c (struct convert_eol_coding_system): * file-coding.c (struct undecided_coding_system): * file-coding.c (undecided_mark_coding_stream): * file-coding.c (coding_category_symbol_to_id): * file-coding.c (struct gzip_coding_system): * file-coding.c (coding_system_type_create): * file-coding.h: * file-coding.h (struct Lisp_Coding_System): * file-coding.h (CODING_SYSTEM_SLOT_DECLARATION): * file-coding.h (coding_system_variant): * file-coding.h (struct coding_system_methods): * file-coding.h (DEFINE_CODING_SYSTEM_TYPE_WITH_DATA): * file-coding.h (INITIALIZE_CODING_SYSTEM_TYPE_WITH_DATA): * file-coding.h (struct coding_stream): * fileio.c (Fsubstitute_in_file_name): * floatfns.c: * fns.c: * fns.c (base64_encode_1): * frame-gtk.c: * frame-gtk.c (Fgtk_start_drag_internal): * frame-impl.h (struct frame): * frame-impl.h (MARKED_SLOT): * frame-msw.c: * frame-x.c: * frame-x.c (Fcde_start_drag_internal): * frame-x.c (Foffix_start_drag_internal): * frame.c: * frame.c (MARKED_SLOT): * frame.c (allocate_frame_core): * frame.c (delete_frame_internal): * frame.c (Fmouse_position_as_motion_event): * frameslots.h: * frameslots.h (MARKED_SLOT_ARRAY): * free-hook.c: * glyphs-msw.c (mswindows_widget_instantiate): * glyphs-x.c: * glyphs-x.c (convert_EImage_to_XImage): * glyphs.c: * glyphs.c (process_image_string_instantiator): * glyphs.c (mark_image_instance): * glyphs.c (allocate_image_instance): * glyphs.c (unmap_subwindow): * glyphs.c (map_subwindow): * glyphs.c (syms_of_glyphs): * glyphs.c (specifier_type_create_image): * glyphs.h: * glyphs.h (struct text_image_instance): * glyphs.h (struct Lisp_Image_Instance): * gmalloc.c: * gmalloc.c ("C"): * gpmevent.c (Freceive_gpm_event): * gpmevent.c (gpm_next_event_cb): * gpmevent.c (vars_of_gpmevent): * gtk-glue.c (gdk_event_to_emacs_event): * gtk-xemacs.c (gtk_xemacs_class_init): * gui-msw.c: * gui-msw.c (mswindows_handle_gui_wm_command): * gui-msw.c (mswindows_translate_menu_or_dialog_item): * gui-x.c: * gui-x.c (mark_popup_data): * gui-x.c (snarf_widget_value_mapper): * gui-x.c (gcpro_popup_callbacks): * gui-x.c (ungcpro_popup_callbacks): * gui-x.c (free_popup_widget_value_tree): * gui-x.c (popup_selection_callback): * gui-x.h: * gui-x.h (struct popup_data): * gui.c: * gui.c (allocate_gui_item): * gutter.c (decode_gutter_position): * hash.c (NULL_ENTRY): * indent.c (vmotion_1): * indent.c (vmotion_pixels): * input-method-motif.c (res): * input-method-xlib.c (IMInstantiateCallback): * input-method-xlib.c (XIM_init_device): * input-method-xlib.c (res): * intl-encap-win32.c: * intl-encap-win32.c (qxeSHGetDataFromIDList): * intl-win32.c: * intl-win32.c (mswindows_multibyte_cp_type): * intl-win32.c (struct mswindows_multibyte_coding_system): * keymap.c: * keymap.c (make_key_description): * keymap.c (keymap_store): * keymap.c (get_keyelt): * keymap.c (keymap_lookup_1): * keymap.c (define_key_parser): * keymap.c (key_desc_list_to_event): * keymap.c (event_matches_key_specifier_p): * keymap.c (meta_prefix_char_p): * keymap.c (ensure_meta_prefix_char_keymapp): * keymap.c (Fdefine_key): * keymap.c (struct raw_lookup_key_mapper_closure): * keymap.c (raw_lookup_key): * keymap.c (raw_lookup_key_mapper): * keymap.c (lookup_keys): * keymap.c (lookup_events): * keymap.c (Flookup_key): * keymap.c (struct map_keymap_unsorted_closure): * keymap.c (map_keymap_unsorted_mapper): * keymap.c (map_keymap_sorted): * keymap.c (map_keymap_mapper): * keymap.c (map_keymap): * keymap.c (accessible_keymaps_mapper_1): * keymap.c (Faccessible_keymaps): * keymap.c (Fsingle_key_description): * keymap.c (raw_keys_to_keys): * keymap.c (format_raw_keys): * keymap.c (where_is_recursive_mapper): * keymap.c (where_is_internal): * keymap.c (describe_map_mapper_shadow_search): * keymap.c (keymap_lookup_inherited_mapper): * keymap.c (describe_map_mapper): * keymap.h (event_matches_key_specifier_p): * lisp.h: * lisp.h (this): * lisp.h (RETURN_NOT_REACHED): * lisp.h (struct Lisp_Vector): * lisp.h (struct Lisp_Bit_Vector): * lisp.h (UNGCPRO_1): * lisp.h (NUNGCPRO): * lisp.h (NNUNGCPRO): * lisp.h (DECLARE_INLINE_HEADER): * lrecord.h: * lrecord.h (struct lrecord_header): * lrecord.h (struct lcrecord_header): * lrecord.h (lrecord_type): * lrecord.h (struct lrecord_implementation): * lrecord.h (RECORD_DUMPABLE): * lrecord.h (memory_description_type): * lrecord.h (data_description_entry_flags): * lrecord.h (struct memory_description): * lrecord.h (struct sized_memory_description): * lrecord.h (XD_INDIRECT): * lrecord.h (XD_IS_INDIRECT): * lrecord.h (XD_DYNARR_DESC): * lrecord.h (DEFINE_BASIC_LRECORD_IMPLEMENTATION): * lrecord.h (MAKE_LRECORD_IMPLEMENTATION): * lrecord.h (MAKE_EXTERNAL_LRECORD_IMPLEMENTATION): * lrecord.h (alloc_lcrecord_type): * lstream.c: * lstream.c (Lstream_new): * lstream.c (lisp_buffer_marker): * lstream.h: * lstream.h (lstream_implementation): * lstream.h (DEFINE_LSTREAM_IMPLEMENTATION): * lstream.h (DEFINE_LSTREAM_IMPLEMENTATION_WITH_DATA): * marker.c: * marker.c (copy_marker_1): * mem-limits.h: * menubar-gtk.c: * menubar-gtk.c (gtk_popup_menu): * menubar-msw.c: * menubar-msw.c (mswindows_popup_menu): * menubar-x.c (make_dummy_xbutton_event): * menubar-x.c (command_builder_operate_menu_accelerator): * menubar-x.c (menu_accelerator_safe_compare): * menubar-x.c (menu_accelerator_safe_mod_compare): * mule-charset.c: * mule-charset.c (make_charset): * mule-charset.c (Fcharset_property): * mule-coding.c: * mule-coding.c (ccs_description_1): * mule-coding.c (ccs_description =): * mule-coding.c (ccsd_description_1): * mule-coding.c (ccsd_description =): * nt.c (getpwnam): * nt.c (init_mswindows_environment): * nt.c (get_cached_volume_information): * nt.c (mswindows_is_executable): * nt.c (read_unc_volume): * nt.c (mswindows_access): * nt.c (mswindows_link): * nt.c (mswindows_fstat): * nt.c (mswindows_stat): * nt.c (mswindows_executable_type): * nt.c (Fmswindows_short_file_name): * nt.c (Fmswindows_long_file_name): * objects-impl.h (struct Lisp_Color_Instance): * objects-impl.h (struct Lisp_Font_Instance): * objects-tty.c: * objects-x.c (allocate_nearest_color): * objects.c: * objects.c (Fmake_color_instance): * objects.c (Fmake_font_instance): * objects.c (font_instantiate): * opaque.c: * opaque.c (make_opaque): * opaque.c (make_opaque_ptr): * opaque.c (reinit_opaque_early): * opaque.c (init_opaque_once_early): * print.c: * print.c (printing_badness): * print.c (printing_major_badness): * print.c (print_internal): * print.c (debug_p4): * print.c (dp): * print.c (debug_backtrace): * process-nt.c (nt_create_process): * process-nt.c (get_internet_address): * process-unix.c: * process-unix.c (struct unix_process_data): * process-unix.c (get_internet_address): * process-unix.c (unix_alloc_process_data): * process-unix.c (unix_create_process): * process-unix.c (try_to_initialize_subtty): * process-unix.c (unix_kill_child_process): * process-unix.c (process_type_create_unix): * process.c: * process.c (mark_process): * process.c (MARKED_SLOT): * process.c (make_process_internal): * process.c (Fprocess_tty_name): * process.c (decode_signal): * process.h: * procimpl.h: * procimpl.h (struct process_methods): * procimpl.h (struct Lisp_Process): * rangetab.c: * realpath.c (readlink_and_correct_case): * redisplay-x.c (x_window_output_end): * redisplay-x.c (x_redraw_exposed_area): * redisplay-x.c (x_clear_frame): * redisplay.c: * redisplay.h: * redisplay.h (struct rune_dglyph): * redisplay.h (struct rune): * scrollbar.c: * scrollbar.c (create_scrollbar_instance): * specifier.c: * specifier.c (specifier_empty_extra_description_1): * specifier.c (make_specifier_internal): * specifier.c (decode_locale_type): * specifier.c (decode_how_to_add_specification): * specifier.h: * specifier.h (struct specifier_methods): * specifier.h (DEFINE_SPECIFIER_TYPE_WITH_DATA): * specifier.h (INITIALIZE_SPECIFIER_TYPE_WITH_DATA): * symbols.c: * symbols.c (Fsetplist): * symbols.c (default_value): * symbols.c (decode_magic_handler_type): * symbols.c (handler_type_from_function_symbol): * symbols.c (Fdefvaralias): * symbols.c (init_symbols_once_early): * symbols.c (reinit_symbols_early): * symsinit.h: * sysdep.c (sys_subshell): * sysdep.c (tty_init_sys_modes_on_device): * syswindows.h: * text.c (dfc_convert_to_external_format): * text.c (dfc_convert_to_internal_format): * text.c (reinit_eistring_early): * text.c (init_eistring_once_early): * text.c (reinit_vars_of_text): * text.h: * text.h (INC_IBYTEPTR_FMT): * text.h (DEC_IBYTEPTR_FMT): * toolbar.c: * toolbar.c (decode_toolbar_position): * tooltalk.c: * ui-gtk.c: * unexnt.c: * unexnt.c (_start): * unexnt.c (unexec): * unexnt.c (get_section_info): * unicode.c: * unicode.c (vars_of_unicode): * window.c: * window.c (allocate_window): * window.c (new_window_mirror): * window.c (update_mirror_internal): * winslots.h:
author michaels
date Sun, 12 Jan 2003 11:08:22 +0000
parents c925bacdda60
children 70921960b980
comparison
equal deleted inserted replaced
1203:5f2f8dcbfb3e 1204:e22b0213b713
36 #include "frame-impl.h" 36 #include "frame-impl.h"
37 #include "redisplay.h" 37 #include "redisplay.h"
38 #include "sysdep.h" 38 #include "sysdep.h"
39 #include "window.h" 39 #include "window.h"
40 40
41 #include "console-stream-impl.h"
41 #ifdef HAVE_TTY 42 #ifdef HAVE_TTY
42 #include "console-tty-impl.h" 43 #include "console-tty-impl.h"
43 #endif 44 #endif
44 45
45 Lisp_Object Vconsole_list, Vselected_console; 46 Lisp_Object Vconsole_list, Vselected_console;
104 105
105 console_type_entry_dynarr *the_console_type_entry_dynarr; 106 console_type_entry_dynarr *the_console_type_entry_dynarr;
106 107
107 108
108 109
109 #ifdef USE_KKCC 110 static const struct memory_description console_data_description_1 []= {
110 111 #ifdef HAVE_TTY
111 static const struct lrecord_description empty_condata_description [] = { 112 { XD_STRUCT_PTR, tty_console, 1, &tty_console_data_description},
113 #endif
114 { XD_STRUCT_PTR, stream_console, 1, &stream_console_data_description},
112 { XD_END } 115 { XD_END }
113 }; 116 };
114 117
115 static const struct lrecord_description tty_condata_description [] = { 118 static const struct sized_memory_description console_data_description = {
116 { XD_LISP_OBJECT, offsetof (struct tty_console, terminal_type) }, 119 sizeof (void *), console_data_description_1
117 { XD_LISP_OBJECT, offsetof (struct tty_console, instream) }, 120 };
118 { XD_LISP_OBJECT, offsetof (struct tty_console, outstream) }, 121
122 static const struct memory_description console_description [] = {
123 { XD_INT, offsetof (struct console, contype) },
124 #define MARKED_SLOT(x) { XD_LISP_OBJECT, offsetof (struct console, x) },
125 #include "conslots.h"
126 { XD_STRUCT_PTR, offsetof (struct console, conmeths), 1,
127 &console_methods_description },
128 { XD_UNION, offsetof (struct console, console_data),
129 XD_INDIRECT (0, 0), &console_data_description },
119 { XD_END } 130 { XD_END }
120 }; 131 };
121 132
122 static const struct struct_description condata_description []= {
123 { dead_console, empty_condata_description },
124 { tty_console, tty_condata_description },
125 { gtk_console, empty_condata_description },
126 { x_console, empty_condata_description },
127 { mswindows_console, empty_condata_description },
128 { stream_console, empty_condata_description },
129 { XD_END }
130 };
131
132 static const struct lrecord_description conmeths_description_1 [] = {
133 { XD_LISP_OBJECT, offsetof (struct console_methods, symbol) },
134 /*{ XD_LISP_OBJECT, offsetof (struct console_methods, predicate_symbol) },
135 { XD_LISP_OBJECT, offsetof (struct console_methods, image_conversion_list) },*/
136 { XD_END }
137 };
138
139 static const struct struct_description conmeths_description = {
140 sizeof (struct console_methods),
141 conmeths_description_1
142 };
143
144 static const struct lrecord_description console_description [] = {
145 { XD_INT, offsetof (struct console, contype) },
146 { XD_LISP_OBJECT, offsetof (struct console, name) },
147 { XD_LISP_OBJECT, offsetof (struct console, connection) },
148 { XD_LISP_OBJECT, offsetof (struct console, canon_connection) },
149 { XD_LISP_OBJECT, offsetof (struct console, device_list) },
150 { XD_LISP_OBJECT, offsetof (struct console, selected_device) },
151 { XD_LISP_OBJECT, offsetof (struct console, last_nonminibuf_frame) },
152 { XD_LISP_OBJECT, offsetof (struct console, overriding_terminal_local_map) },
153 { XD_LISP_OBJECT, offsetof (struct console, last_command) },
154 { XD_LISP_OBJECT, offsetof (struct console, prefix_arg) },
155 { XD_LISP_OBJECT, offsetof (struct console, command_builder) },
156 { XD_LISP_OBJECT, offsetof (struct console, defining_kbd_macro) },
157 { XD_LISP_OBJECT, offsetof (struct console, kbd_macro_builder) },
158 { XD_LISP_OBJECT, offsetof (struct console, last_kbd_macro) },
159 #ifdef HAVE_TTY
160 { XD_LISP_OBJECT, offsetof (struct console, tty_erase_char) },
161 #endif
162 { XD_LISP_OBJECT, offsetof (struct console, default_minibuffer_frame) },
163 { XD_LISP_OBJECT, offsetof (struct console, function_key_map) },
164 { XD_STRUCT_PTR, offsetof (struct console, conmeths), 1, &conmeths_description },
165 { XD_UNION, offsetof (struct console, console_data),
166 XD_INDIRECT (0, 0), condata_description },
167 { XD_END }
168 };
169
170 #endif /* USE_KKCC */
171
172 static Lisp_Object 133 static Lisp_Object
173 mark_console (Lisp_Object obj) 134 mark_console (Lisp_Object obj)
174 { 135 {
175 struct console *con = XCONSOLE (obj); 136 struct console *con = XCONSOLE (obj);
176 137
177 #define MARKED_SLOT(x) mark_object (con->x) 138 #define MARKED_SLOT(x) mark_object (con->x);
178 #include "conslots.h" 139 #include "conslots.h"
179 140
180 /* Can be zero for Vconsole_defaults, Vconsole_local_symbols */ 141 /* Can be zero for Vconsole_defaults, Vconsole_local_symbols */
181 if (con->conmeths) 142 if (con->conmeths)
182 { 143 {
202 write_fmt_string_lisp (printcharfun, " on %S", 1, 163 write_fmt_string_lisp (printcharfun, " on %S", 1,
203 CONSOLE_CONNECTION (con)); 164 CONSOLE_CONNECTION (con));
204 write_fmt_string (printcharfun, " 0x%x>", con->header.uid); 165 write_fmt_string (printcharfun, " 0x%x>", con->header.uid);
205 } 166 }
206 167
207 #ifdef USE_KKCC
208 DEFINE_LRECORD_IMPLEMENTATION ("console", console, 168 DEFINE_LRECORD_IMPLEMENTATION ("console", console,
209 0, /*dumpable-flag*/ 169 0, /*dumpable-flag*/
210 mark_console, print_console, 0, 0, 0, 170 mark_console, print_console, 0, 0, 0,
211 console_description, 171 console_description,
212 struct console); 172 struct console);
213 #else /* not USE_KKCC */
214 DEFINE_LRECORD_IMPLEMENTATION ("console", console,
215 mark_console, print_console, 0, 0, 0, 0,
216 struct console);
217 #endif /* not USE_KKCC */
218 173
174
175 static void
176 set_quit_events (struct console *con, Lisp_Object key)
177 {
178 /* Make sure to run Fcharacter_to_event() *BEFORE* setting QUIT_CHAR,
179 so that nothing is changed when invalid values trigger an error! */
180 con->quit_event = Fcharacter_to_event (key, Qnil, wrap_console (con), Qnil);
181 con->quit_char = key;
182 con->critical_quit_event = Fcopy_event (con->quit_event, Qnil);
183 upshift_event (con->critical_quit_event);
184 }
185
219 static struct console * 186 static struct console *
220 allocate_console (void) 187 allocate_console (Lisp_Object type)
221 { 188 {
222 Lisp_Object console; 189 Lisp_Object console;
223 struct console *con = alloc_lcrecord_type (struct console, &lrecord_console); 190 struct console *con = alloc_lcrecord_type (struct console, &lrecord_console);
224 struct gcpro gcpro1; 191 struct gcpro gcpro1;
225 192
226 copy_lcrecord (con, XCONSOLE (Vconsole_defaults)); 193 copy_lcrecord (con, XCONSOLE (Vconsole_defaults));
227 194
228 console = wrap_console (con); 195 console = wrap_console (con);
229 GCPRO1 (console); 196 GCPRO1 (console);
230 197
231 con->quit_char = 7; /* C-g */ 198 con->conmeths = decode_console_type (type, ERROR_ME);
199 con->contype = get_console_variant (type);
232 con->command_builder = allocate_command_builder (console, 1); 200 con->command_builder = allocate_command_builder (console, 1);
233 con->function_key_map = Fmake_sparse_keymap (Qnil); 201 con->function_key_map = Fmake_sparse_keymap (Qnil);
202 set_quit_events (con, make_char (7)); /* C-g */
234 203
235 UNGCPRO; 204 UNGCPRO;
236 return con; 205 return con;
237 } 206 }
238 207
261 maybe_invalid_constant ("Invalid console type", type, Qconsole, errb); 230 maybe_invalid_constant ("Invalid console type", type, Qconsole, errb);
262 231
263 return 0; 232 return 0;
264 } 233 }
265 234
266 #ifdef USE_KKCC
267 enum console_variant 235 enum console_variant
268 get_console_variant (Lisp_Object type) 236 get_console_variant (Lisp_Object type)
269 { 237 {
270 if (EQ (type, Qtty)) 238 if (EQ (type, Qtty))
271 { 239 return tty_console;
272 return tty_console;
273 }
274 240
275 if (EQ (type, Qgtk)) 241 if (EQ (type, Qgtk))
276 { 242 return gtk_console;
277 return gtk_console;
278 }
279 243
280 if (EQ (type, Qx)) 244 if (EQ (type, Qx))
281 { 245 return x_console;
282 return x_console;
283 }
284 246
285 if (EQ (type, Qmswindows)) 247 if (EQ (type, Qmswindows))
286 { 248 return mswindows_console;
287 return mswindows_console;
288 }
289 249
290 if (EQ (type, Qstream)) 250 if (EQ (type, Qstream))
291 { 251 return stream_console;
292 return stream_console;
293 }
294 252
295 abort (); /* should never happen */ 253 abort (); /* should never happen */
296 return dead_console; 254 return dead_console;
297 } 255 }
298 #endif /* USE_KKCC */
299 256
300 int 257 int
301 valid_console_type_p (Lisp_Object type) 258 valid_console_type_p (Lisp_Object type)
302 { 259 {
303 return decode_console_type (type, ERROR_ME_NOT) != 0; 260 return decode_console_type (type, ERROR_ME_NOT) != 0;
591 548
592 console = Ffind_console (connection, type); 549 console = Ffind_console (connection, type);
593 if (!NILP (console)) 550 if (!NILP (console))
594 return console; 551 return console;
595 552
596 con = allocate_console (); 553 con = allocate_console (type);
597 console = wrap_console (con); 554 console = wrap_console (con);
598 555
599 GCPRO1 (console); 556 GCPRO1 (console);
600
601 con->conmeths = decode_console_type (type, ERROR_ME);
602 #ifdef USE_KKCC
603 con->contype = get_console_variant (type);
604 #endif /* USE_KKCC */
605 557
606 CONSOLE_NAME (con) = name; 558 CONSOLE_NAME (con) = name;
607 CONSOLE_CONNECTION (con) = 559 CONSOLE_CONNECTION (con) =
608 semi_canonicalize_console_connection (con->conmeths, connection, 560 semi_canonicalize_console_connection (con->conmeths, connection,
609 ERROR_ME); 561 ERROR_ME);
699 static void 651 static void
700 nuke_all_console_slots (struct console *con, Lisp_Object zap) 652 nuke_all_console_slots (struct console *con, Lisp_Object zap)
701 { 653 {
702 zero_lcrecord (con); 654 zero_lcrecord (con);
703 655
704 #define MARKED_SLOT(x) con->x = zap 656 #define MARKED_SLOT(x) con->x = zap;
705 #include "conslots.h" 657 #include "conslots.h"
706 } 658 }
707 659
708 /* Delete console CON. 660 /* Delete console CON.
709 661
856 pointer to the dead console continues to hang around. Zero all 808 pointer to the dead console continues to hang around. Zero all
857 other structs in case someone tries to access something through 809 other structs in case someone tries to access something through
858 them. */ 810 them. */
859 nuke_all_console_slots (con, Qnil); 811 nuke_all_console_slots (con, Qnil);
860 con->conmeths = dead_console_methods; 812 con->conmeths = dead_console_methods;
813 con->contype = dead_console;
861 note_object_deleted (console); 814 note_object_deleted (console);
862 815
863 UNGCPRO; 816 UNGCPRO;
864 } 817 }
865 818
1131 return Qnil; 1084 return Qnil;
1132 } 1085 }
1133 1086
1134 DEFUN ("set-input-mode", Fset_input_mode, 3, 5, 0, /* 1087 DEFUN ("set-input-mode", Fset_input_mode, 3, 5, 0, /*
1135 Set mode of reading keyboard input. 1088 Set mode of reading keyboard input.
1136 First arg is ignored, for backward compatibility. 1089 First arg (formerly INTERRUPT-INPUT) is ignored, for backward compatibility.
1137 Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal 1090 Second arg FLOW non-nil means use ^S/^Q flow control for output to terminal
1138 (no effect except in CBREAK mode). 1091 (no effect except in CBREAK mode).
1139 Third arg META t means accept 8-bit input (for a Meta key). 1092 Third arg META t means accept 8-bit input (for a Meta key).
1140 META nil means ignore the top bit, on the assumption it is parity. 1093 META nil means ignore the top bit, on the assumption it is parity.
1141 Otherwise, accept 8-bit input and don't use the top bit for Meta. 1094 Otherwise, accept 8-bit input and don't use the top bit for Meta.
1153 EQ (meta, Qt) ? 1 : 1106 EQ (meta, Qt) ? 1 :
1154 2); 1107 2);
1155 1108
1156 if (!NILP (quit)) 1109 if (!NILP (quit))
1157 { 1110 {
1158 CHECK_CHAR_COERCE_INT (quit); 1111 if (CHAR_OR_CHAR_INTP (quit) && !meta_key)
1159 CONSOLE_QUIT_CHAR (con) = 1112 set_quit_events (con, make_char (XCHAR_OR_CHAR_INT (quit) & 0177));
1160 ((unsigned int) XCHAR (quit)) & (meta_key ? 0377 : 0177); 1113 else
1114 set_quit_events (con, quit);
1161 } 1115 }
1162 1116
1163 #ifdef HAVE_TTY 1117 #ifdef HAVE_TTY
1164 if (CONSOLE_TTY_P (con)) 1118 if (CONSOLE_TTY_P (con))
1165 { 1119 {
1191 `set-input-mode'. 1145 `set-input-mode'.
1192 */ 1146 */
1193 (console)) 1147 (console))
1194 { 1148 {
1195 struct console *con = decode_console (console); 1149 struct console *con = decode_console (console);
1196 Lisp_Object flow, meta, quit; 1150 Lisp_Object flow, meta;
1197 1151
1198 #ifdef HAVE_TTY 1152 #ifdef HAVE_TTY
1199 flow = CONSOLE_TTY_P (con) && TTY_FLAGS (con).flow_control ? Qt : Qnil; 1153 flow = CONSOLE_TTY_P (con) && TTY_FLAGS (con).flow_control ? Qt : Qnil;
1200 meta = (!CONSOLE_TTY_P (con) ? Qt : 1154 meta = (!CONSOLE_TTY_P (con) ? Qt :
1201 TTY_FLAGS (con).meta_key == 1 ? Qt : 1155 TTY_FLAGS (con).meta_key == 1 ? Qt :
1203 Qnil); 1157 Qnil);
1204 #else 1158 #else
1205 flow = Qnil; 1159 flow = Qnil;
1206 meta = Qt; 1160 meta = Qt;
1207 #endif 1161 #endif
1208 quit = make_char (CONSOLE_QUIT_CHAR (con)); 1162
1209 1163 return list4 (Qnil, flow, meta, CONSOLE_QUIT_CHAR (con));
1210 return list4 (Qnil, flow, meta, quit);
1211 } 1164 }
1212 1165
1213 1166
1214 /************************************************************************/ 1167 /************************************************************************/
1215 /* initialization */ 1168 /* initialization */
1253 1206
1254 DEFSYMBOL (Qsuspend_hook); 1207 DEFSYMBOL (Qsuspend_hook);
1255 DEFSYMBOL (Qsuspend_resume_hook); 1208 DEFSYMBOL (Qsuspend_resume_hook);
1256 } 1209 }
1257 1210
1258 static const struct lrecord_description cte_description_1[] = { 1211 static const struct memory_description cte_description_1[] = {
1259 { XD_LISP_OBJECT, offsetof (console_type_entry, symbol) }, 1212 { XD_LISP_OBJECT, offsetof (console_type_entry, symbol) },
1260 { XD_STRUCT_PTR, offsetof (console_type_entry, meths), 1, &console_methods_description }, 1213 { XD_STRUCT_PTR, offsetof (console_type_entry, meths), 1, &console_methods_description },
1261 { XD_END } 1214 { XD_END }
1262 }; 1215 };
1263 1216
1264 static const struct struct_description cte_description = { 1217 static const struct sized_memory_description cte_description = {
1265 sizeof (console_type_entry), 1218 sizeof (console_type_entry),
1266 cte_description_1 1219 cte_description_1
1267 }; 1220 };
1268 1221
1269 static const struct lrecord_description cted_description_1[] = { 1222 static const struct memory_description cted_description_1[] = {
1270 XD_DYNARR_DESC (console_type_entry_dynarr, &cte_description), 1223 XD_DYNARR_DESC (console_type_entry_dynarr, &cte_description),
1271 { XD_END } 1224 { XD_END }
1272 }; 1225 };
1273 1226
1274 const struct struct_description cted_description = { 1227 const struct sized_memory_description cted_description = {
1275 sizeof (console_type_entry_dynarr), 1228 sizeof (console_type_entry_dynarr),
1276 cted_description_1 1229 cted_description_1
1277 }; 1230 };
1278 1231
1279 static const struct lrecord_description console_methods_description_1[] = { 1232 static const struct memory_description console_methods_description_1[] = {
1280 { XD_LISP_OBJECT, offsetof (struct console_methods, symbol) }, 1233 { XD_LISP_OBJECT, offsetof (struct console_methods, symbol) },
1281 { XD_LISP_OBJECT, offsetof (struct console_methods, predicate_symbol) }, 1234 { XD_LISP_OBJECT, offsetof (struct console_methods, predicate_symbol) },
1282 { XD_LISP_OBJECT, offsetof (struct console_methods, image_conversion_list) }, 1235 { XD_LISP_OBJECT, offsetof (struct console_methods, image_conversion_list) },
1283 { XD_END } 1236 { XD_END }
1284 }; 1237 };
1285 1238
1286 const struct struct_description console_methods_description = { 1239 const struct sized_memory_description console_methods_description = {
1287 sizeof (struct console_methods), 1240 sizeof (struct console_methods),
1288 console_methods_description_1 1241 console_methods_description_1
1289 }; 1242 };
1290 1243
1291 1244
1410 nuke_all_console_slots (defs, Qnil); 1363 nuke_all_console_slots (defs, Qnil);
1411 1364
1412 /* Set up the non-nil default values of various console slots. 1365 /* Set up the non-nil default values of various console slots.
1413 Must do these before making the first console. 1366 Must do these before making the first console.
1414 */ 1367 */
1415 /* #### Anything needed here? */ 1368
1369 /* ... Nothing here for the moment.
1370 #### Console-local variables should probably be eliminated.*/
1416 1371
1417 { 1372 {
1418 /* 0 means var is always local. Default used only at creation. 1373 /* 0 means var is always local. Default used only at creation.
1419 * -1 means var is always local. Default used only at reset and 1374 * -1 means var is always local. Default used only at reset and
1420 * creation. 1375 * creation.
1479 console_local_symbols_saved_slots, 1434 console_local_symbols_saved_slots,
1480 CONSOLE_SLOTS_SIZE); 1435 CONSOLE_SLOTS_SIZE);
1481 } 1436 }
1482 1437
1483 1438
1484 static const struct lrecord_description console_slots_description_1[] = { 1439 static const struct memory_description console_slots_description_1[] = {
1485 { XD_LISP_OBJECT_ARRAY, 0, CONSOLE_SLOTS_COUNT }, 1440 { XD_LISP_OBJECT_ARRAY, 0, CONSOLE_SLOTS_COUNT },
1486 { XD_END } 1441 { XD_END }
1487 }; 1442 };
1488 1443
1489 static const struct struct_description console_slots_description = { 1444 static const struct sized_memory_description console_slots_description = {
1490 CONSOLE_SLOTS_SIZE, 1445 CONSOLE_SLOTS_SIZE,
1491 console_slots_description_1 1446 console_slots_description_1
1492 }; 1447 };
1493 1448
1494 void 1449 void
1592 DEFVAR_CONSOLE_LOCAL() calls. */ 1547 DEFVAR_CONSOLE_LOCAL() calls. */
1593 #define MARKED_SLOT(slot) \ 1548 #define MARKED_SLOT(slot) \
1594 if ((XINT (console_local_flags.slot) != -2 && \ 1549 if ((XINT (console_local_flags.slot) != -2 && \
1595 XINT (console_local_flags.slot) != -3) \ 1550 XINT (console_local_flags.slot) != -3) \
1596 != !(NILP (XCONSOLE (Vconsole_local_symbols)->slot))) \ 1551 != !(NILP (XCONSOLE (Vconsole_local_symbols)->slot))) \
1597 abort () 1552 abort ();
1598 #include "conslots.h" 1553 #include "conslots.h"
1599 } 1554 }