bpt/emacs.git
31 years ago* scrollbar.el: New file.
Jim Blandy [Thu, 14 Jan 1993 14:52:32 +0000 (14:52 +0000)]
* scrollbar.el: New file.
* term/x-win.el: Require 'scrollbar.

31 years ago* simple.el (set-goal-column): Make this command disabled by default.
Jim Blandy [Thu, 14 Jan 1993 14:50:16 +0000 (14:50 +0000)]
* simple.el (set-goal-column): Make this command disabled by default.

31 years ago* page-ext.el (next-page): Correctly handle negative page count.
Jim Blandy [Thu, 14 Jan 1993 14:49:17 +0000 (14:49 +0000)]
* page-ext.el (next-page): Correctly handle negative page count.

31 years ago* frame.el (frame-notice-user-settings): Don't try to delete the
Jim Blandy [Thu, 14 Jan 1993 14:48:57 +0000 (14:48 +0000)]
* frame.el (frame-notice-user-settings): Don't try to delete the
initial frame if the user took care of that.

31 years agoInitial revision
Jim Blandy [Thu, 14 Jan 1993 06:41:03 +0000 (06:41 +0000)]
Initial revision

31 years agoDefine MAKE, and use where appropriate.
Richard M. Stallman [Wed, 13 Jan 1993 22:20:28 +0000 (22:20 +0000)]
Define MAKE, and use where appropriate.

31 years ago(Fredraw_display): Redraw all visible frames.
Richard M. Stallman [Wed, 13 Jan 1993 05:17:34 +0000 (05:17 +0000)]
(Fredraw_display): Redraw all visible frames.
Make the non-multi-frame version interactive.

31 years ago(mouse-save-then-kill): When deleting, avoid delay
Richard M. Stallman [Wed, 13 Jan 1993 01:31:45 +0000 (01:31 +0000)]
(mouse-save-then-kill): When deleting, avoid delay
and don't set the mark.  Replace obsolete fn event-point.
(mouse-kill): Replace obsolete fn event-point.

31 years ago(float_to_string): Add final 0 if text ends with decimal pt.
Richard M. Stallman [Wed, 13 Jan 1993 00:25:03 +0000 (00:25 +0000)]
(float_to_string): Add final 0 if text ends with decimal pt.

31 years ago(Fset_default_file_modes, Fdefault_file_modes): Renamed from .._mode.
Richard M. Stallman [Tue, 12 Jan 1993 00:12:21 +0000 (00:12 +0000)]
(Fset_default_file_modes, Fdefault_file_modes): Renamed from .._mode.

31 years ago(Fset_default_file_mode, Fdefault_file_mode):
Richard M. Stallman [Tue, 12 Jan 1993 00:04:37 +0000 (00:04 +0000)]
(Fset_default_file_mode, Fdefault_file_mode):
Renamed from Fset_umask and Fumask; sense of arg is reversed.

31 years ago(Fwrite_region): Doc fix.
Richard M. Stallman [Mon, 11 Jan 1993 23:15:30 +0000 (23:15 +0000)]
(Fwrite_region): Doc fix.

31 years ago(kill-append): Doc fix.
Richard M. Stallman [Mon, 11 Jan 1993 05:10:15 +0000 (05:10 +0000)]
(kill-append): Doc fix.

31 years ago(float_to_string): Add `.0' at end if needed.
Richard M. Stallman [Sun, 10 Jan 1993 20:10:26 +0000 (20:10 +0000)]
(float_to_string): Add `.0' at end if needed.

31 years ago(Fload): If warn that .elc file is older,
Richard M. Stallman [Sun, 10 Jan 1993 16:44:36 +0000 (16:44 +0000)]
(Fload): If warn that .elc file is older,
inhibit the ordinary message that would follow.

31 years ago(mail-unsent-separator): Add `-- begin message --'.
Richard M. Stallman [Sat, 9 Jan 1993 14:30:36 +0000 (14:30 +0000)]
(mail-unsent-separator): Add `-- begin message --'.

31 years ago(dired-mark-read-regexp): Give dired-read-regexp 1 arg.
Richard M. Stallman [Sat, 9 Jan 1993 13:54:05 +0000 (13:54 +0000)]
(dired-mark-read-regexp): Give dired-read-regexp 1 arg.

31 years ago(dired-regexp-history): New history list.
Richard M. Stallman [Sat, 9 Jan 1993 13:53:49 +0000 (13:53 +0000)]
(dired-regexp-history): New history list.
(dired-read-regexp): Use that history list.  Take just one arg.

31 years ago(update-copyright): Doc fix.
Roland McGrath [Sat, 9 Jan 1993 00:01:00 +0000 (00:01 +0000)]
(update-copyright): Doc fix.

31 years agoUse process-send-string instead of send-string.
Michael I. Bushnell [Fri, 8 Jan 1993 21:14:11 +0000 (21:14 +0000)]
Use process-send-string instead of send-string.

31 years ago(add-change-log-entry): Search for existing ChangeLog
Richard M. Stallman [Fri, 8 Jan 1993 21:13:23 +0000 (21:13 +0000)]
(add-change-log-entry): Search for existing ChangeLog
in parent dir and its parents.

31 years agoAlso, write a newline after the token.
Michael I. Bushnell [Fri, 8 Jan 1993 21:12:58 +0000 (21:12 +0000)]
Also, write a newline after the token.

31 years agoAlso, write a newline after the token.
Michael I. Bushnell [Fri, 8 Jan 1993 20:36:35 +0000 (20:36 +0000)]
Also, write a newline after the token.

31 years agotimer.c (notify): Flush stdout after writing message to avoid lossage
Michael I. Bushnell [Fri, 8 Jan 1993 20:36:14 +0000 (20:36 +0000)]
timer.c (notify): Flush stdout after writing message to avoid lossage
on terminals.

31 years agoDoc fixes.
Richard M. Stallman [Fri, 8 Jan 1993 20:33:12 +0000 (20:33 +0000)]
Doc fixes.

31 years ago(run-at-time): Use a pipe to talk to the timer process.
Roland McGrath [Fri, 8 Jan 1993 20:28:41 +0000 (20:28 +0000)]
(run-at-time): Use a pipe to talk to the timer process.

31 years agotimer.c (notify): Flush stdout after writing message to avoid lossage
Michael I. Bushnell [Fri, 8 Jan 1993 20:26:54 +0000 (20:26 +0000)]
timer.c (notify): Flush stdout after writing message to avoid lossage
on terminals.

31 years agoInitial revision
Richard M. Stallman [Fri, 8 Jan 1993 15:30:08 +0000 (15:30 +0000)]
Initial revision

31 years agoentered into RCS
Richard M. Stallman [Fri, 8 Jan 1993 15:12:37 +0000 (15:12 +0000)]
entered into RCS

31 years ago(Frandom): Change arg name.
Richard M. Stallman [Fri, 8 Jan 1993 09:08:24 +0000 (09:08 +0000)]
(Frandom): Change arg name.

31 years ago(unexec): Don't call exit, just return.
Richard M. Stallman [Thu, 7 Jan 1993 10:22:16 +0000 (10:22 +0000)]
(unexec): Don't call exit, just return.

31 years ago(mail-send): Don't clear modified or delete autosave if visiting a file.
Richard M. Stallman [Thu, 7 Jan 1993 10:18:46 +0000 (10:18 +0000)]
(mail-send): Don't clear modified or delete autosave if visiting a file.

31 years ago* simple.el (kill-region): Change interactive spec to signal an
Jim Blandy [Thu, 7 Jan 1993 02:50:39 +0000 (02:50 +0000)]
* simple.el (kill-region): Change interactive spec to signal an
error if the buffer is read-only, and remove the code to do a
copy-region-as-kill if the buffer is read-only.

* simple.el (set-mark-command): Clarify doc string.

* simple.el (prefix-arg-internal): Don't apply string-to-char to
get the first element of the key sequence - it might be a vector.

31 years agoSmall changes to keep people from running Emacs under X.
Jim Blandy [Thu, 7 Jan 1993 02:49:15 +0000 (02:49 +0000)]
Small changes to keep people from running Emacs under X.

31 years ago*** empty log message ***
Jim Blandy [Thu, 7 Jan 1993 01:47:11 +0000 (01:47 +0000)]
*** empty log message ***

31 years agoentered into RCS
Richard M. Stallman [Wed, 6 Jan 1993 04:35:15 +0000 (04:35 +0000)]
entered into RCS

31 years agoNew version received.
Richard M. Stallman [Tue, 5 Jan 1993 22:25:05 +0000 (22:25 +0000)]
New version received.

31 years ago($os alternatives for sco and isc): Preserve the specified os version if any.
Richard M. Stallman [Tue, 5 Jan 1993 05:43:42 +0000 (05:43 +0000)]
($os alternatives for sco and isc): Preserve the specified os version if any.
Each alternative handles both 386 and 486, preserving distinction.
($basic_machine alternatives for sco and isc): Deleted.
(i[34]86v32, i[34]86v, i[34]86v4):
Handle both cpus together, preserving distinction.

31 years ago(apropos-match-keys): Handle non-chars as keys.
Richard M. Stallman [Mon, 4 Jan 1993 11:36:14 +0000 (11:36 +0000)]
(apropos-match-keys): Handle non-chars as keys.

31 years ago(Fx_get_resource): Use EMACS_CLASS to make class_key
Richard M. Stallman [Sun, 3 Jan 1993 23:43:29 +0000 (23:43 +0000)]
(Fx_get_resource): Use EMACS_CLASS to make class_key
even if SUBCLASS is specified.  I don't know whether that is
right, but that's what the doc says.
Cosmetic changes in arg names and doc string.

31 years agoTranslate sunos5 to solaris2, and solaris1 to sunos4.
Richard M. Stallman [Sat, 2 Jan 1993 21:51:50 +0000 (21:51 +0000)]
Translate sunos5 to solaris2, and solaris1 to sunos4.

31 years ago(compilation-sentinel): Change buffer-read-only with let.
Richard M. Stallman [Sat, 2 Jan 1993 21:21:14 +0000 (21:21 +0000)]
(compilation-sentinel): Change buffer-read-only with let.

31 years ago(texinfo-tex-command): Use texi2dvi.
Richard M. Stallman [Wed, 30 Dec 1992 08:14:01 +0000 (08:14 +0000)]
(texinfo-tex-command): Use texi2dvi.
(texinfo-texindex, texinfo-texindex-command): Commented out.

31 years ago[! emacs] [HAVE_CONFIG_H]: #include "config.h"
Roland McGrath [Tue, 29 Dec 1992 21:58:10 +0000 (21:58 +0000)]
[! emacs] [HAVE_CONFIG_H]: #include "config.h"

31 years ago(mouse-buffer-menu): Select the window clicked on.
Richard M. Stallman [Tue, 29 Dec 1992 21:06:51 +0000 (21:06 +0000)]
(mouse-buffer-menu): Select the window clicked on.

31 years ago(add-change-log-entry): Notice when ENTRY is equal to FILE-NAME,
Roland McGrath [Tue, 29 Dec 1992 01:07:26 +0000 (01:07 +0000)]
(add-change-log-entry): Notice when ENTRY is equal to FILE-NAME,
not the hard-wired string "ChangeLog".
Added missing regexp-quote's in same-day entry search.
Search only in the first paragraph for a similar entry to add to.

31 years agoDefault to bsd for *-sequent.
Richard M. Stallman [Mon, 28 Dec 1992 19:57:15 +0000 (19:57 +0000)]
Default to bsd for *-sequent.

31 years ago(abbreviated-home-dir): New variable.
Richard M. Stallman [Sat, 26 Dec 1992 08:46:31 +0000 (08:46 +0000)]
(abbreviated-home-dir): New variable.
(abbreviate-file-name): Properly convert abbreviated homedir to ~.

31 years ago(visit-tags-table-buffer): When picking a table and using tags-table-list,
Roland McGrath [Thu, 24 Dec 1992 22:42:05 +0000 (22:42 +0000)]
(visit-tags-table-buffer): When picking a table and using tags-table-list,
skip over nonexistent files in the list.

31 years ago(etags-verify-tags-table): Use eq instead of = in case char-after returns
Roland McGrath [Thu, 24 Dec 1992 22:33:11 +0000 (22:33 +0000)]
(etags-verify-tags-table): Use eq instead of = in case char-after returns
nil.

31 years ago*** empty log message ***
Jim Blandy [Thu, 24 Dec 1992 06:49:45 +0000 (06:49 +0000)]
*** empty log message ***

31 years ago* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy [Thu, 24 Dec 1992 06:23:08 +0000 (06:23 +0000)]
* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type.  Change `part' from a Lisp_Object to an enum
scrollbar_part.  Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars.  Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size.  Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.

* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
v_thumbdown, v_slider, h_scrollbar, h_thumbup,
h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
fields.
* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
interface.
(head_table): Removed from here as well.
(syms_of_keyboard): And here.
* keyboard.h: And here.
(POSN_SCROLLBAR_BUTTON): Removed.
* xscrollbar.h: File removed - no longer necessary.
* xfns.c: Don't #include it any more.
(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
(syms_of_xfns): Don't initialize or staticpro them.
(gray_bits): Salvaged from xscrollbar.h.
(x_window_to_scrollbar): Deleted.
(x_set_horizontal_scrollbar): Deleted.
(enum x_frame_parm, x_frame_parms): Remove references to
x_set_horizontal_scrollbar.
(x_set_foreground_color, x_set_background_color,
x_set_border_pixel): Remove special code to support scrollbars.
(Fx_create_frame): Remove old scrollbar setup code.
(install_vertical_scrollbar, install_horizontal_scrollbar,
adjust_scrollbars, x_resize_scrollbars): Deleted.
* xterm.c (construct_mouse_click): This doesn't need to take care of
scrollbar clicks anymore.
(XTread_socket): Remove old code to support scrollbars.  Call new
functions instead for events which occur in scrollbar windows.
(XTupdate_end): Remove call to adjust_scrollbars; the main
redisplay code takes care of that now.
(enum window_type): Deleted.
* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.

* xterm.h (PIXEL_WIDTH, PIXEL_HEIGHT): Change name of parameter
from `s' to `f'; it's a frame pointer.

31 years ago* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy [Thu, 24 Dec 1992 06:21:14 +0000 (06:21 +0000)]
* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type.  Change `part' from a Lisp_Object to an enum
scrollbar_part.  Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars.  Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size.  Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.

* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
v_thumbdown, v_slider, h_scrollbar, h_thumbup,
h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
fields.
* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
interface.
(head_table): Removed from here as well.
(syms_of_keyboard): And here.
* keyboard.h: And here.
(POSN_SCROLLBAR_BUTTON): Removed.
* xscrollbar.h: File removed - no longer necessary.
* xfns.c: Don't #include it any more.
(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
(syms_of_xfns): Don't initialize or staticpro them.
(gray_bits): Salvaged from xscrollbar.h.
(x_window_to_scrollbar): Deleted.
(x_set_horizontal_scrollbar): Deleted.
(enum x_frame_parm, x_frame_parms): Remove references to
x_set_horizontal_scrollbar.
(x_set_foreground_color, x_set_background_color,
x_set_border_pixel): Remove special code to support scrollbars.
(Fx_create_frame): Remove old scrollbar setup code.
(install_vertical_scrollbar, install_horizontal_scrollbar,
adjust_scrollbars, x_resize_scrollbars): Deleted.
* xterm.c (construct_mouse_click): This doesn't need to take care of
scrollbar clicks anymore.
(XTread_socket): Remove old code to support scrollbars.  Call new
functions instead for events which occur in scrollbar windows.
(XTupdate_end): Remove call to adjust_scrollbars; the main
redisplay code takes care of that now.
(enum window_type): Deleted.
* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.

* xterm.c (x_set_mouse_position): Clip mouse position to be within
frame.

* xterm.c: Adjust the first line of each page to have a reasonable
description.  This makes pages-directory more useful.

* xterm.c (x_do_pending_expose): Declare this routine only if
HAVE_X11 is not #defined; X11 doesn't need it.
(XTread_socket): Protect call to x_do_pending_expose with `#ifdef
HAVE_X11'.

* xterm.c (notice_mouse_movement): Deleted; obsolete and unused.

Properly handle focus shift events, so the cursor is filled and
hollow at the appropriate times, even in titleless windows.
* xterm.c (x_focus_event_frame): New variable.
(XTread_socket): When we receive a FocusIn event that's not
NotifyPointer, record the frame in x_focus_event_frame.  When we
receive a FocusOut event that's not NotifyPointer, clear it.  When
we get a LeaveNotify event, don't take it seriously if we still
have focus.

* xterm.c (XTread_socket): Remove special code in EnterNotify case
to handle scrollbars and fake mouse motion events.

Change the meaning of focus redirection to make switching windows
work properly.  Fredirect_frame_focus has the details.
* frame.h (focus_frame): Doc fix.
[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
indicates no focus redirection, instead of zero, which is
selected_frame.
* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
than making it point to frame itself.
(Fselect_frame): If changing the selected frame from FOO to BAR,
make all redirections to FOO shift to BAR as well.  Doc fix.
(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
redirection, not just as a default for FRAME.
(Fframe_focus): Doc fix.
* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
with focus redirections being nil.
* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
redirections being nil.

* xterm.c (x_error_quitter): Just abort, so we can look at the
core to see what happened.

It's a pain to remember that you can't assign to FRAME->visible.
Let's change all references to the `visible' member of struct
frame to use the accessor macros, and then write a setter for the
`visible' field that does the right thing.
* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
(FRAME_SET_VISIBLE): New macro.
* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
FRAME_ICONIFIED_P.
* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
FRAME_GARBAGED_P accessors.
* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
* xfns.c (x_set_foreground_color, x_set_background_color,
x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
FRAME_VISIBLE_P accessor.
(Fx_create_frame): Use FRAME_SET_VISIBILITY.
* xterm.c (clear_cursor, x_display_bar_cursor,
x_display_box_cursor): Use FRAME_SET_VISIBILITY.

31 years ago* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy [Thu, 24 Dec 1992 06:19:31 +0000 (06:19 +0000)]
* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type.  Change `part' from a Lisp_Object to an enum
scrollbar_part.  Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars.  Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size.  Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.

* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
v_thumbdown, v_slider, h_scrollbar, h_thumbup,
h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
fields.
* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
interface.
(head_table): Removed from here as well.
(syms_of_keyboard): And here.
* keyboard.h: And here.
(POSN_SCROLLBAR_BUTTON): Removed.
* xscrollbar.h: File removed - no longer necessary.
* xfns.c: Don't #include it any more.
(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
(syms_of_xfns): Don't initialize or staticpro them.
(gray_bits): Salvaged from xscrollbar.h.
(x_window_to_scrollbar): Deleted.
(x_set_horizontal_scrollbar): Deleted.
(enum x_frame_parm, x_frame_parms): Remove references to
x_set_horizontal_scrollbar.
(x_set_foreground_color, x_set_background_color,
x_set_border_pixel): Remove special code to support scrollbars.
(Fx_create_frame): Remove old scrollbar setup code.
(install_vertical_scrollbar, install_horizontal_scrollbar,
adjust_scrollbars, x_resize_scrollbars): Deleted.
* xterm.c (construct_mouse_click): This doesn't need to take care of
scrollbar clicks anymore.
(XTread_socket): Remove old code to support scrollbars.  Call new
functions instead for events which occur in scrollbar windows.
(XTupdate_end): Remove call to adjust_scrollbars; the main
redisplay code takes care of that now.
(enum window_type): Deleted.
* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.

* xfns.c (syms_of_xfns): Delete defvars for x_mouse_x and
x_mouse_y.  That interface hasn't been live for years.
(x_mouse_x, x_mouse_y): Delete these variables.

* xfns.c (Fx_create_frame): Don't initialize the wm_hints field here.
(x_window): Do it here, along with all the similar stuff.

It's a pain to remember that you can't assign to FRAME->visible.
Let's change all references to the `visible' member of struct
frame to use the accessor macros, and then write a setter for the
`visible' field that does the right thing.
* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
(FRAME_SET_VISIBLE): New macro.
* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
FRAME_ICONIFIED_P.
* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
FRAME_GARBAGED_P accessors.
* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
* xfns.c (x_set_foreground_color, x_set_background_color,
x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
FRAME_VISIBLE_P accessor.
(Fx_create_frame): Use FRAME_SET_VISIBILITY.
* xterm.c (clear_cursor, x_display_bar_cursor,
x_display_box_cursor): Use FRAME_SET_VISIBILITY.

31 years ago* xdisp.c: #include "termhooks.h".
Jim Blandy [Thu, 24 Dec 1992 06:18:24 +0000 (06:18 +0000)]
* xdisp.c: #include "termhooks.h".
(redisplay, redisplay_window): Use set_vertical_scrollbar_hook,
condemn_scrollbars_hook, redeem_scrollbar_hook, and
judge_scrollbars_hook to make scrollbars redisplay properly.

It's a pain to remember that you can't assign to FRAME->visible.
Let's change all references to the `visible' member of struct
frame to use the accessor macros, and then write a setter for the
`visible' field that does the right thing.
* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
(FRAME_SET_VISIBLE): New macro.
* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
FRAME_ICONIFIED_P.
* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
FRAME_GARBAGED_P accessors.
* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
* xfns.c (x_set_foreground_color, x_set_background_color,
x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
FRAME_VISIBLE_P accessor.
(Fx_create_frame): Use FRAME_SET_VISIBILITY.
* xterm.c (clear_cursor, x_display_bar_cursor,
x_display_box_cursor): Use FRAME_SET_VISIBILITY.

31 years ago* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy [Thu, 24 Dec 1992 06:17:18 +0000 (06:17 +0000)]
* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type.  Change `part' from a Lisp_Object to an enum
scrollbar_part.  Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars.  Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size.  Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.

31 years ago* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
Jim Blandy [Thu, 24 Dec 1992 06:16:36 +0000 (06:16 +0000)]
* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
Qabove_handle, Qhandle, Qbelow_handle): New symbols.
(make_lispy_event): New code to build scrollbar clicks.
(make_lispy_movement): New code to handle scrollbar movement.
(head_table): Include Qscrollbar_movement in the event heads.
(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
Qabove_handle, Qhandle, and Qbelow_handle.
* keyboard.h (Qscrollbar_movement): Declare this along with the
other event types.
* lisp.h (Qvertical_scrollbar): Declare this.
* window.c (window_from_scrollbar): New function.

* window.c (Fset_window_configuration): Don't restore the frame's
focus redirection if the target frame is now dead.

31 years ago* floatfns.c (Flog): Fix unescaped newline in string.
Jim Blandy [Thu, 24 Dec 1992 06:16:01 +0000 (06:16 +0000)]
* floatfns.c (Flog): Fix unescaped newline in string.
* frame.c (Fnext_frame): Same.
* textprop.c (Fprevious_single_property_change): Same.
(syms_of_textprop): Same, for DEFVAR for
`interval_balance_threshold'.

31 years ago* scroll.c (do_scrolling): When bcopying the max_ascent field from
Jim Blandy [Thu, 24 Dec 1992 06:13:57 +0000 (06:13 +0000)]
* scroll.c (do_scrolling): When bcopying the max_ascent field from
current_frame to temp_frame, remember that max_ascent is an array
of shorts, not ints.

31 years ago* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
Jim Blandy [Thu, 24 Dec 1992 06:13:24 +0000 (06:13 +0000)]
* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
Qabove_handle, Qhandle, Qbelow_handle): New symbols.
(make_lispy_event): New code to build scrollbar clicks.
(make_lispy_movement): New code to handle scrollbar movement.
(head_table): Include Qscrollbar_movement in the event heads.
(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
Qabove_handle, Qhandle, and Qbelow_handle.
* keyboard.h (Qscrollbar_movement): Declare this along with the
other event types.
* lisp.h (Qvertical_scrollbar): Declare this.
* window.c (window_from_scrollbar): New function.

31 years ago* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
Jim Blandy [Thu, 24 Dec 1992 06:13:00 +0000 (06:13 +0000)]
* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
Qabove_handle, Qhandle, Qbelow_handle): New symbols.
(make_lispy_event): New code to build scrollbar clicks.
(make_lispy_movement): New code to handle scrollbar movement.
(head_table): Include Qscrollbar_movement in the event heads.
(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
Qabove_handle, Qhandle, and Qbelow_handle.
* keyboard.h (Qscrollbar_movement): Declare this along with the
other event types.
* lisp.h (Qvertical_scrollbar): Declare this.
* window.c (window_from_scrollbar): New function.

* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
v_thumbdown, v_slider, h_scrollbar, h_thumbup,
h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
fields.
* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
interface.
(head_table): Removed from here as well.
(syms_of_keyboard): And here.
* keyboard.h: And here.
(POSN_SCROLLBAR_BUTTON): Removed.
* xscrollbar.h: File removed - no longer necessary.
* xfns.c: Don't #include it any more.
(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
(syms_of_xfns): Don't initialize or staticpro them.
(gray_bits): Salvaged from xscrollbar.h.
(x_window_to_scrollbar): Deleted.
(x_set_horizontal_scrollbar): Deleted.
(enum x_frame_parm, x_frame_parms): Remove references to
x_set_horizontal_scrollbar.
(x_set_foreground_color, x_set_background_color,
x_set_border_pixel): Remove special code to support scrollbars.
(Fx_create_frame): Remove old scrollbar setup code.
(install_vertical_scrollbar, install_horizontal_scrollbar,
adjust_scrollbars, x_resize_scrollbars): Deleted.
* xterm.c (construct_mouse_click): This doesn't need to take care of
scrollbar clicks anymore.
(XTread_socket): Remove old code to support scrollbars.  Call new
functions instead for events which occur in scrollbar windows.
(XTupdate_end): Remove call to adjust_scrollbars; the main
redisplay code takes care of that now.
(enum window_type): Deleted.
* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.

31 years ago* keyboard.c: Protect all references to kbd_buffer_frames with
Jim Blandy [Thu, 24 Dec 1992 06:12:04 +0000 (06:12 +0000)]
* keyboard.c: Protect all references to kbd_buffer_frames with
#ifdef MULTI_FRAME.

* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type.  Change `part' from a Lisp_Object to an enum
scrollbar_part.  Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars.  Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size.  Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.

* keyboard.c (Qscrollbar_movement, Qvertical_scrollbar,
Qabove_handle, Qhandle, Qbelow_handle): New symbols.
(make_lispy_event): New code to build scrollbar clicks.
(make_lispy_movement): New code to handle scrollbar movement.
(head_table): Include Qscrollbar_movement in the event heads.
(syms_of_keyboard): Init and staticpro Qvertical_scrollbar,
Qabove_handle, Qhandle, and Qbelow_handle.
* keyboard.h (Qscrollbar_movement): Declare this along with the
other event types.
* lisp.h (Qvertical_scrollbar): Declare this.
* window.c (window_from_scrollbar): New function.

* xterm.h (struct x_display): Delete v_scrollbar, v_thumbup,
v_thumbdown, v_slider, h_scrollbar, h_thumbup,
h_thumbdown, h_slider, v_scrollbar_width, h_scrollbar_height
fields.
* keyboard.c (Qvscrollbar_part, Qvslider_part, Qvthumbup_part,
Qvthumbdown_part, Qhscrollbar_part, Qhslider_part, Qhthumbup_part,
Qhthumbdown_part, Qscrollbar_click): Deleted; part of an obsolete
interface.
(head_table): Removed from here as well.
(syms_of_keyboard): And here.
* keyboard.h: And here.
(POSN_SCROLLBAR_BUTTON): Removed.
* xscrollbar.h: File removed - no longer necessary.
* xfns.c: Don't #include it any more.
(Qhorizontal_scroll_bar, Qvertical_scroll_bar): Deleted.
(syms_of_xfns): Don't initialize or staticpro them.
(gray_bits): Salvaged from xscrollbar.h.
(x_window_to_scrollbar): Deleted.
(x_set_horizontal_scrollbar): Deleted.
(enum x_frame_parm, x_frame_parms): Remove references to
x_set_horizontal_scrollbar.
(x_set_foreground_color, x_set_background_color,
x_set_border_pixel): Remove special code to support scrollbars.
(Fx_create_frame): Remove old scrollbar setup code.
(install_vertical_scrollbar, install_horizontal_scrollbar,
adjust_scrollbars, x_resize_scrollbars): Deleted.
* xterm.c (construct_mouse_click): This doesn't need to take care of
scrollbar clicks anymore.
(XTread_socket): Remove old code to support scrollbars.  Call new
functions instead for events which occur in scrollbar windows.
(XTupdate_end): Remove call to adjust_scrollbars; the main
redisplay code takes care of that now.
(enum window_type): Deleted.
* ymakefile: Note that xfns.o no longer depends on xscrollbar.h.

* keyboard.c (Fread_key_sequence): Doc fix.

* keyboard.c (make_lispy_event): Buttons are numbered starting
with zero now.

* keyboard.c (make_lispy_event): Use the proper accessors when
manipulating the `x' and `y' fields of struct input_event.

* keyboard.c (parse_modifiers_uncached): Remember that strncmp
returns zero if the two substrings are equal.

* keyboard.c (do_mouse_tracking, Ftrack_mouse): Doc fix.

* keyboard.c (read_char): Don't put mouse movements in
this_command_keys.

Change the meaning of focus redirection to make switching windows
work properly.  Fredirect_frame_focus has the details.
* frame.h (focus_frame): Doc fix.
[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
indicates no focus redirection, instead of zero, which is
selected_frame.
* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
than making it point to frame itself.
(Fselect_frame): If changing the selected frame from FOO to BAR,
make all redirections to FOO shift to BAR as well.  Doc fix.
(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
redirection, not just as a default for FRAME.
(Fframe_focus): Doc fix.
* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
with focus redirections being nil.
* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
redirections being nil.

* keyboard.c (kbd_buffer_frames): New vector, to GCPRO frames in
kbd_buffer.
(kbd_buffer_store_event): When we add an event to kbd_buffer, make
sure to store its frame in kbd_buffer_frames.
(kbd_buffer_get_event): When we remove an event from kbd_buffer,
make sure to set the corresponding element of kbd_buffer_frames to
Qnil, to allow the frame to get GC'd.
(Fdiscard_input, init_keyboard): Clear all elements of
kbd_buffer_frames to nil.
(syms_of_keyboard): Create and staticpro kbd_buffer_frames.

31 years ago* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy [Thu, 24 Dec 1992 06:07:02 +0000 (06:07 +0000)]
* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type.  Change `part' from a Lisp_Object to an enum
scrollbar_part.  Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars.  Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size.  Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.

Change the meaning of focus redirection to make switching windows
work properly.  Fredirect_frame_focus has the details.
* frame.h (focus_frame): Doc fix.
[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
indicates no focus redirection, instead of zero, which is
selected_frame.
* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
than making it point to frame itself.
(Fselect_frame): If changing the selected frame from FOO to BAR,
make all redirections to FOO shift to BAR as well.  Doc fix.
(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
redirection, not just as a default for FRAME.
(Fframe_focus): Doc fix.
* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
with focus redirections being nil.
* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
redirections being nil.

It's a pain to remember that you can't assign to FRAME->visible.
Let's change all references to the `visible' member of struct
frame to use the accessor macros, and then write a setter for the
`visible' field that does the right thing.
* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
(FRAME_SET_VISIBLE): New macro.
* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
FRAME_ICONIFIED_P.
* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
FRAME_GARBAGED_P accessors.
* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
* xfns.c (x_set_foreground_color, x_set_background_color,
x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
FRAME_VISIBLE_P accessor.
(Fx_create_frame): Use FRAME_SET_VISIBILITY.
* xterm.c (clear_cursor, x_display_bar_cursor,
x_display_box_cursor): Use FRAME_SET_VISIBILITY.

31 years ago* frame.h (struct frame): New fields `can_have_scrollbars' and
Jim Blandy [Thu, 24 Dec 1992 06:05:56 +0000 (06:05 +0000)]
* frame.h (struct frame): New fields `can_have_scrollbars' and
`has_vertical_scrollbars'.
(FRAME_CAN_HAVE_SCROLLBARS, FRAME_HAS_VERTICAL_SCROLLBARS): New
accessors, for both the MULTI_FRAME and non-MULTI_FRAME.
(VERTICAL_SCROLLBAR_WIDTH, WINDOW_VERTICAL_SCROLLBAR,
WINDOW_VERTICAL_SCROLLBAR_COLUMN,
WINDOW_VERTICAL_SCROLLBAR_HEIGHT): New macros.
* window.h (struct window): New field `vertical_scrollbar'.
* xterm.h (struct x_display): vertical_scrollbars,
judge_timestamp, vertical_scrollbar_extra: New fields.
(struct scrollbar): New struct.
(VERTICAL_SCROLLBAR_PIXEL_WIDTH, VERTICAL_SCROLLBAR_PIXEL_HEIGHT,
VERTICAL_SCROLLBAR_LEFT_BORDER, VERTICAL_SCROLLBAR_RIGHT_BORDER,
VERTICAL_SCROLLBAR_TOP_BORDER, VERTICAL_SCROLLBAR_BOTTOM_BORDER,
CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH,
PIXEL_TO_CHAR_HEIGHT): New accessors and macros.
* frame.c (make_frame): Initialize the `can_have_scrollbars' and
`has_vertical_scrollbars' fields of the frame.
* term.c (term_init): Note that TERMCAP terminals don't support
scrollbars.
(mouse_position_hook): Document new args.
(set_vertical_scrollbar_hook, condemn_scrollbars_hook,
redeem_scrollbar_hook, judge_scrollbars_hook): New hooks.
* termhooks.h: Declare and document them.
(enum scrollbar_part): New type.
(struct input_event): Describe the new form of the scrollbar_click
event type.  Change `part' from a Lisp_Object to an enum
scrollbar_part.  Add a new field `scrollbar'.
* keyboard.c (kbd_buffer_get_event): Pass appropriate new
parameters to *mouse_position_hook, and make_lispy_movement.
* xfns.c (x_set_vertical_scrollbar): New function.
(x_figure_window_size): Use new macros to calculate frame size.
(Fx_create_frame): Note that X Windows frames do support scroll
bars.  Default to "yes".
* xterm.c: #include <X11/cursorfont.h> and "window.h".
(x_vertical_scrollbar_cursor): New variable.
(x_term_init): Initialize it.
(last_mouse_bar, last_mouse_bar_frame, last_mouse_part,
last_mouse_scroll_range_start, last_mouse_scroll_range_end): New
variables.
(XTmouse_position): Use them to return scrollbar movement events.
Take new arguments, for that purpose.
(x_window_to_scrollbar, x_scrollbar_create,
x_scrollbar_set_handle, x_scrollbar_remove, x_scrollbar_move,
XTset_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar,
XTjudge_scrollbars, x_scrollbar_expose,
x_scrollbar_background_expose, x_scrollbar_handle_click,
x_scrollbar_handle_motion): New functions to implement scrollbars.
(x_term_init): Set the termhooks.h hooks to point to them.
(x_set_window_size): Use new macros to calculate frame size.  Set
vertical_scrollbar_extra field.
(x_make_frame_visible): Use the frame accessor
FRAME_HAS_VERTICAL_SCROLLBARS to decide if we need to map the
frame's subwindows as well.
(XTread_socket): Use new size-calculation macros from xterm.h when
processing ConfigureNotify events.
(x_wm_set_size_hint): Use PIXEL_TO_CHAR_WIDTH and
PIXEL_TO_CHAR_HEIGHT macros.
* ymakefile (xdisp.o): This now depends on termhooks.h.
(xterm.o): This now depends on window.h.

* floatfns.c (Flog): Fix unescaped newline in string.
* frame.c (Fnext_frame): Same.
* textprop.c (Fprevious_single_property_change): Same.
(syms_of_textprop): Same, for DEFVAR for
`interval_balance_threshold'.

Change the meaning of focus redirection to make switching windows
work properly.  Fredirect_frame_focus has the details.
* frame.h (focus_frame): Doc fix.
[not MULTI_FRAME] (FRAME_FOCUS_FRAME): Make this Qnil, which
indicates no focus redirection, instead of zero, which is
selected_frame.
* frame.c (make_frame): Initialize f->focus_frame to Qnil, rather
than making it point to frame itself.
(Fselect_frame): If changing the selected frame from FOO to BAR,
make all redirections to FOO shift to BAR as well.  Doc fix.
(Fredirect_frame_focus): Doc fix.  Accept nil as a valid
redirection, not just as a default for FRAME.
(Fframe_focus): Doc fix.
* keyboard.c (kbd_buffer_store_event, kbd_buffer_get_event): Deal
with focus redirections being nil.
* xterm.c (XTframe_rehighlight): Doc fix.  Deal with focus
redirections being nil.

It's a pain to remember that you can't assign to FRAME->visible.
Let's change all references to the `visible' member of struct
frame to use the accessor macros, and then write a setter for the
`visible' field that does the right thing.
* frame.h (FRAME_VISIBLE_P): Make this not an l-value.
(FRAME_SET_VISIBLE): New macro.
* frame.c (make_terminal_frame, Fdelete_frame): Use FRAME_SET_VISIBLE.
(Fframe_visible_p, Fvisible_frame_list): Use FRAME_VISIBLE_P and
FRAME_ICONIFIED_P.
* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
FRAME_GARBAGED_P accessors.
* xdisp.c (redisplay): Use the FRAME_VISIBLE_P accessor.
* xfns.c (x_set_foreground_color, x_set_background_color,
x_set_cursor_color, x_set_border_pixel, x_set_icon_type): Use the
FRAME_VISIBLE_P accessor.
(Fx_create_frame): Use FRAME_SET_VISIBILITY.
* xterm.c (clear_cursor, x_display_bar_cursor,
x_display_box_cursor): Use FRAME_SET_VISIBILITY.

31 years ago* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
Jim Blandy [Thu, 24 Dec 1992 06:04:32 +0000 (06:04 +0000)]
* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
FRAME_GARBAGED_P accessors.
* dispnew.c (Fredraw_display): Use the FRAME_VISIBLE_P and
FRAME_GARBAGED_P accessors.

31 years ago* buffer.c (Frename_buffer): Set update_mode_lines.
Jim Blandy [Thu, 24 Dec 1992 06:03:20 +0000 (06:03 +0000)]
* buffer.c (Frename_buffer): Set update_mode_lines.

31 years ago* ymakefile (all, xemacs): We build an executable called `emacs' now,
Jim Blandy [Thu, 24 Dec 1992 06:03:04 +0000 (06:03 +0000)]
* ymakefile (all, xemacs): We build an executable called `emacs' now,
not `xemacs'.
* Makefile.in (distclean, xemacs, doxemacs): Same.

31 years ago* sendmail.el (mail-position-on-field): `end' is guaranteed to be
Jim Blandy [Thu, 24 Dec 1992 06:01:33 +0000 (06:01 +0000)]
* sendmail.el (mail-position-on-field): `end' is guaranteed to be
at the beginning of the header separator; don't skip back to the
end of the previous line.

31 years ago* rmail.el (rmail-unix-mail-delimiter): Not all time zone names
Jim Blandy [Thu, 24 Dec 1992 06:01:02 +0000 (06:01 +0000)]
* rmail.el (rmail-unix-mail-delimiter): Not all time zone names
end with "T".  Accept any sequence of three or four alphabetic
characters.

31 years ago* loadup.el: Dump under the name `emacs', not `xemacs'.
Jim Blandy [Thu, 24 Dec 1992 06:00:32 +0000 (06:00 +0000)]
* loadup.el: Dump under the name `emacs', not `xemacs'.

31 years ago* compile.el (compilation-error-regexp-alist): Tightened up
Jim Blandy [Thu, 24 Dec 1992 06:00:03 +0000 (06:00 +0000)]
* compile.el (compilation-error-regexp-alist): Tightened up
BSD/GNU regexp to insist that line number end with a colon or
close-paren.

* compile.el (compilation-error-regexp-alist): Add regexp for the
MIPS CC distributed with Ultrix.

31 years ago* c-mode.el (c-fill-paragraph): Calculating the proper fill-prefix
Jim Blandy [Thu, 24 Dec 1992 05:59:00 +0000 (05:59 +0000)]
* c-mode.el (c-fill-paragraph): Calculating the proper fill-prefix
shouldn't change the buffer text.  Make it not.  If we're in the
blank space before another comment, fill that one as a comment,
not as normal text.

* c-mode.el (c-fill-paragraph): When guessing the fill prefix,
don't ever grab any actual text.

31 years ago* make-dist: Make sure that the COPYING notices in each directory
Jim Blandy [Thu, 24 Dec 1992 05:57:29 +0000 (05:57 +0000)]
* make-dist: Make sure that the COPYING notices in each directory
are copies, not symlinks.

31 years ago* configure: Start with a blank line; this keeps some old CSH's
Jim Blandy [Thu, 24 Dec 1992 05:56:57 +0000 (05:56 +0000)]
* configure: Start with a blank line; this keeps some old CSH's
from thinking it's a CSH script.  Most systems will just use
/bin/sh to run it, which is what we're expecting; the only other
shells which might try to interpret it themselves are probably
Bourne-compatible.

31 years ago* INSTALL: The build process produces an executable called `emacs'
Jim Blandy [Thu, 24 Dec 1992 05:56:33 +0000 (05:56 +0000)]
* INSTALL: The build process produces an executable called `emacs'
now.  Change references.
* Makefile.in: Adjust `install.mumble' targets to install
`src/emacs', not `src/xemacs'.

* Makefile.in (install, install.sysv, install.xenix, install.aix):
Don't try to copy the info files if there aren't any; the
unexpanded globbing pattern disappoints `install'.  Ignore the
return status of that command.

31 years ago(visit-tags-table-buffer): Don't look in list for tags-file-name if nil.
Roland McGrath [Mon, 21 Dec 1992 19:13:11 +0000 (19:13 +0000)]
(visit-tags-table-buffer): Don't look in list for tags-file-name if nil.

31 years agoMany comments added and docstrings fixed.
Roland McGrath [Mon, 21 Dec 1992 19:08:50 +0000 (19:08 +0000)]
Many comments added and docstrings fixed.
(tags-table-list): Elt of nil is not special.
(tags-expand-table-name): Value of nil is not special.
(tags-next-table): Removed arg RESET; no caller used it.
(visit-tags-table-buffer): Don't need to do tags-expand-table-name in or form.
When table is invalid, only set tags-file-name to nil globally if its
global value contained the losing table file name.
(find-tag-tag): Return a string, not a list.
(find-tag-noselect, find-tag, find-tag-other-window, find-tag-other-frame):
Changed callers.
(etags-recognize-tags-table): Call etags-verify-tags-table, rather than
duplicating its functionality.
(visit-tags-table-buffer): When CONT is 'same, set it to nil after the
cond.  We want the normal list frobbing to take place in this case.
(find-tag-other-window): Save and restore window-point around call to
find-tag-noselect.

31 years ago(ignore): Use defun instead of fset to define; the byte compiler is smart
Roland McGrath [Mon, 21 Dec 1992 18:34:22 +0000 (18:34 +0000)]
(ignore): Use defun instead of fset to define; the byte compiler is smart
enough now not to compile this trivial function into slow byte code.

31 years ago(tagsfiles): New variable.
Roland McGrath [Mon, 21 Dec 1992 18:26:29 +0000 (18:26 +0000)]
(tagsfiles): New variable.
(TAGS): Depend on $(tagsfiles); use that in cmds.
(tags): Separate phony rule; depends on TAGS.

31 years ago(Fcall_interactively): For `s', use Fread_string.
Richard M. Stallman [Mon, 21 Dec 1992 05:38:25 +0000 (05:38 +0000)]
(Fcall_interactively): For `s', use Fread_string.

31 years agoDisplay load-path at start.
Richard M. Stallman [Sat, 19 Dec 1992 20:55:16 +0000 (20:55 +0000)]
Display load-path at start.

31 years ago* frame.c (make_terminal_frame): Don't forget to set the
Jim Blandy [Fri, 18 Dec 1992 10:42:10 +0000 (10:42 +0000)]
* frame.c (make_terminal_frame): Don't forget to set the
`async_visible' flag of the new frame.

31 years ago*** empty log message ***
David J. MacKenzie [Tue, 15 Dec 1992 02:35:40 +0000 (02:35 +0000)]
*** empty log message ***

31 years ago*** empty log message ***
Jim Blandy [Mon, 14 Dec 1992 02:28:29 +0000 (02:28 +0000)]
*** empty log message ***

31 years ago* make-dist: Don't bother creating an arch-lib directory; that's
Jim Blandy [Sat, 12 Dec 1992 15:43:12 +0000 (15:43 +0000)]
* make-dist: Don't bother creating an arch-lib directory; that's
only for installation now.

31 years ago* configure: Don't make the top-level Makefile read-only - people
Jim Blandy [Sat, 12 Dec 1992 15:42:53 +0000 (15:42 +0000)]
* configure: Don't make the top-level Makefile read-only - people
may want to edit the values of the path variables.

Make path specification conform to GNU coding standards.
* configure (long_usage): Remove all traces of old arguments from
usage messages, and document the options we do accept in more
detail: -with-x... and --srcdir.
(options, boolean_opts): Deleted; we don't have enough options to
make this worthwhile.
(prefix, bindir, lisppath, datadir, libdir, lockdir): Deleted,
along with the code which supported them; these should be set as
arguments to the top-level make.
(config_h_opts): Since this no longer doubles as a list of option
names, make them upper case; this simplifies the code which uses
them to build the sed command to edit src/config.h.  Change the
code which sets them.
(cc, g, O): Don't allow the user to set these using options; they
should be specified using `CC=' and `CFLAGS=' arguments to the
top-level make.  Just choose reasonable default values for them,
and edit them into Makefile.in's default CC and CONFIG_CFLAGS
values.
(gnu_malloc, rel_alloc): Don't allow the user to set these using
options; use them whenever the configuration files say they're
possible.
Simplify the argument processing loop.  Don't accept abbreviations
for option names; these might conflict with other configuration
options in the future.
Add some support for the `--srcdir' option.  Check for the sources
in . and .. if `--srcdir' is omitted.  If the directories we will
compile in don't exist yet, create them under the current directory.
Note that the rest of the build process doesn't really support
this.
Edit only the top Makefile.  That should edit the others.  Edit
into the makefile: `version', from lisp/version.el, `configname'
and `srcdir' from the configuration arguments, `CC' and
`CONFIG_CFLAGS' as guessed from the presence or absence of GCC in
the user's path, and LOADLIBES as gleaned from the system
description files.
Simplify the report generated; it doesn't need to include any
description of paths now.
Make `config.status' exec configure instead of just calling it, so
there's no harm in overwriting `config.status'.
* Makefile.in (version, configname): New variables, used to choose
the default values for datadir and libdir.
Path variables rearranged into two clearer groups:
- In the first group are the variables specified by the GNU coding
  standards (prefix, bindir, datadir, statedir, libdir, mandir,
  manext, infodir, and srcdir).
- In the second are the variables actually used for Emacs's paths
  (lispdir, locallisppath, lisppath, buildlisppath, etcdir, lockdir,
  archlibdir), which depend on the first category.
datadir and libdir default to directories under
${prefix}/lib/emacs instead of ${prefix}/emacs, by popular
demand.
etcdir and lispdir default to subdirectories of datadir.
archlibdir defaults to libdir.
The new installation tree is a bit deeper than it used to be, so
use the new make-path program in lib-src to build them all.
Always build a new src/paths.h.tmp and then move-if-change it to
src/paths.h, to avoid unnecessary rebuilds while responding to the
right changes.
Remove all mention of arch-lib.  Run utility commands from
lib-src, and let the executables be copied into archlibdir when
Emacs is installed.
Add targets for src/Makefile, lib-src/Makefile, and
oldXMenu/Makefile, editing the values of the path variables into
them.
Let lib-src do its own installation.
(datadir): Default to putting data files under
${prefix}/lib/emacs/${version}, not /usr/local/emacs.
(emacsdir): Variable deleted; it would only be confusing to use.
(lispdir, etcdir): Default to ${datadir}/lisp.
(mkdir): Use make-path for this.
(lockdir): Do this in mkdir.
(Makefile): New target.

* configure (usage_message): Rename to long_usage.

31 years ago* Makefile.in (install, install.sysv, install.xenix, install.aix):
Jim Blandy [Sat, 12 Dec 1992 15:42:14 +0000 (15:42 +0000)]
* Makefile.in (install, install.sysv, install.xenix, install.aix):
Install the info files in ${infodir}.  Install the executable
under both `emacs' and `emacs-VERSION'.

* Makefile.in: Doc fix.

* Makefile.in (exec_prefix): New variable, as per latest version
of coding standards.
(bindir, libdir): Use it, instead of `prefix'.
(lib-src/Makefile): Edit value of exec_prefix into lib-src/Makefile.

* Makefile.in (mandir): Make the default value for this depend on
$(prefix).

* Makefile.in (datadir, statedir, libdir): Make these all default
to ${prefix}/lib.
(lispdir, locallisppath, etcdir, lockdir, archlibdir): Adjusted
to compensate.

* Makefile.in (install, install.sysv, install.xenix, install.aix):
Install the etags and ctags man pages too.

* Makefile.in (distclean): Don't delete backup files; that's the
job of extraclean.
(extraclean): Like distclean, but deletes backup and autosave files.

Make path specification conform to GNU coding standards.
* configure (long_usage): Remove all traces of old arguments from
usage messages, and document the options we do accept in more
detail: -with-x... and --srcdir.
(options, boolean_opts): Deleted; we don't have enough options to
make this worthwhile.
(prefix, bindir, lisppath, datadir, libdir, lockdir): Deleted,
along with the code which supported them; these should be set as
arguments to the top-level make.
(config_h_opts): Since this no longer doubles as a list of option
names, make them upper case; this simplifies the code which uses
them to build the sed command to edit src/config.h.  Change the
code which sets them.
(cc, g, O): Don't allow the user to set these using options; they
should be specified using `CC=' and `CFLAGS=' arguments to the
top-level make.  Just choose reasonable default values for them,
and edit them into Makefile.in's default CC and CONFIG_CFLAGS
values.
(gnu_malloc, rel_alloc): Don't allow the user to set these using
options; use them whenever the configuration files say they're
possible.
Simplify the argument processing loop.  Don't accept abbreviations
for option names; these might conflict with other configuration
options in the future.
Add some support for the `--srcdir' option.  Check for the sources
in . and .. if `--srcdir' is omitted.  If the directories we will
compile in don't exist yet, create them under the current directory.
Note that the rest of the build process doesn't really support
this.
Edit only the top Makefile.  That should edit the others.  Edit
into the makefile: `version', from lisp/version.el, `configname'
and `srcdir' from the configuration arguments, `CC' and
`CONFIG_CFLAGS' as guessed from the presence or absence of GCC in
the user's path, and LOADLIBES as gleaned from the system
description files.
Simplify the report generated; it doesn't need to include any
description of paths now.
Make `config.status' exec configure instead of just calling it, so
there's no harm in overwriting `config.status'.
* Makefile.in (version, configname): New variables, used to choose
the default values for datadir and libdir.
Path variables rearranged into two clearer groups:
- In the first group are the variables specified by the GNU coding
  standards (prefix, bindir, datadir, statedir, libdir, mandir,
  manext, infodir, and srcdir).
- In the second are the variables actually used for Emacs's paths
  (lispdir, locallisppath, lisppath, buildlisppath, etcdir, lockdir,
  archlibdir), which depend on the first category.
datadir and libdir default to directories under
${prefix}/lib/emacs instead of ${prefix}/emacs, by popular
demand.
etcdir and lispdir default to subdirectories of datadir.
archlibdir defaults to libdir.
The new installation tree is a bit deeper than it used to be, so
use the new make-path program in lib-src to build them all.
Always build a new src/paths.h.tmp and then move-if-change it to
src/paths.h, to avoid unnecessary rebuilds while responding to the
right changes.
Remove all mention of arch-lib.  Run utility commands from
lib-src, and let the executables be copied into archlibdir when
Emacs is installed.
Add targets for src/Makefile, lib-src/Makefile, and
oldXMenu/Makefile, editing the values of the path variables into
them.
Let lib-src do its own installation.
(datadir): Default to putting data files under
${prefix}/lib/emacs/${version}, not /usr/local/emacs.
(emacsdir): Variable deleted; it would only be confusing to use.
(lispdir, etcdir): Default to ${datadir}/lisp.
(mkdir): Use make-path for this.
(lockdir): Do this in mkdir.
(Makefile): New target.

31 years ago* window.c (Fset_window_configuration): If we're restoring the
Jim Blandy [Sat, 12 Dec 1992 15:38:45 +0000 (15:38 +0000)]
* window.c (Fset_window_configuration): If we're restoring the
configuration of a dead frame, don't bother rebuilding its window
tree, restoring its focus redirection, or temporarily resizing it
to fit the saved window configuration.  If the frame which was
selected when the configuration was captured is now dead, don't
try to select it.

* frame.c (Fdelete_frame): Delete all the windows in the frame's
window tree, using delete_all_subwindows.
* window.c (delete_all_subwindows): Don't make this static
anymore.

31 years ago* search.c (Fskip_chars_forward, Fskip_chars_backward): Return the
Jim Blandy [Sat, 12 Dec 1992 15:37:30 +0000 (15:37 +0000)]
* search.c (Fskip_chars_forward, Fskip_chars_backward): Return the
distance traveled.
(skip_chars): Return the distance traveled, as a Lisp_Object.

31 years agoGive subprocess creation a way to find a valid current directory
Jim Blandy [Sat, 12 Dec 1992 15:36:50 +0000 (15:36 +0000)]
Give subprocess creation a way to find a valid current directory
for subprocesses when the buffer's default-directory is a handled
name.
* fileio.c (Funhandled_file_name_directory): New function.
(Qunhandled_file_name_directory): New file-name-handler operation.
(syms_of_fileio): Defsubr Sunhandled_file_name_directory, and
initialize and staticpro Qunhandled_file_name_directory.
* callproc.c (Fcall_process): Call Funhandled_file_name_directory
on the buffer's default directory.  Do it earlier in the function
so there's less to GCPRO.
* process.c (create_process): Don't check the validity of the
buffer's default directory here...
(Fstart_process): Instead, do it here; if we call
Funhandled_file_name_directory here, there's less GCPROing to do.

31 years ago* macros.c (Fend_kbd_macro): Don't use XFASTINT to check if arg is
Jim Blandy [Sat, 12 Dec 1992 15:35:41 +0000 (15:35 +0000)]
* macros.c (Fend_kbd_macro): Don't use XFASTINT to check if arg is
negative; XFASTINT only works on values known to be positive.
(Fexecute_kbd_macro): Check QUIT in the repetition loop.  If the
macro is null, no characters are actually being read, so this
matters.

31 years ago* fileio.c (find_file_handler): Rename this to
Jim Blandy [Sat, 12 Dec 1992 15:35:12 +0000 (15:35 +0000)]
* fileio.c (find_file_handler): Rename this to
Ffind_file_name_handler, and make it visible to lisp.  Add a QUIT
to the loop which scans file-name-handler-alist.  All uses
changed.
(syms_of_fileio): Mention this new function in the docstring for
Vfile_name_handler_alist.  defsubr Sfind_file_name_handler.
* lisp.h (Ffind_file_name_handler): Added extern declaration.
* dired.c: All uses of find_file_handler changed here too.

31 years ago* frame.c (Fdelete_frame): Delete all the windows in the frame's
Jim Blandy [Sat, 12 Dec 1992 15:34:44 +0000 (15:34 +0000)]
* frame.c (Fdelete_frame): Delete all the windows in the frame's
window tree, using delete_all_subwindows.
* window.c (delete_all_subwindows): Don't make this static
anymore.

31 years agoGive subprocess creation a way to find a valid current directory
Jim Blandy [Sat, 12 Dec 1992 15:32:51 +0000 (15:32 +0000)]
Give subprocess creation a way to find a valid current directory
for subprocesses when the buffer's default-directory is a handled
name.
* fileio.c (Funhandled_file_name_directory): New function.
(Qunhandled_file_name_directory): New file-name-handler operation.
(syms_of_fileio): Defsubr Sunhandled_file_name_directory, and
initialize and staticpro Qunhandled_file_name_directory.
* callproc.c (Fcall_process): Call Funhandled_file_name_directory
on the buffer's default directory.  Do it earlier in the function
so there's less to GCPRO.
* process.c (create_process): Don't check the validity of the
buffer's default directory here...
(Fstart_process): Instead, do it here; if we call
Funhandled_file_name_directory here, there's less GCPROing to do.

* fileio.c (find_file_handler): Rename this to
Ffind_file_name_handler, and make it visible to lisp.  Add a QUIT
to the loop which scans file-name-handler-alist.  All uses
changed.
(syms_of_fileio): Mention this new function in the docstring for
Vfile_name_handler_alist.  defsubr Sfind_file_name_handler.
* lisp.h (Ffind_file_name_handler): Added extern declaration.
* dired.c: All uses of find_file_handler changed here too.

* fileio.c (syms_of_fileio): Add staticpros for Qexpand_file_name,
Qdirectory_file_name, Qfile_name_directory,
Qfile_name_nondirectory, Qfile_name_as_directory.

31 years agoGive subprocess creation a way to find a valid current directory
Jim Blandy [Sat, 12 Dec 1992 15:31:32 +0000 (15:31 +0000)]
Give subprocess creation a way to find a valid current directory
for subprocesses when the buffer's default-directory is a handled
name.
* fileio.c (Funhandled_file_name_directory): New function.
(Qunhandled_file_name_directory): New file-name-handler operation.
(syms_of_fileio): Defsubr Sunhandled_file_name_directory, and
initialize and staticpro Qunhandled_file_name_directory.
* callproc.c (Fcall_process): Call Funhandled_file_name_directory
on the buffer's default directory.  Do it earlier in the function
so there's less to GCPRO.
* process.c (create_process): Don't check the validity of the
buffer's default directory here...
(Fstart_process): Instead, do it here; if we call
Funhandled_file_name_directory here, there's less GCPROing to do.

* callproc.c (Fcall_process_region): Return the value returned by
Fcall_process.

31 years ago* Makefile.in (distclean): Don't delete machine.h or system.h;
Jim Blandy [Sat, 12 Dec 1992 15:29:40 +0000 (15:29 +0000)]
* Makefile.in (distclean): Don't delete machine.h or system.h;
they don't exist anymore.

* Makefile.in (distclean): Don't delete autosave or backup files.
(extraclean): New target; like distclean, but delete autosave
and backup files too.

* Makefile.in (srcdir): New variable, not fully implemented.
(xmakefile): Turn -g and -O in CFLAGS into C_DEBUG_SWITCH and
C_OPTIMIZE_SWITCH in C_SWITCH_SITE's definition.  Delete junk.cpp
when done.
* ymakefile (archlib): Variable definition deleted.  Run programs
from ../lib-src directly, or use ${archlibdir}.
(${etc}DOC): Run make-docfile from ${libsrc}, not ${archlib}.
(${archlib}make-docfile, ${archlib}emacstool): Use ${libsrc}, not
${archlib}.

31 years ago* make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
Jim Blandy [Sat, 12 Dec 1992 15:25:18 +0000 (15:25 +0000)]
* make-docfile.c (scan_c_file): Since DEFVAR_PER_BUFFER now takes
a different number of arguments than other DEFVARs, recognize it
specially, and expect the right number of commas.

31 years ago* Makefile.in (exec_prefix): New variable.
Jim Blandy [Sat, 12 Dec 1992 15:24:50 +0000 (15:24 +0000)]
* Makefile.in (exec_prefix): New variable.
(bindir, libdir): Use it instead of `prefix'.

* Makefile.in (CFLAGS): #define HAVE_CONFIG_H, too.

* Makefile.in (libdir): Default to ${prefix}/lib.
(archlibdir): Adjusted to match.

* Makefile.in (distclean): Don't delete backup or autosave files.
(extraclean): Like realclean, but does delete backup and autosave
files.

* Makefile.in (realclean): Ignore errors from rm.

* Makefile.in (distclean): Don't bother to delete ../arch-lib;
that doesn't exist anymore.

* Makefile.in (prefix, bindir, libdir, srcdir): New variables, as
described in the top-level Makefile.
(UTILITIES): Add make-path to the list of utility programs.
(../arch-lib): Replaced by the ${archlibdir} target, which places
the executables in their permanent home.
(install, install.sysv, install.xenix): Consolidated into one
target which should work under all circumstances, modulo a few
ignored error messages.

31 years ago* vc.el (vc-do-command): Set the default directory of the *vc*
Jim Blandy [Sat, 12 Dec 1992 15:22:26 +0000 (15:22 +0000)]
* vc.el (vc-do-command): Set the default directory of the *vc*
buffer to the directory containing FILE.

31 years agoSat Dec 12 03:22:57 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy [Sat, 12 Dec 1992 15:22:04 +0000 (15:22 +0000)]
Sat Dec 12 03:22:57 1992  Jim Blandy  (jimb@totoro.cs.oberlin.edu)

* paths.el (Info-default-directory-list): The info files are
supposed to be in /usr/local/info these days.  Add it to the list
of directories to search.