(Fset_window_dedicated_p): Simplify.
[bpt/emacs.git] / src / ChangeLog
index 8ddc23f..55e468b 100644 (file)
+2003-06-26  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (survives_gc_p): Simplify.
+
+       * buffer.c (set_buffer_internal_1): Test CONSP for lists.
+
+       * window.c (Fset_window_dedicated_p): Simplify.
+       (display_buffer_1): Don't raise the win from which minibuf was entered.
+       (temp_output_buffer_show): Don't assume BEG == 1.  Simplify.
+       (Fminibuffer_selected_window): Simplify.
+
+       * buffer.h (struct buffer_text): Lisp_Object `markers' => Lisp_Marker.
+
+       * lisp.h (unchain_marker): Lisp_Object arg => Lisp_Marker.
+       (struct Lisp_Marker): Lisp_Object `chain' => Lisp_Marker `next'.
+
+       * insdel.c (check_markers, adjust_markers_for_delete)
+       (adjust_markers_for_insert, adjust_markers_for_replace)
+       (prepare_to_modify_buffer, RESTORE_VALUE):
+       * marker.c (buf_charpos_to_bytepos, buf_bytepos_to_charpos)
+       (Fset_marker, set_marker_restricted, set_marker_both, unchain_marker)
+       (set_marker_restricted_both, Fbuffer_has_markers_at, count_markers):
+       * alloc.c (Fmake_marker, free_marker, gc_sweep):
+       * buffer.c (Fget_buffer_create, Fkill_buffer, Fset_buffer_multibyte):
+       * editfns.c (save_excursion_restore, transpose_markers):
+       * window.c (delete_window):
+       * xdisp.c (message_dolog): Update for new types.
+
+2003-06-26  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xfaces.c (set_font_frame_param): Set default_face_done_p to zero.
+       (realize_default_face): Use default_face_done_p for the force_p
+       argument to set_lface_from_font_name.  Set default_face_done_p to one.
+
+       * frame.c (make_frame): Initialize default_face_done_p.
+
+       * frame.h (struct frame): Add default_face_done_p.
+
+       * config.in: Add XRegisterIMInstantiateCallback_arg6 so it
+       will be defined.
+
+2003-06-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * alloc.c (make_interval, Fmake_symbol, allocate_misc):
+       Initialize the new field `gcmarkbit'.
+       (mark_interval, MARK_INTERVAL_TREE): Use the new `gcmarkbit' field.
+       (mark_interval_tree): Don't mark the tree separately from the nodes.
+       (UNMARK_BALANCE_INTERVALS): Don't unmark the tree.
+       (mark_maybe_object, mark_maybe_pointer, Fgarbage_collect)
+       (mark_object, survives_gc_p, gc_sweep): Use new `gcmarkbit' fields.
+
+       * lisp.h (struct interval, struct Lisp_Symbol, struct Lisp_Free)
+       (struct Lisp_Marker, struct Lisp_Intfwd, struct Lisp_Boolfwd)
+       (struct Lisp_Kboard_Objfwd, struct Lisp_Save_Value)
+       (struct Lisp_Buffer_Local_Value, struct Lisp_Overlay)
+       (struct Lisp_Objfwd, struct Lisp_Buffer_Objfwd): Add `gcmarkbit' field.
+
+2003-06-24  Dave Love  <fx@gnu.org>
+
+       * xterm.c (xim_initialize): Use XRegisterIMInstantiateCallback_arg6.
+
+       * strftime.c: Test HAVE_SYS__MBSTATE_H, not __hpux.  Merge changes
+       from gnulib.
+
+2003-06-21  Richard M. Stallman  <rms@gnu.org>
+
+       * fileio.c (Fwrite_region): Alternate messages
+       for append and partial write.
+
+       * keyboard.c (read_key_sequence): When converting upcase fn key to
+       downcase, update fkey and keytran so `backspace' gets translated.
+
+       * keyboard.c (read_avail_input): Don't signal SIGHUP in batch mode.
+
+       * process.c (wait_reading_process_input): Don't signal SIGIO
+       in batch mode.
+
+2003-06-17  Kenichi Handa  <handa@m17n.org>
+
+       * Makefile.in (xselect.o): Don't depend on charset.h, coding.h,
+       composite.h.
+
+       * xselect.c: Don't include charset.h, coding.h, composite.h.
+       (Qforeign_selection): New variable.
+       (syms_of_xselect): Intern and static it.
+       (selection_data_to_lisp_data): Return a unibyte string made from
+       data with `foreign-selection' text property.
+
+2003-06-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * termhooks.h (EVENT_INIT): New macro.
+
+       * keyboard.c (mark_kboards): Move from alloc.c.  Mark kbd_buffer.
+
+       * alloc.c (mark_kboards): Move to keyboard.c.
+
+       * keyboard.c (record_asynch_buffer_change, read_avail_input):
+       * xterm.c (x_dispatch_event):
+       * xmenu.c (find_and_call_menu_selection):
+       * xdisp.c (handle_tool_bar_click):
+       * w32menu.c (menubar_selection_callback):
+       * sysdep.c (kbd_input_ast, read_input_waiting):
+       * msdos.c (dos_rawgetc):
+       * macterm.c (mac_check_for_quit_char):
+       * macmenu.c (menubar_selection_callback):
+       * gtkutil.c (xg_tool_bar_callback): Don't pass uninitialized
+       data to kbd_buffer_store_event.
+
+2003-06-15  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (x_fix_overlapping_area): Always use area relative X
+       to fix redisplay problem with tall characters (such as \e,AC\e(B).
+
+2003-06-13  Kai Gro\e,A_\e(Bjohann  <kai.grossjohann@gmx.net>
+
+       * fileio.c (Fcopy_file): Doc fix: copies file modes, too.
+
+2003-06-12  Kenichi Handa  <handa@m17n.org>
+
+       * fileio.c (Fwrite_region): Save and restore restriction.
+
+2003-06-12  Dave Love  <fx@gnu.org>
+
+       * alloca.c (alloca): Declare arg as size_t.
+
+       * sysdep.c: Remove redundant include of unistd.h, stdlib.h.
+       Use HAVE_DECL_SYS_SIGLIST, not SYS_SIGLIST_DECLARED.
+
+2003-06-11  Dave Love  <fx@gnu.org>
+
+       * search.c (shrink_regexp_cache): Use xrealloc.
+       (syms_of_search): Use xmalloc.
+
+2003-06-10  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (phys_cursor_in_rect_p): Fix 2003-05-24 change.
+       Adjust phys_cursor.x to be relative to window box, rather than
+       text area before checking -- to ensure cursor is redrawn when
+       exposing window.
+       Note: This also fixes a similar (older) bug if display margins
+       are present.
+
+2003-06-06  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (encoding_buffer_size): If coding->type is
+       coding_type_ccl, double magnification on CRLF encoding.
+
+2003-06-06  Jason Rumney  <jasonr@gnu.org>
+
+       * w32reg.c (SYSTEM_DEFAULT_RESOURCES): New constant.
+       (w32_get_string_resource): Try SYSTEM_DEFAULT_RESOURCES last.
+
+       * xfaces.c (Finternal_face_x_get_resource): Do it on Windows and
+       Mac too.
+
+2003-06-05  Dave Love  <fx@gnu.org>
+
+       * strftime.c: Merge changes from gnulib.
+
+       * mktime.c (__mktime_internal): Merge changes from gnulib
+       involving year 69 and dst2.
+
+       Changes to merge with gnulib version and be consistent with the
+       autoconf test:
+
+       * getloadavg.c: Set NLIST_STRUCT from HAVE_NLIST_H.
+       Use HAVE_STRUCT_NLIST_N_UN_N_NAME, not NLIST_NAME_UNION.
+       [HAVE_LOCALE_H]: Include locale.h.
+       (getloadavg) [HAVE_SETLOCALE]: Run sscanf in C locale.
+
+2003-06-05  Kim F. Storm  <storm@cua.dk>
+
+       * window.c (coordinates_in_window): Convert X and Y to window
+       relative coordinates inside mode-line and header-line parts.
+       Convert X and Y to margin area relative coordinates inside left
+       and right display margin parts.
+
+2003-06-05  Jason Rumney  <jasonr@gnu.org>
+
+       * w32fns.c (add_system_logical_colors_to_map): New function.
+       (Fx_open_connection): Use it.
+
+2003-06-04  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * process.c (allocate_pty): Revert part of the previous patch.
+       (Faccept_process_output): Simplify.
+
+2003-06-04  Jason Rumney  <jasonr@gnu.org>
+
+       * termhooks.h (enum event_kind): Remove MOUSE_WHEEL_EVENT.
+
+       * keyboard.c (Qmouse_wheel, mouse_wheel_syms)
+       (lispy_mouse_wheel_names): Remove.
+       (syms_of_keyboard): Remove Qmouse_wheel and mouse_wheel_syms.
+       Always define drag_and_drop_syms.
+
+       * macterm.c (XTread_socket): Map mouse wheel events to Emacs
+       WHEEL_EVENT events.
+
+2003-06-03  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xdisp.c (update_tool_bar): Add missing UNGCPRO.
+
+       * buffer.c (init_buffer_once): Make kill-buffer-hook permanent-local.
+
+2003-06-03  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (make_menu_item): Make sure we don't crash on a NULL
+       menu item label.
+
+2003-06-03  Richard M. Stallman  <rms@gnu.org>
+
+       * window.c (Fwindow_edges): Doc fix.
+       (Fwindow_pixel_edges, Fwindow_inside_edges)
+       (Fwindow_inside_pixel_edges): New functions.
+       (syms_of_window): defsubr them.
+
+       * window.h (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
+       (WINDOW_MODE_LINE_LINES, WINDOW_HEADER_LINE_LINES): New macros.
+
+2003-06-02  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * dispnew.c (Fsit_for): Don't lie about the number of args.
+
+2003-06-02  Dave Love  <fx@gnu.org>
+
+       * callproc.c: Use HAVE_FCNTL_H, not USG5.
+       (syms_of_callproc) <process-environment>: Doc fix.
+
+       * doc.c: Use HAVE_FCNTL_H, not USG5.
+
+       * xfaces.c (font_rescale_ratio): Fix for K&R.
+
+       * termcap.c: Use HAVE_FCNTL_H, not _POSIX_VERSION.
+
+       * mem-limits.h: Use HAVE_SYS_RESOURCE_H, HAVE_SYS_VLIMIT_H.
+
+       * lread.c [HAVE_FCNTL_H]: Include fcntl.h.
+
+       * gtkutil.c: Include keyboard.h, charset.h, coding.h.
+       (xg_create_frame_widgets): Use ENCODE_UTF_8.
+
+       * xterm.c (Qutf_8): Moved to coding.c
+
+       * xmenu.c (ENCODE_MENU_STRING): New.
+       (list_of_panes, list_of_items, digest_single_submenu, xmenu_show):
+       Use it.
+
+       * coding.h (ENCODE_UTF_8): New.
+       (Qutf_8): Declare.
+
+       * coding.c (Qutf_8): New.
+       (syms_of_coding): Intern it.
+
+       * fns.c: Doc fixes.
+
+2003-06-02  Kenichi Handa  <handa@m17n.org>
+
+       * buffer.c (Fset_buffer_multibyte): Fix previous change.
+
+2003-06-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lread.c (openp): Make sure STR is a string.
+
+2003-06-01  David Ponce  <david@dponce.com>
+
+       * termhooks.h (enum event_kind): Added new WHEEL_EVENT event.
+       Declare MOUSE_WHEEL_EVENT only if MAC_OSX defined.
+
+       * keyboard.c (Qmouse_wheel): Declare only if MAC_OSX defined.
+       (mouse_wheel_syms, lispy_mouse_wheel_names): Likewise.
+       (discard_mouse_events): Discard WHEEL_EVENT events too.
+       (lispy_wheel_names, wheel_syms): New.
+       (syms_of_keyboard): Init and staticpro `wheel_syms'.  Init and
+       staticpro `Qmouse_wheel' and `mouse_wheel_syms' only if MAC_OSX
+       defined.
+       (make_lispy_event): Add WHEEL_EVENT handler.
+
+       * w32term.c (construct_mouse_wheel): Construct WHEEL_EVENT.
+       (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs
+       WHEEL_EVENT events.
+
+2003-05-31  John Paul Wallington  <jpw@gnu.org>
+
+       * Makefile.in (lisp, shortlisp): byte-run, float-sup, map-ynp, and
+       timer are in lisp/emacs-lisp.
+
+2003-05-31  Kenichi Handa  <handa@m17n.org>
+
+       * buffer.c (Fset_buffer_multibyte): Correctly recover a narrowed
+       region when a buffer is changed to unibyte.
+
+       * charset.h (VALID_LEADING_CODE_P): New macro.
+       (UNIBYTE_STR_AS_MULTIBYTE_P): Check more rigidly.
+
+       * coding.c (DECODE_EMACS_MULE_COMPOSITION_CHAR): If coding->flags
+       is nonzero, accept multibyte form of eight-bit-control chars.
+       (decode_composition_emacs_mule): Likewise.
+       (decode_coding_emacs_mule): Likewise.
+       (encode_coding_emacs_mule): If coding->flags is nonzero, produce
+       multibyte form of eight-bit-control chars.
+
+       * fileio.c (Qauto_save_coding, auto_save_coding): New variables.
+       (Finsert_file_contents): If coding-system-for-read is bound to
+       Qauto_save_coding, use the coding system emacs-mule with special
+       setting for recovering a file.
+       (choose_write_coding_system): On auto saving, use the coding
+       system emacs-mule with special setting for auto saving.
+       (syms_of_fileio) <Qauto_save_coding>: Intern and staticpro it.
+
+2003-05-30  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (ccl_coding_driver): Set ccl->eight_bit_control
+       properly before calling ccl_driver.
+
+       * ccl.h (struct ccl_program) <eight_bit_control>: Comment fixed.
+
+       * ccl.c (CCL_WRITE_CHAR): Increment extra_bytes only when it is
+       nonzero.
+       (ccl_driver): Initialize extra_bytes to ccl->eight_bit_control.
+       (setup_ccl_program): Initialize ccl->eight_bit_control to zero.
+
+2003-05-29  Glenn Morris  <gmorris@ast.cam.ac.uk>
+
+       * xfaces.c (realize_default_face): Do not abort if lface is
+       non-existent - reverts change from 2003-05-19.
+
+2003-05-29  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_coding_iso2022): Pay attention to the byte
+       sequence of CTEXT extended segment, and retain those bytes as is.
+
+2003-05-28  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (ENCODE_UNSAFE_CHARACTER): Adjusted for the name change
+       of CODING_REPLACEMENT_CHARACTER.
+       (decode_coding_iso2022): If CODING_FLAG_ISO_SAFE, set
+       CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in coding->mode, and
+       check this flag on encoding.
+       (encode_coding_sjis_big5): Check
+       CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag of coding->mode.
+       (Fset_terminal_coding_system_internal): Set
+       CODING_MODE_INHIBIT_UNENCODABLE_CHAR flag in terminal_coding.mode
+       instead of setting CODING_FLAG_ISO_SAFE flag in
+       terminal_coding.flags.
+
+       * coding.h (CODING_REPLACEMENT_CHARACTER): Renamed from
+       CODING_INHIBIT_CHARACTER_SUBSTITUTION.
+       (CODING_MODE_INHIBIT_UNENCODABLE_CHAR): New macro.
+
+2003-05-28  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (syms_of_print) <print-escape-nonascii>: Doc fix.
+
+       * eval.c (unbind_to): Move init of this_binding to separate statement.
+
+2003-05-28  Kim F. Storm  <storm@cua.dk>
+
+       * xdisp.c (expose_window): Fix error in calculation of
+       window relative coordinates of area to redisplay.
+
+2003-05-27  Jason Rumney  <jasonr@gnu.org>
+
+       * w32term.c (GET_WHEEL_DELTA_WPARAM): New macro.
+
+2003-05-27  David Ponce  <david@dponce.com>
+
+       Handle W32 mouse wheel events as mouse click events, like in X.
+
+       * keyboard.c (make_lispy_event) [WINDOWSNT]: Don't handle
+       MOUSE_WHEEL_EVENT anymore.
+
+       * w32term.c (construct_mouse_wheel): Result is a MOUSE_CLICK_EVENT.
+       Scrolling down/up the mouse wheel is respectively mapped to mouse
+       button 4 and 5.
+       (w32_read_socket): Map w32 WM_MOUSEWHEEL events to Emacs
+       MOUSE_CLICK_EVENT events.  Forward w32 MSH_MOUSEWHEEL events as
+       WM_MOUSEWHEEL events.
+
+2003-05-27  Andreas Schwab  <schwab@suse.de>
+
+       * buffer.c (syms_of_buffer) <default-direction-reversed>: Doc fix.
+
+       * xdisp.c (try_window_id): Avoid aborting if PT is inside a
+       partially visible line.
+
+       * alloc.c (Fgarbage_collect): Fix last change.
+
+2003-05-26  John Paul Wallington  <jpw@gnu.org>
+
+       * xfns.c (Fx_create_frame): Don't call Qface_set_after_frame_default.
+
+2003-05-25  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * window.c (Fset_window_buffer): Add type of `keep_margins'.
+       (Fset_window_fringes, Fset_window_scroll_bars): Declare before use.
+
+       * window.h (window_box_text_cols): Declare.
+
+       * xdisp.c (window_text_bottom_y, draw_row_fringe_bitmaps)
+       (x_draw_vertical_border): Remove unused var `f'.
+
+       * xfaces.c (build_scalable_font_name): Remove `unused var
+       pixel_size' warning.
+
+       * xfns.c (png_load): Remove `unused vars intent, image_gamma' warning.
+
+       * unexelf.c (unexec): Remove `unused var n' warning.
+
+       * strftime.c (my_strftime_localtime_r): Remove `defined but
+       unused' warning.
+
+       * process.c (allocate_pty): Remove `unused var stb' and
+       `cp might be used uninitialized' warnings.
+
+       * dispnew.c (mode_line_string): Remove unused var `f'.
+
+       * coding.c (find_safe_codings): Remove unused var `i'.
+
+       * bytecode.c (Fbyte_code): Remove `unused val' warning.
+
+       * buffer.c (Fkill_buffer): Remove unused var `list'.
+
+       * alloc.c (Fgarbage_collect): Remove `unused var tail' warning.
+
+2003-05-25  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * frame.c (make_frame): Condition want_fullscreen with
+       HAVE_WINDOW_SYSTEM.
+
+2003-05-25  Juanma Barranquero  <lektu@terra.es>
+
+       * window.c (Fset_window_scroll_bars): Fix typo in argument name.
+       (Fwindow_scroll_bars): Fix typo in docstring.
+
+2003-05-24  Kim F. Storm  <storm@cua.dk>
+
+       The following changes serve several purposes:
+
+       1) Swap the position of fringes and display margins in windows, i.e.
+       the fringes are now displayed between the margins and the text area
+       (by default).
+
+       2) Allow fringe and scroll bar parameters to be set per-buffer and
+       per-window (like display margins).  Such settings are now stored
+       in window configurations, preserved when frames are resized, and
+       copied when windows are split vertically or horizontally.
+       Several bugs related to display margins have been fixed.
+
+       3) Consistently use FRAME_FONT and FRAME_FONTSET macros.
+
+       4) Use FRAME_COLUMN_WIDTH (f) consistently throughout the code
+       rather than FRAME_WIDTH (FRAME_FONT (f)).
+
+       5) Introduce a consistent naming of variables, members and macros
+       depending on whether their value is measured in pixels or in
+       canonical columns/lines.  Pixel dimensions are named *_width and
+       *_height, while canonical columns/lines are named *_cols and
+       *_lines.  Pixel positions are named *_x and *_y, while column/line
+       positions are named *_col and *_line.
+
+       6) Consolidate more of the X, W32, and MAC gui code by moving
+       common data into struct frame, and generalize it for the non-gui
+       case by using suitable defaults.
+
+       7) Cleanup and consolidate the macros controlling frame and window
+       layout into frame.h and window.h, and generalize the use of the
+       various window_box_* functions (enhanced to handle the new fringe
+       position and the per-window fringe and scroll bar settings).
+
+       * frame.h (struct frame): Rename members height to text_lines,
+       width to text_cols, window_height to total_lines, window_width to
+       total_cols, new_height to new_text_lines, new_width to
+       new_text_cols.  All uses changed.
+       (struct frame): New members which consolidate common members of
+       x_output, w32_output, and mac_output structures: left_pos,
+       top_pos, pixel_height, pixel_width, x_pixels_diff, y_pixels_diff,
+       win_gravity, size_hint_flags, border_width, internal_border_width,
+       line_height, fringe_cols, left_fringe_width, right_fringe_width,
+       want_fullscreen.  All uses changed.
+       (struct frame): New member column_width contaning the canonical
+       column width, analogue to line_height.  All uses changed.
+       (struct frame): Rename members scroll_bar_pixel_width to
+       config_scroll_bar_width, and scroll_bar_cols to
+       config_scroll_bar_cols.  All uses changed.
+       (struct frame): New member scroll_bar_actual_width which
+       consolidates and renames the vertical_scroll_bar_extra member of
+       x_output, w32_output, and mac_output structures.  All uses changed.
+       (FRAME_PIXEL_HEIGHT): Renamed from PIXEL_HEIGHT and moved
+       from x/w32/macterm.h files.  All uses changed.  Also change code
+       which referred to f->output_data...->pixel_height.
+       (FRAME_PIXEL_WIDTH): Renamed from PIXEL_WIDTH and moved
+       from x/w32/macterm.h files.  All uses changed.  Also change code
+       which referred to f->output_data...->pixel_width.
+       (FRAME_LINES): Renamed from FRAME_HEIGHT.  All uses changed.
+       Also change code which referred to f->height.
+       (FRAME_COLS): Renamed from FRAME_WIDTH.  All uses changed.
+       Also change code which referred to f->width.
+       (FRAME_NEW_HEIGHT, FRAME_NEW_WIDTH): Remove macros; change uses
+       to update new_text_lines and new_text_cols members directly.
+       (FRAME_CONFIG_SCROLL_BAR_WIDTH): Renamed from
+       FRAME_SCROLL_BAR_PIXEL_WIDTH.  All uses changed.
+       (FRAME_CONFIG_SCROLL_BAR_COLS): Renamed from
+       FRAME_SCROLL_BAR_COLS.  All uses changed.
+       (FRAME_LEFT_SCROLL_BAR_COLS, FRAME_RIGHT_SCROLL_BAR_COLS):
+       Renamed from FRAME_LEFT_SCROLL_BAR_WIDTH and
+       FRAME_RIGHT_SCROLL_BAR_WIDTH, resp.  All uses changed.
+       (FRAME_SCROLL_BAR_AREA_WIDTH, FRAME_LEFT_SCROLL_BAR_AREA_WIDTH)
+       (FRAME_RIGHT_SCROLL_BAR_AREA_WIDTH): New macros.
+       (FRAME_TOTAL_COLS): Renamed from FRAME_WINDOW_WIDTH.
+       (SET_FRAME_COLS): Renamed from SET_FRAME_WIDTH.
+       (FRAME_TOTAL_COLS_ARG): Renamed from FRAME_WINDOW_WIDTH_ARG.
+       (WINDOW_VERTICAL_SCROLL_BAR_COLUMN): Remove unused macro.
+       (WINDOW_VERTICAL_SCROLL_BAR_HEIGHT): Remove unused macro.
+       (FRAME_LINE_HEIGHT): Renamed from CANON_Y_UNIT.  Unconditionally
+       return line_height member (it now has proper value also for
+       non-window frames).
+       (FRAME_COLUMN_WIDTH): Renamed from CANON_X_UNIT.  Unconditionally
+       return new column_width member (rather than the default font width).
+       (FRAME_FRINGE_COLS, FRAME_LEFT_FRINGE_WIDTH)
+       (FRAME_RIGHT_FRINGE_WIDTH): Renamed from FRAME_X_... and moved
+       from x/w32/macterm.h files.  Unconditionally return corresponding
+       member of frame structure (they now have proper values also for
+       non-window frames).
+       (FRAME_TOTAL_FRINGE_WIDTH): Renamed from FRAME_FRINGE_WIDTH.
+       Calculate return value from left and right widths.
+       (FRAME_INTERNAL_BORDER_WIDTH): Unconditionally return
+       internal_border_width member (has proper value for non-window frame).
+       (FRAME_PIXEL_X_FROM_CANON_X): Renamed from PIXEL_X_FROM_CANON_X.
+       (FRAME_PIXEL_Y_FROM_CANON_Y): Renamed from PIXEL_Y_FROM_CANON_Y.
+       (FRAME_CANON_X_FROM_PIXEL_X): Renamed from CANON_X_FROM_PIXEL_X.
+       (FRAME_CANON_Y_FROM_PIXEL_Y): Renamed from CANON_Y_FROM_PIXEL_Y.
+       (FRAME_LINE_TO_PIXEL_Y): Renamed from CHAR_TO_PIXEL_ROW,
+       consolidated from xterm.h, macterm.h, and w32term.h.
+       (FRAME_COL_TO_PIXEL_X): Renamed from CHAR_TO_PIXEL_COL,
+       consolidated from xterm.h, macterm.h, and w32term.h.
+       (FRAME_TEXT_COLS_TO_PIXEL_WIDTH): Renamed from
+       CHAR_TO_PIXEL_WIDTH consolidated from x/mac/w32term.h.
+       (FRAME_TEXT_LINES_TO_PIXEL_HEIGHT): Renamed from
+       CHAR_TO_PIXEL_HEIGHT consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_Y_TO_LINE): Renamed from PIXEL_TO_CHAR_ROW
+       consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_X_TO_COL): Renamed from PIXEL_TO_CHAR_COL
+       consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_WIDTH_TO_TEXT_COLS): Renamed from
+       PIXEL_TO_CHAR_WIDTH consolidated from x/mac/w32term.h.
+       (FRAME_PIXEL_HEIGHT_TO_TEXT_LINES): Renamed from
+       PIXEL_TO_CHAR_HEIGHT consolidated from x/mac/w32term.h.
+
+       * window.h (struct window): Rename members left to left_col,
+       top to top_line, height to total_lines, width to total_cols,
+       left_margin_width to left_margin_cols, right_margin_width to
+       right_margin_cols, orig_height to orig_total_lines, orig_top to
+       orig_top_line.  All uses changed.
+       (struct window): New members left_fringe_width, right_fringe_width,
+       fringes_outside_margins, scroll_bar_width, vertical_scroll_bar_type.
+       (WINDOW_XFRAME, WINDOW_FRAME_COLUMN_WIDTH, WINDOW_FRAME_LINE_HEIGHT):
+       New macros primarily used to simplify other macros.
+       (WINDOW_TOTAL_COLS): New macro.  Change relevant code that
+       referred to XINT (w->width).
+       (WINDOW_TOTAL_LINES): New macro.  Change relevant code that
+       referred to XINT (w->height).
+       (WINDOW_TOTAL_WIDTH): New macro.  Change relevant code that
+       referred to XINT (w->width) * canon_x_unit.
+       (WINDOW_TOTAL_HEIGHT): New macro.  Change relevant code that
+       referred to XINT (w->height) * canon_y_unit.
+       (WINDOW_LEFT_EDGE_COL): New macro.  Change relevant code that
+       referred to XINT (w->left).
+       (WINDOW_RIGHT_EDGE_COL): Renamed from WINDOW_RIGHT_EDGE.  Change
+       all uses and code that referred to XINT (w->left) + XINT (w->width).
+       (WINDOW_TOP_EDGE_LINE): New macro.  Change relevant code that
+       referred to XINT (w->top).
+       (WINDOW_BOTTOM_EDGE_LINE): New macro.  Change relevant code that
+       referred to XINT (w->top) + XINT (w->height).
+       (WINDOW_LEFT_EDGE_X): New macro.  Change relevant code that
+       referred to XINT (w->left) * canon_x_unit.
+       (WINDOW_RIGHT_EDGE_X): New macro.  Change relevant code that
+       referred to (XINT (w->left) + XINT (w->width)) * canon_x_unit.
+       (WINDOW_TOP_EDGE_Y): New macro.  Change relevant code that
+       referred to XINT (w->top) * canon_y_unit.
+       (WINDOW_BOTTOM_EDGE_Y): New macro.  Change relevant code that
+       referred to (XINT (w->top) + XINT (w->height)) * canon_y_unit.
+       (WINDOW_LEFTMOST_P): New macro.
+       (WINDOW_BOX_LEFT_EDGE_COL): Renamed from WINDOW_LEFT_MARGIN.
+       All uses changed.
+       (WINDOW_BOX_RIGHT_EDGE_COL): Renamed from WINDOW_RIGHT_MARGIN.
+       All uses changed.
+       (WINDOW_BOX_LEFT_EDGE_X): Renamed from
+       WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, moved from dispextern.h.
+       Do not exclude left fringe width.
+       (WINDOW_BOX_RIGHT_EDGE_X): Renamed from
+       WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X, moved from dispextern.h.
+       Do not exclude fringe widths.
+       (WINDOW_LEFT_FRINGE_WIDTH, WINDOW_RIGHT_FRINGE_WIDTH)
+       (WINDOW_FRINGE_COLS, WINDOW_TOTAL_FRINGE_WIDTH): New macros.
+       Change relevant code that referred to FRAME_LEFT_FRINGE_WIDTH,
+       FRAME_RIGHT_FRINGE_WIDTH, FRAME_FRINGE_COLS, and
+       FRAME_TOTAL_FRINGE_WIDTH to allow per-window fringe settings.
+       (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS): New macro.
+       (WINDOW_VERTICAL_SCROLL_BAR_TYPE, WINDOW_HAS_VERTICAL_SCROLL_BAR)
+       (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
+       (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
+       (WINDOW_CONFIG_SCROLL_BAR_WIDTH, WINDOW_CONFIG_SCROLL_BAR_COLS):
+       New macros.  Change code which referenced corresponding
+       FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS,
+       FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT,
+       FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT,
+       FRAME_SCROLL_BAR_PIXEL_WIDTH, and FRAME_SCROLL_BAR_COLS macros to
+       allow per-window scroll-bar settings.
+       (WINDOW_LEFT_SCROLL_BAR_COLS, WINDOW_RIGHT_SCROLL_BAR_COLS): New macros.
+       (WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH): New macro.  Change code that
+       referred to FRAME_LEFT_SCROLL_BAR_WIDTH.
+       (WINDOW_RIGHT_SCROLL_BAR_AREA_WIDTH): New macro.  Change code
+       that referred to FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT and
+       FRAME_SCROLL_BAR_WIDTH.
+       (WINDOW_SCROLL_BAR_COLS, WINDOW_SCROLL_BAR_AREA_WIDTH)
+       (WINDOW_SCROLL_BAR_AREA_X): New macros.
+       (WINDOW_HEADER_LINE_HEIGHT): Renamed from
+       WINDOW_DISPLAY_HEADER_LINE_HEIGHT, moved from dispextern.h.
+       (WINDOW_BOX_HEIGHT_NO_MODE_LINE): Renamed from
+       WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, moved from dispextern.h.
+       (WINDOW_BOX_TEXT_HEIGHT): Renamed from
+       WINDOW_DISPLAY_PIXEL_WIDTH, moved from dispextern.h.
+       (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y)
+       (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y)
+       (WINDOW_TEXT_TO_FRAME_PIXEL_X): Moved here from dispextern.h.
+       (WINDOW_LEFT_MARGIN_WIDTH): Renamed from
+       WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH, moved from dispextern.h.
+       (WINDOW_RIGHT_MARGIN_WIDTH): Renamed from
+       WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, moved from dispextern.h.
+       (window_from_coordinates): Update prototype.
+       (Fset_window_buffer): Update EXFUN.
+       (set_window_buffer): Update prototype.
+
+       * dispextern.h (struct glyph_matrix): Rename members window_left_x
+       to window_left_col, window_top_y to window_top_line.  All uses
+       changed.
+       (FRAME_INTERNAL_BORDER_WIDTH_SAFE): Remove macro; can now safely
+       use FRAME_INTERNAL_BORDER_WIDTH macro instead as
+       internal_border_width is now set to 0 for non-window frames.
+       (WINDOW_DISPLAY_PIXEL_WIDTH, WINDOW_DISPLAY_PIXEL_HEIGHT)
+       (WINDOW_DISPLAY_MODE_LINE_HEIGHT, WINDOW_DISPLAY_HEADER_LINE_HEIGHT)
+       (WINDOW_DISPLAY_HEIGHT_NO_MODE_LINE, WINDOW_DISPLAY_TEXT_HEIGHT)
+       (WINDOW_DISPLAY_LEFT_EDGE_PIXEL_X, WINDOW_DISPLAY_RIGHT_EDGE_PIXEL_X)
+       (WINDOW_DISPLAY_TOP_EDGE_PIXEL_Y, WINDOW_DISPLAY_BOTTOM_EDGE_PIXEL_Y)
+       (WINDOW_TO_FRAME_PIXEL_X, WINDOW_TO_FRAME_PIXEL_Y)
+       (FRAME_TO_WINDOW_PIXEL_X, FRAME_TO_WINDOW_PIXEL_Y)
+       (WINDOW_DISPLAY_LEFT_AREA_PIXEL_WIDTH)
+       (WINDOW_DISPLAY_RIGHT_AREA_PIXEL_WIDTH, WINDOW_WANTS_MODELINE_P):
+       Move to window.h and renamed [see window.h changes].
+       (WINDOW_AREA_TO_FRAME_PIXEL_X, WINDOW_AREA_PIXEL_WIDTH)
+       (WINDOW_DISPLAY_TEXT_AREA_PIXEL_WIDTH): Remove macros.
+       (WINDOW_WANTS_MODELINE_P, WINDOW_WANTS_HEADER_LINE_P):
+       Use WINDOW_TOTAL_LINES.
+       (frame_update_line_height): Remove prototype.
+
+       * buffer.h (struct buffer): Rename members measured in columns:
+       left_margin_width to left_margin_cols, right_margin_width to
+       right_margin_cols.  All uses changed.
+       New members left_fringe_width, right_fringe_width,
+       fringes_outside_margins for per-buffer fringe settings.
+       New members scroll_bar_width and vertical_scroll_bar_type for
+       per-buffer scroll bar settings.
+
+       * buffer.c (init_buffer_once): Set buffer_defaults and
+       buffer_local_flags for new buffer-local variables
+       left_fringe_width, right_fringe_width, fringes_outside_margins,
+       scroll_bar_width, and vertical_scroll_bar_type.
+       (syms_of_buffer): Defvar_per_buffer them, and defvar_lisp_nopro
+       default-* variables for them.
+
+       * dispnew.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (mode_line_string): No need to adjust width for mode lines, as it
+       is already adjusted by the caller.
+       (marginal_area_string): Handle fringes inside/outside margins.
+
+       * frame.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (make_frame): Initialize left_fringe_width, right_fringe_width,
+       fringe_cols, scroll_bar_actual_width, border_width,
+       internal_border_width, column_width, line_height, x_pixels_diff,
+       y_pixels_diff, want_fullscreen, size_hint_flags, and win_gravity
+       members with values suitable for a non-window frames.
+
+       * gtkutil.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * indent.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * keyboard.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (make_lispy_event): Use window positions returned from
+       window_from_coordinates when constructing the lisp event for
+       MOUSE_CLICK_EVENT and DRAG_N_DROP_EVENT, rather than calculating
+       (incorrect) values locally.
+       (make_lispy_movement): Use window positions returned from
+       window_from_coordinates when constructing the lisp event, rather
+       than calculating (incorrect) values locally.
+
+       * scroll.c: Make (some) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * sunfns.c (Fsun_menu_internal): Adapt to per-window fringes and
+       scroll-bars.
+
+       * sysdep.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * term.c: Make (some) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * widget.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * window.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (make_window): Initialize new members
+       left_margin_cols, right_margin_cols, left_fringe_width,
+       right_fringe_width, fringes_outside_margins, scroll_bar_width,
+       and vertical_scroll_bar_type.
+       (coordinates_in_window): Adapted to new fringe/margin positions
+       and per-window fringes and scroll-bars.
+       Fix bug related to incorrectly adjusting coordinates by
+       frame's internal_border_width (the effect normally negible since
+       the internal_border_width is typically 0 or 1 pixel, but very
+       noticeable for an internal_border_width of e.g. 25 pixels).
+       Upon successful return (other than ON_NOTHING), the coordinates
+       are now always properly converted to window relative for the
+       given display element.
+       (window_from_coordinates): Add new parameters wx and wy to
+       return the window relative x and y position in the returned
+       window and part.  A null arg means, don't return the position.
+       All callers changed.
+       (adjust_window_margins): New function which may reduce the width
+       of the display margins if a window's text area is too small after
+       resizing or splitting windows.
+       (size_window): Fix bug that did not account for display margin
+       widths when checking the minimum width of a window; use
+       adjust_window_margins.
+       (set_window_buffer): Call Fset_window_fringes and
+       Fset_window_scroll_bars to setup per-window elements.
+       Add new arg KEEP_MARGINS_P.  Non-nil means to keep window's
+       existing display margin, fringe widths, and scroll bar settings
+       (e.g. after splitting a window or resizing the frame).
+       All callers changed.
+       (Fset_window_buffer): New arg KEEP_MARGINS.  All callers changed.
+       (Fsplit_window): Duplicate original window's display margin,
+       fringe, and scroll-bar settings; then call Fset_window_buffer with
+       KEEP_MARGINS non-nil.  This fixes a bug which caused a split
+       window to only preserve the display margins in one of the windows.
+       When splitting horizontally, call adjust_window_margins on both
+       windows to ensure that the text area of the new windows is non too
+       narrow.  This fixes a bug which could cause emacs to trap if the
+       width of the split window was less than the width of the display
+       margins.
+       (window_box_text_cols): Renamed from window_internal_width.
+       All uses changed.  Adapt to per-window fringes and scroll bars.
+       Fix bug that caused vertical separator to be subtracted also on
+       window frames.  Fix another bug that did not reduce the returned
+       value by the columns used for display margins.
+       (window_scroll_line_based): Fix bug related to scrolling too much
+       when display margins are present (implicitly fixed by the fix to
+       window_box_text_cols).
+       (scroll_left, scroll_right): Fix bug related to scrolling too far
+       by default when display margins are present (implicitly fixed by
+       the fix to window_box_text_cols).
+       (struct saved_window): Rename members left to left_col, top to
+       top_line, width to total_cols, height to total_lines, orig_top to
+       orig_top_line, orig_height to orig_total_lines.  All uses changed.
+       New members left_margin_cols, right_margin_cols,
+       left_fringe_width, right_fringe_width, fringes_outside_margins,
+       scroll_bar_width, and vertical_scroll_bar_type for saving
+       per-window display elements.
+       (Fset_window_configuration): Restore display margins, fringes,
+       and scroll bar settings.  This fixes a bug which caused display
+       margins to be discarded when saving and restoring a window
+       configuration.
+       (save_window_save): Save display margins, fringes, and scroll bar
+       settings.  This fixes a bug which caused display margins to be
+       discarded when saving and restoring a window configuration.
+       (Fset_window_margins): Do nothing if display margins are not
+       really changed.  Otherwise, call adjust_window_margins to ensure
+       the text area doesn't get too narrow.  This fixes a bug which
+       could cause emacs to trap if setting display margins wider than
+       the width of the window.
+       (Fset_window_fringes): New defun to allow user to specifically set
+       this window's fringe widths and position vs. display margins.
+       (Fwindow_fringes): New defun to return window's actual fringe
+       settings.
+       (Fset_window_scroll_bars): New defun to allow user to specifically
+       set this window's scroll bar width and position.
+       (Fwindow_scroll_bars): New defun to return window's actual scroll
+       bar settings.
+       (compare_window_configurations): Also compare display margins,
+       fringes, and scroll bar settings.
+       (syms_of_window): Defsubr new defuns for fringe and scroll bars.
+
+       * xdisp.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (window_box_width): Adapt to per-window fringes and scroll bars,
+       and new fringe vs. display margin position. Note that returned
+       value is no longer guaranteed to be a whole multiple of the frame
+       column width, since per-window fringes may now be any width.
+       (window_box_left_offset): New function like window_box_left, but
+       value is relative to left border of window (rather than frame).
+       (window_box_right_offset): New function like window_box_right,
+       but value is relative to left border of window.
+       (window_box_left): Adapt to per-window fringes and scroll bars,
+       and new fringe vs. display margin position.  Simplify by using
+       WINDOW_LEFT_EDGE_X and window_box_left_offset.
+       (window_box): Allow null args for unnecessary return values;
+       change/simplify relevant callers.
+       (x_y_to_hpos_vpos): Adapt to per-window fringes and scroll bars,
+       and new fringe vs. display margin position.
+       Use window_box_left_offset and window_box_right_offset
+       (get_glyph_string_clip_rect): Adapt to per-window fringes and
+       scroll bars, and new fringe vs. display margin position.
+       Use WINDOW_LEFT_EDGE_X and WINDOW_TOTAL_WIDTH.
+       (draw_fringe_bitmap): Rework to handle per-window fringes and new
+       fringe vs. display margin position.
+       (hscroll_window_tree): Use window_box_width instead of window_box.
+       (redisplay_window):  Adapt to per-window scroll bars.
+       (draw_glyphs):  Rework to handle per-window fringes and scroll
+       bars, and new fringe vs. display margin position.
+       Use WINDOW_LEFT_EDGE_X, WINDOW_TOTAL_WIDTH, and window_box_left.
+       (x_clear_end_of_line):  Adapt to per-window fringes and scroll
+       bars, and new fringe vs. display margin position.  Fix bug which
+       increased total width of full_width rows by width of scroll bars
+       although window's total width already includes that.
+       (x_fix_overlapping_area): Simplify using window_box_left_offset.
+       (expose_area): Simplify using window_box_left_offset.
+       (x_draw_vertical_border): Handle per-window scroll bar settings,
+       mixing windows with left, right and no scroll bars.
+
+       * xfaces.c [WINDOWSNT]: Move redefinition of FONT_WIDTH macro to
+       where it's used in x_list_fonts (for clarity).
+       (frame_update_line_height): Remove unused function; functionality
+       is now done directly when setting the default font in x_set_font.
+
+       * xfns.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * xmenu.c: Make (some) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * xterm.h (struct x_output): Move members left_pos, top_pos,
+       border_width, pixel_height, pixel_width, line_height,
+       internal_border_width, vertical_scroll_bar_extra,
+       left_fringe_width, right_fringe_width, fringe_cols,
+       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
+       x_pixels_diff, and y_pixels_diff to struct frame (frame.h).
+       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
+       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
+       (PIXEL_WIDTH, PIXEL_HEIGHT)
+       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
+       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Moved to
+       frame.h and renamed [see frame.h changes].
+       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
+       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
+       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Moved to frame.h
+       and renamed [see frame.h changes].
+
+       * xterm.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_draw_glyph_string_box): Adapt to per-window fringes and
+       scroll-bars.
+       (scroll_run): Adapt to new fringe position.
+       (glyph_rect): Use window coordinates returned from
+       window_from_coordinates rather than frame_to_window_pixel_xy.
+       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
+       scroll-bars.
+       (handle_one_xevent): Simplify a USE_GTK conditional.
+       (x_clip_to_row): Remove superfluous whole_line_p arg and code
+       (fringes are now inside margins, i.e. always in the clipping area).
+       All callers changed.
+       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
+       directly, then call compute_fringe_widths.  Don't call
+       frame_update_line_height.
+
+       * w32term.h (struct w32_output): Move members left_pos, top_pos,
+       border_width, pixel_height, pixel_width, line_height,
+       internal_border_width, vertical_scroll_bar_extra,
+       left_fringe_width, right_fringe_width, fringe_cols,
+       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
+       x_pixels_diff, and y_pixels_diff to struct frame (frame.h).
+       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
+       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
+       (PIXEL_WIDTH, PIXEL_HEIGHT)
+       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
+       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Moved to
+       frame.h and renamed [see frame.h changes].
+       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
+       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
+       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Moved to frame.h
+       and renamed [see frame.h changes].
+
+       * w32term.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_draw_glyph_string_box): Adapt to per-window fringes and
+       scroll-bars.
+       (glyph_rect): Use window coordinates returned from
+       window_from_coordinates rather than frame_to_window_pixel_xy.
+       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
+       scroll-bars.
+       (w32_clip_to_row): Remove superfluous whole_line_p arg and code
+       (fringes are now inside margins, i.e. always in the clipping area).
+       All callers changed.
+       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
+       directly, then call compute_fringe_widths.  Don't call
+       frame_update_line_height.
+
+       * w32console.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * w32fns.c: Make (many) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * w32menu.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * macterm.h (struct mac_output): Move members left_pos, top_pos,
+       border_width, pixel_height, pixel_width, line_height,
+       internal_border_width, vertical_scroll_bar_extra,
+       left_fringe_width, right_fringe_width, fringe_cols,
+       fringes_extra, win_gravity, size_hint_flags, want_fullscreen,
+       x_pixels_diff, y_pixels_diff to struct frame (frame.h).
+       (FRAME_INTERNAL_BORDER_WIDTH, FRAME_LINE_HEIGHT): Move to frame.h.
+       (FRAME_DEFAULT_FONT_WIDTH): Remove macro.
+       (PIXEL_WIDTH, PIXEL_HEIGHT)
+       (FRAME_X_FRINGE_COLS, FRAME_X_FRINGE_WIDTH)
+       (FRAME_X_LEFT_FRINGE_WIDTH, FRAME_X_RIGHT_FRINGE_WIDTH): Moved to
+       frame.h and renamed [see frame.h changes].
+       (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, CHAR_TO_PIXEL_WIDTH)
+       (CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL)
+       (PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Moved to frame.h
+       and renamed [see frame.h changes].
+
+       * macterm.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_draw_glyph_string_box): Adapt to per-window fringes and
+       scroll-bars.
+       (glyph_rect): Use window coordinates returned from
+       window_from_coordinates rather than frame_to_window_pixel_xy.
+       (XTset_vertical_scroll_bar): Adapt to per-window fringes and
+       scroll-bars.
+       (x_clip_to_row): Remove superfluous whole_line_p arg and code
+       (fringes are now inside margins, i.e. always in the clipping area).
+       All callers changed.
+       (x_new_font): Set FRAME_COLUMN_WIDTH and FRAME_LINE_HEIGHT
+       directly, then call compute_fringe_widths.  Don't call
+       frame_update_line_height.
+
+       * macfns.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (x_real_positions): Set f->x_pixels_diff and f->y_pixels_diff to 0.
+
+       * macmenu.c: Make (few) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+
+       * msdos.h (struct x_output): Remove members left_pos, top_pos,
+       and line_height, and use corresponding new members in struct
+       frame.  All uses changed.
+       (FRAME_LINE_HEIGHT, FRAME_INTERNAL_BORDER_WIDTH): Remove macros;
+       superseeded by corresponding macros in frame.h.
+
+       * msdos.c: Make (several) trivial substitutions for renamed and
+       new macros in dispextern.h, frame.h and window.h.
+       (IT_note_mouse_highlight): Use updated window coordinates returned
+       by window_from_coordinates, rather than adjusting them locally.
+       (internal_terminal_init): No need to initialize line_height here;
+       it now defaults to 1.
+
+2003-05-24  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (read_key_sequence): Adjust fkey and keytran when
+       dropping `down' events.
+
+2003-05-24  Andreas Schwab  <schwab@suse.de>
+
+       * coding.c (find_safe_codings): Fix last change.
+
+2003-05-24  Istvan Marko  <mi@imarko.dhs.org>  (tiny change)
+
+       * xfns.c (x_window): Fix typo from 2003-05-21 change.
+
+2003-05-23  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * xdisp.c (display_mode_element): Increase max depth.
+       Simplify the error handling code.  Use a different error string
+       for the case where we hit the depth limit.
+
+       * lisp.h (Vfundamental_mode_abbrev_table): Don't declare.
+
+       * buffer.c (reset_buffer_local_variables): Remove redundant setting.
+
+2003-05-21  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * intervals.c (get_local_map): Don't get char-property of previous
+       point any more: get_pos_property already does it and better.
+
+2003-05-21  Dave Love  <fx@gnu.org>
+
+       [Merged from unicode branch.]
+
+       * xfns.c (x_window, x_window): Use use_xim.
+
+       * xterm.c (use_xim): Initialize.
+       (xim_open_dpy, xim_initialize, xim_close_dpy): Use use_xim.
+       (x_term_init): Maybe set use_xim.
+
+       * xterm.h (use_xim) [HAVE_X_I18N]: Declare.
+
+2003-05-21  Jason Rumney  <jasonr@gnu.org>
+
+       * unexw32.c (_start): Remove _fmode initialization.
+
+       * emacs.c (main) [WINDOWSNT]: Move it here.
+
+2003-05-20  Dave Love  <fx@gnu.org>
+
+       * s/gnu-linux.h (MAIL_USE_FLOCK): Make it conditional.
+
+2003-05-19  Richard M. Stallman  <rms@gnu.org>
+
+       * xfaces.c (Finternal_set_lisp_face_attribute): Handle Qunspecified
+       as value for QCfont attribute.
+       (realize_default_face): lface should already exist; crash if not.
+       Specify 0 for FORCE_P when calling set_lface_from_font_name.
+
+       * frame.c (Fignore_event): Doc fix.
+
+2003-05-19  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (decode_coding_string): Handle post-read-conversion
+       even if the coding doesn't require decoding.
+
+2003-05-18  Richard M. Stallman  <rms@gnu.org>
+
+       * callproc.c (Fcall_process_region): Doc fix.
+
+2003-05-17  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * lread.c (Fload): Print a message if package is obsolete.
+
+       * window.c (Fselect_window): Add optional `norecord' arg.
+       (select_window_1): Fold into Fselect_window.
+       (select_window_norecord): New function.
+       (temp_output_buffer_show): Use it.  Preserve current buffer.
+
+       * window.h (Fselect_window): Update declaration.
+
+       * window.c (delete_window, Fother_window, Fset_window_configuration):
+       * minibuf.c (read_minibuf):
+       * macterm.c (x_new_focus_frame):
+       * frame.c (do_switch_frame, Fset_frame_selected_window, Fdelete_frame):
+       * callint.c (Fcall_interactively):
+       * xterm.c (x_new_focus_frame): Pass nil as new arg to Fselect_window.
+
+       * buffer.c (Fpop_to_buffer): Pass norecord to Fselect_window.
+
+2003-05-17  David Kastrup  <dak@gnu.org>
+
+       * process.c (read_process_output): Back out change from 2003-03-09.
+
+2003-05-17  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * editfns.c (get_pos_property): Don't assume that `object' = nil.
+
+       * textprop.c (text_property_stickiness): New arg `buffer'.
+
+       * intervals.h (text_property_stickiness): New arg `buffer'.
+       (get_pos_property): Declare.
+
+       * intervals.c (get_local_map): Use get_pos_property, to obey
+       stickiness and empty overlays.
+       (create_root_interval, graft_intervals_into_buffer): Use BEG.
+       (merge_properties, intervals_equal, merge_properties_sticky):
+       Use XCAR, XCDR.
+       (adjust_for_invis_intang): Pass new arg to text_property_stickiness.
+
+2003-05-17  Richard M. Stallman  <rms@gnu.org>
+
+       * minibuf.c (read_minibuf): If buffer is empty, record the default
+       in the history.
+       (Fminibuffer_complete_word): When deleting the overlap, take account
+       of its real position.
+
+       * fns.c (map_char_table): Fix previous change.
+
+       * syntax.c (find_defun_start):
+       When open_paren_in_column_0_is_defun_start,
+       return beginning of buffer.
+
+       * lisp.h (map_char_table): Declare added arg.
+
+       * fns.c (map_char_table): New arg TABLE gets the master table.
+       All calls changed.
+       Process default and inheritance, resorting to Faref if necessary.
+
+       * keymap.c (Fset_keymap_parent, map_keymap, Fcopy_keymap)
+       (Faccessible_keymaps): Pass new arg to map_char_table.
+
+       * fontset.c (Ffontset_info): Pass new arg to map_char_table.
+
+       * casetab.c (set_case_table): Pass new arg to map_char_table.
+
+       * data.c (let_shadows_buffer_binding_p): Make target of p volatile.
+
+       * lisp.h (specbinding_func): New typedef.
+       (struct specbinding): Use specbinding_func, to put the `volatile'
+       in the right place.
+
+       * alloc.c (Fgarbage_collect): Cast pointers into specpdl
+       to avoid GCC warning.
+
+2003-05-16  Ralph Schleicher  <rs@nunatak.allgaeu.org>  (tiny change)
+
+       * fileio.c (Fdelete_file): Handle symlinks pointing to directories.
+
+2003-05-15  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (apply_modifiers): Don't fill the other cache.
+
+2003-05-14  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * .gdbinit-union: New file, for USE_LISP_UNION_TYPE users.
+
+       * window.h (Qwindowp, Qwindow_live_p, Vwindow_list)
+       (Fwindow_end, Fselected_window, Fdelete_window, Fwindow_buffer)
+       (Fget_buffer_window, Fsave_window_excursion, Fsplit_window)
+       (Fset_window_configuration, Fcurrent_window_configuration)
+       (compare_window_configurations, Fcoordinates_in_window_p, Fwindow_at)
+       (Fpos_visible_in_window_p, mark_window_cursors_off)
+       (window_internal_height, window_internal_width, Frecenter)
+       (Fscroll_other_window, Fset_window_start, temp_output_buffer_show)
+       (replace_buffer_in_all_windows, init_window_once, init_window)
+       (syms_of_window, keys_of_window): Move from lisp.h.
+       * lisp.h: Move window.c declarations to window.h.
+
+       * bytecode.c: Include window.h.
+       * emacs.c: Include window.h.
+
+       * keyboard.c (make_lispy_event): Apply modifiers to multibyte-char key.
+       (keyremap): Add `parent' field.
+       (keyremap_step): Use it.  Remove `parent' argument.
+       (read_key_sequence): Setup and use the new `parent' field.
+
+2003-05-11  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (adjust_point_for_property): Ensure termination.
+
+2003-05-10  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (follow_key): Remove dead variable `did_meta'.
+       (access_keymap_keyremap, keyremap_step): New funs, extracted from the
+       duplicated handling of function-key-map and key-translation-map
+       in read_key_sequence.
+       (read_key_sequence): Use them.
+
+       * keyboard.c (adjust_point_for_property): Try harder to move point
+       to the non-sticky end of an invisible property.
+
+       * xdisp.c (single_display_prop_intangible_p): Make `space' display
+       property intangible as well.
+
+2003-05-10  Andreas Schwab  <schwab@suse.de>
+
+       * xmenu.c (single_menu_item): Change last parameter to void* to
+       avoid warning.
+
+2003-05-09  Richard M. Stallman  <rms@gnu.org>
+
+       * print.c (Fprin1_to_string): Instead of gcpro, set abort_on_gc.
+       Bind Qinhibit_modification_hooks to t so there will be no GC.
+       Rename local `tem' to `save_deactivate_mark'.
+
+       * eval.c (specpdl_ptr): Declare volatile.
+       (unbind_to): Copy the whole binding and decrement specpdl_ptr
+       before doing the work of unbinding it.
+
+       * lisp.h (struct specbinding): Declare elements volatile.
+       (specpdl_ptr): Declare volatile.
+
+       * Makefile.in (alloca.o): Specify -DDO_BLOCK_INPUT in compiling.
+
+       * alloca.c: Test DO_BLOCK_INPUT rather than `emacs'
+       for use of BLOCK_INPUT and inclusion of lisp.h and blockinput.h.
+
+2003-05-08  Dave Love  <fx@gnu.org>
+
+       * coding.c (Vlast_coding_system_used): Doc fix.
+
+2003-05-07  Jason Rumney  <jasonr@gnu.org>
+
+       * fileio.c (Ffile_symlink_p): Let handlers handle symlinks even
+       when system does not support them.
+
+2003-05-05  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * fileio.c (Qwrite_region_annotate_functions): New var.
+       (build_annotations): Use it to process the global part of the hook.
+       (syms_of_fileio): Init and staticpro it.
+
+       * keyboard.c (safe_run_hooks_error): Display a message instead of
+       silently ignoring the error.
+
+2003-05-03  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * keyboard.c (input_available_signal): Mark static.
+       (menu_bar_items): Use map_keymap.
+       (menu_bar_one_keymap): Remove.
+       (menu_bar_item): Adjust arglist (for use in map_keymap).
+       Properly hide a second binding when not both are keymaps.
+
+       * xmenu.c (struct skp): New struct, to pass args through map_keymap.
+       (single_keymap_panes): Use it and map_keymap.
+       (single_menu_item): Use skp as well.
+
+       * keymap.h (map_keymap_function_t): New type.
+       (map_keymap): Declare.
+
+       * keymap.c (map_keymap_item, map_keymap_char_table_item, map_keymap)
+       (map_keymap_call, Fmap_keymap): New functions.
+       (syms_of_keymap): Defsubr map-keymap.
+
+2003-05-02  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * gtkutil.c (create_dialog, make_widget_for_menu_item)
+       (make_menu_item, create_menus, xg_update_menu_item): Don't call
+       ..._with_mnemonic functions for menu items.
+
+2003-05-01  Kenichi Handa  <handa@m17n.org>
+
+       * coding.c (coding_system_accept_latin_extra_p): Delete this
+       function.
+       (find_safe_codings): Pay attention to
+       the property tranlsation-table-for-encode of each codings.
+       (syms_of_coding): Give Qtranslation_table the extra slot number 2.
+
+2003-05-01  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (Funwind_protect): Use func=Fprogn rather than symbol=Qnil.
+
+2003-04-30  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (unbind_to): Don't handle symbol = Qnil any more.
+
+       * lisp.h (CHECK): Wrap args in parenthesis.
+       (specbind): Fix doc: symbol = Qnil is not supported any more.
+
+       * bytecode.c (Fbyte_code) <unwind-protect>:
+       Use Fprogn rather than 0 and Qnil.
+
+       * keyboard.c (parse_modifiers_uncached): Parse `down', `drag',
+       `double', and `triple' modifiers as well.
+
+2003-04-30  Richard M. Stallman  <rms@gnu.org>
+
+       * keyboard.c (echo_char): Don't clear out a dash that follows a space.
+
+       * alloc.c (abort_on_gc): New variable.
+       (Fgarbage_collect): Abort if abort_on_gc is set.
+
+       * lisp.h (abort_on_gc): Add decl.
+
+       * eval.c (Fsignal): Clear abort_on_gc.
+
+       * editfns.c (Fformat): Set abort_on_gc during first scan of format.
+       Reinit FORMAT_START and END before second scan.
+
+       * xdisp.c (move_it_vertically_backward): Do the final big else
+       even if nlines is 0.
+
+       * xdisp.c (redisplay_internal): Finish the per-frame loop
+       even if redisplay is suspended by input.
+
+2003-04-24  Andrew Choi  <akochoi@shaw.ca>
+
+       * macterm.c (x_list_fonts): Return all fonts that match if
+       maxnames = -1.
+
+2003-04-25  Kenichi Handa  <handa@m17n.org>
+
+       * syntax.c (skip_chars): Fix previous change.
+
+2003-04-24  Kenichi Handa  <handa@m17n.org>
+
+       * syntax.c (skip_chars): Make the code faster by using the common
+       technique of *p, *stop, and *endp.
+
+2003-04-23  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * xdisp.c (update_tool_bar): BLOCK_INPUT before calling
+       tool_bar_items so GTK tool bar expose callback does not access items
+       being updated.
+
+2003-04-19  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (Fapply): Undo last change and add a comment about why.
+
+2003-04-18  Miles Bader  <miles@gnu.org>
+
+       * data.c (Faset): Calculate nbytes earlier, to satisfy the now
+       pickier PARSE_MULTIBYTE_SEQ.
+
+2003-04-17  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * eval.c (For, Fand, Fprogn, un_autoload, do_autoload):
+       Use XCDR, XCAR, CONSP.
+       (Fdefmacro): Fix docstring.  Use XCAR, XCDR.
+       (Fapply): Remove unnecessary GCPRO.
+
+       * doc.c (Fsubstitute_command_keys): Remove spurious casts.
+
+       * charset.h (PARSE_MULTIBYTE_SEQ): Pretend `length' is used.
+
+       * buffer.h: Don't hardcode BEG==1.
+
+       * abbrev.c (Fdefine_abbrev_table): Use XCAR, XCDR.
+
 2003-04-16  Richard M. Stallman  <rms@gnu.org>
 
        * xdisp.c (try_window, try_window_reusing_current_matrix):
 
        * buffer.c (Foverlay_recenter): Doc fix.
 
+2003-04-14  Stefan Monnier  <monnier@cs.yale.edu>
+
+       * dispnew.c (Fsit_For): Support XEmacs-style arg list.
+
 2003-04-14  Andrew Choi  <akochoi@shaw.ca>
 
        * macterm.c (mac_check_for_quit_char): Don't check more often than