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 horisontally, 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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_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.
(tramp-handle-file-symlink-p): If target of symlink is absolute,
return a Tramp filename. (Ie, return "/user@host:/target" instead
of "/target".)
(tramp-handle-file-truename): Deal with new return value from
`file-symlink-p'.
(tramp-handle-expand-file-name): Make default method explicit in
file name.
(tramp-unified-filenames): Move to an earlier spot in the file.
(top-level): If tramp-unified-filenames is set and we're running
on XEmacs, load tramp-efs.
(tramp-wait-for-shell-prompt, tramp-barf-if-no-shell-prompt): New
functions, used by tramp-send-command-internal.
(tramp-open-connection-setup-interactive-shell): Simplify using
`tramp-send-command-internal'.
(tramp-send-command-internal): New function.
(tramp-methods): New entries "remsh" and "remcp" are like "rsh"
and "rcp" but invoke "remsh" instead of "rsh". This is useful on
Cray systems, for instance. Unify tramp-rsh-program,
tramp-telnet-program, tramp-su-program into tramp-login-program.
Likewise with tramp-login-args, tramp-copy-program,
tramp-copy-args, tramp-copy-keep-date-arg. Users changed. New
method plink1; like plink but pass "-1" to force protocol version
1.
(tramp-default-method): Use plink as the default on machines where
the plink program is present.
(tramp-completion-file-name-handler): Add safe-magic property.
(tramp-shell-prompt-pattern): Allow ANSI escapes at
end of prompt. (ANSI escapes elsewhere in the prompt are
recognized properly already.)
(gud-gdba-command-name): Use -noasync in all cases (as Fortran
seems to require it also).
(gdb-source-info): Parse correctly when compilation directory
specifies host also (IRIX).