* mouse.el (mouse-menu-non-singleton): Use it.
(mouse-major-mode-menu): Remove hack made unnecessary.
* keymap.c (Qkeymap_canonicalize): New var.
(Fmap_keymap_internal): New fun.
(describe_map): Use keymap-canonicalize.
(Fundo_boundary): Set them.
(syms_of_undo): Initialize them.
(record_point): Use them instead of last_point_position*.
(last_undo_buffer): Change type.
(Qdeseret, Qglagolitic, Qgothic, Qhanunoo, Qkharoshthi)
(Qlimbu, Qlinear_b, Qold_italic, Qold_persian, Qosmanya)
(Qphags_pa, Qphoenician, Qshavian, Qsyloti_nagri)
(Qtagalog, Qtagbanwa, Qtai_le, Qtifinagh, Qugaritic)
(Qphonetic): New symbols.
(syms_of_w32font): Initialize them.
(font_supported_scripts): Use them.
(w32font_list_family): List all charsets.
(w32font_text_extents, recompute_cached_metrics): Fix metric
calculations.
(w32_enumfont_pattern_entity): Make full_type a DWORD.
Give opentype fonts their own format.
(font_matches_spec): New arguments backend and logfont.
Handle :otf spec for uniscribe backend.
(add_font_entity_to_list): Match truetype fonts in uniscribe backend.
(fill_in_logfont): Use DEFAULT_CHARSET when charset not supplied.
(CATEGORY_MASK_UTF_16): Likewise.
(detect_coding_utf_16): Add heuristics to reject utf-16 for a
binary file.
(detect_coding): Add null-byte detection for a binary file.
(detect_coding_system): Likewise.
(command_loop_1): Avoid running the direct display versions of
forward-char and backward-char if shift-selection may occur.
Don't change the value of transient-mark-mode; this is now handled
by handle-shift-selection.
(read_key_sequence): Set Vthis_command_keys_shift_translated if
shift-translation takes place.
(Finteractive): Document new ^ spec.
(Fcall_interactively): Call handle-shift-selection if the ^ spec
is present.
* keyboard.c (Vthis_command_keys_shift_translated): New var.
(command_loop_1): Avoid running the direct display versions of
forward-char and backward-char if shift-selection may occur.
Don't change the value of transient-mark-mode; this is now handled
by handle-shift-selection.
(read_key_sequence): Set Vthis_command_keys_shift_translated if
shift-translation takes place.
* buffer.c (Vtransient_mark_mode): Move docstring to simple.el to
avoid clobbering by define-minor-mode.
* cmds.c (Fforward_char, Fbackward_char, Fforward_line)
(Fbeginning_of_line, Fend_of_line): Add ^ interactive spec.
* syntax.c (Fforward_word): Add ^ interactive spec.
* window.c (Fscroll_up, Fscroll_down, Fscroll_left)
(Fscroll_right): Add ^ interactive spec.
(xg_resize_outer_widget): Removed
(x_wm_size_hint_off): Fix indentation.
(xg_frame_set_char_size): Call flush_and_sync after
gtk_window_resize.
(x_wm_set_size_hint): Pass NULL as geometry window to
gtk_window_set_geometry_hints due to Gtk+ bug nr 68668.
Add menu bar and tool bar height to base height.
(xg_update_frame_menubar, free_frame_menubar)
(xg_tool_bar_detach_callback, xg_tool_bar_attach_callback)
(update_frame_tool_bar, free_frame_tool_bar): Change
xg_resize_outer_widget to xg_frame_set_char_size.
Vsplit_window_preferred_function out of conditions that check
if window is eligible for vertical splitting.
When Vsplit_window_preferred_function is non-nil, call it and use
its non-nil return value as window. Otherwise, continue doing
vertical splitting using Fsplit_window with arg horflag=nil.
(syms_of_window) <Vsplit_window_preferred_function>: Change the
default value from `split-window' to nil.
(timer_check): Run it.
(syms_of_keyboard): Initialize it.
* terminal.c (Qrun_hook_with_args, Qdelete_terminal_functions)
(Vdelete_terminal_functions): New vars.
(syms_of_terminal): Initialize them.
(Fdelete_terminal): Run delete-terminal-functions.
* xdisp.c (safe_eval): Rewrite.
(safe_call2): New fun.
* frame.c (Qdelete_frame_functions): New var.
(syms_of_frame): Initialize it.
(Fdelete_frame): Use it and use safe_call2 and pending_funcalls.
* lisp.h (safe_call2, pending_funcalls): Declare.