1993-05-30 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Version 19.10 released. 1993-05-29 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (read_key_sequence): If we changed buffers during read_char, go to replay_sequence. * frame.c (Ficonify_frame, Fmake_frame_invisible): Select some other frame. Move minibuffer off this frame. * frame.c (Fhandle_switch_frame): Don't call Ffocus_frame. (Fredirect_frame_focus): Call Ffocus_frame here. * xterm.c (x_bitmap_icon): Don't free icon_bitmap; create it if it hasn't been created before. * xterm.c (XTread_socket): For UnmapNotify, if frame was visible, mark it now as iconified. (x_make_frame_invisible): If async_iconic, work does need to be done. Don't let this frame stay highlighted. (x_iconify_frame): Don't let this frame stay highlighted. * s/usg5-4-2.h (sigsetmask): #undef this. * sysdep.c (sys_signal): Use 0, not NULL, to set sa_flags. 1993-05-29 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * linux.h (C_OPTIMIZE_SWITCH): Set this to the empty string; configure guesses just fine. * tekXD88.h: New file, from Kaveh Ghazi. * systty.h (CDISABLE): #undef it before re-#defining it. * sysdep.c (sys_siglist): Comment out #endif trailer. * xmenu.c (TRUE, FALSE): Same. * xterm.c (dumprectangle): Same. * emacs.c: Don't include termios.h directly--let systty.h do it. 1993-05-29 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfaces.c [HPUX]: Include time.h and define __TIMEVAL__. * emacs.c (shut_down_emacs): Maybe close X connection. New arg NO_X. (Fkill_emacs): Don't close it here. Pass new arg. (fatal_error_signal): Pass new arg. * xterm.c (x_connection_closed): Pass new arg. * xdisp.c (syms_of_xdisp): Make highlight-nonselected-windows Lisp var. (display_text_line): Obey it. (display_text_line): Really check for just the selected window. * s/usg5-4-2.h: New file. * keyboard.c (menu_bar_items): Save Vinhibit_quit by hand instead of using specbind. (menu_bar_items): Call Fnreverse before restoring Vinhibit_quit. * s/hpux8.h (OLDXMENU_OPTIONS): Add quotations. * m/ibmrt.h (C_SWITCH_MACHINE): Define only if not __GNUC__. (HAVE_FTIME): Defined. (EMACS_BITMAP_FILES): Defined. * xfns.c (Fx_close_current_connection): Clear x_current_display. * xterm.c (XTring_bell): Do nothing if x_current_connection is 0. * buffer.c (reset_buffer): Clear mark_active field here. (reset_buffer_local_variables): Not here. (Fswitch_to_buffer, Fpop_to_buffer): Return the buffer. (Fmove_overlay): Fix data types in last change. * sysdep.c (gettimeofday): Don't store in *tzp if tzp is 0. * process.c (MAXDESC): Get it from FD_SETSIZE if that exists. * s/sco4.h (PTY_ITERATION, PTY_NAME_SPRINTF, PTY_TTY_NAME_SPRINTF): Redefined. (SIGNALS_VIA_CHARACTERS): Defined. [HAVE_SOCKETS] (HAVE_GETTIMEOFDAY): Defined. (MAIL_PROGRAM_NAME): Defined (two alternate definitions). * xfns.c (Fx_list_fonts): Use CHECK_LIVE_FRAME on the frame arg. 1993-05-28 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/hpux8.h (LIBX11_SYSTEM): Defined. * ymakefile: Replace config.h as dep with $(config_h). (really-oldXMenu): Use two make vars to pass values of C_SWITCH_... within doublequotes. * xfns.c (x_figure_window_size): Never set PPosition or PSize. * keymap.c (syms_of_keymap): Create global_map 256 slots long. * cmds.c (keys_of_cmds): Predefined 0240-0376 as self-insert. * xterm.c (XTread_socket, case KeyPress) [HPUX]: Recognize the extended function keys. * buffer.c (Fgenerate_new_buffer_name): New arg IGNORE. (Frename_buffer): Pass new arg. 1993-05-28 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * keyboard.c (menu_bar_items): Bind Qinhibit_quit to Qt while we call the keymap accessors; this gets called during redisplay. * ymakefile (alloca.o): Call $(CC), not cc. * s/linux.h (SIGNALS_VIA_CHARACTERS): Try this out for a bit. * buffer.c (Fmove_overlay): If the overlay is changing buffers, do a thorough redisplay. * xfns.c (x_set_frame_parameters): Use the first position/size parameter we find, not the last. * s/hpux8.h: Don't define HAVE_RANDOM. * config.h.in (UNEXEC_SRC): New macro, set by the configure script. * ymakefile (UNEXEC_SRC): Give it a default value here, and make UNEXEC depend on it. * ymakefile (lispdir): Set this in terms of ${srcdir}. 1993-05-27 Richard Stallman (rms@mole.gnu.ai.mit.edu) * dispnew.c (Fsleep_for): Don't return without waiting when SEC is 0. * emacs.c (syms_of_emacs) [CANNOT_DUMP]: Don't defsubr Sdump_emacs*. * alloc.c (mark_object): Add debugging code to check for ptr clobbered. 1993-05-27 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * Version 19.9 released. 1993-05-27 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (read_char): Correct previous change. 1993-05-27 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * systty.h: Always terminate comments, to avoid confusion. * xfns.c: Make resource manager work correctly even when Vinvocation_name has periods and asterisks in it. (Vxrdb_name): New variable. (Fx_get_resource): Use it instead of Vinvocation_name. (Fx_open_connection): Initialize it to a copy of Vinvocation_name, with the dots and stars replaced by hyphens. (syms_of_xfns): staticpro it here. * xfns.c (Fx_get_resource): Use the proper format string when the attribute has been specified. 1993-05-27 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfns.c (x_get_resource_string): New function. * ymakefile (ALL_CFLAGS): Put CFLAGS last. 1993-05-26 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * s/sol2.h: (SOLARIS_BROKEN_ACCESS): Don't define this. * s/aix3-2.h (C_SWITCH_SYSTEM): Don't define this to be "-ma" if we're using GCC - that's an XLC switch. * s/aix3-2.h (LIBS_SYSTEM): Put -LIM -Liconv here. * systty.h (HAVE_LTCHARS, HAVE_TCHARS): New macros; define them if we have those structures, but *don't* define them if we have TERMIOS, whose functions take care of those parameters; that screws up AIX. (struct emacs_tty): Test those symbols, instead of the ioctl commands. * sysdep.c (emacs_get_tty, emacs_set_tty, new_ltchars, new_tchars, init_sys_modes): Same. * config.h.in (HAVE_RENAME): Include an #undef for this, so configure will have something to edit. 1993-05-26 Richard Stallman (rms@mole.gnu.ai.mit.edu) * window.c (window_loop, case GET_LRU_WINDOW): Get frame's width properly. * xselect.c (x_get_local_selection): If no conversion function exists for the requested type, just return nil. * s/linux.h (HAVE_TCATTR): Defined. * sysdep.c [HAVE_SOCKETS]: Include socket.h, netdb.h. (get_system_name) [HAVE_SOCKETS]: Use gethostbyname. 1993-05-26 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * s/hpux8.h (LIB_X11_LIB, C_SWITCH_SYSTEM, LD_SWITCH_SYSTEM, LD_SWITCH_SYSTEM, OLDXMENU_OPTIONS): Add X11R5 directories to the search paths in these lists; they shouldn't do any harm if they don't have X11R5. * s/aix3-2.h (C_SWITCH_SYSTEM): Don't #define this if we're using GCC. 1993-05-26 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xrdb.c (magic_searchpath_decoder): Fix typos. * xdisp.c (display_text_line): Don't call compute_char_face for a non-X frame. * xfns.c (Fx_rebind_key, Fx_rebind_keys): X10 definitions deleted. (syms_of_xfns): Install them only if X11. * ralloc.c (r_alloc_sbrk): Declare already_available as long, not SIZE. * xfns.c (x_set_cursor_type): If arg not recognized, use box cursor. * s/hpux8.h (LD_SWITCH_SYSTEM) [__GNUC__]: Pass -a archive to ld. (HAVE_RANDOM): Defined. * s/hpux.h (rand, srand): Definitions deleted. * keyboard.c (Fcurrent_input_mode): Fix the call to Flist. (make_lispy_event): Fix off-by-1 error with hpos in menu bar. * s/sunos4-1-3.h: New file. * ymakefile (XOBJ) [!HAVE_X_MENU]: Add xfaces.o. * s/irix4-0.h (SIGNALS_VIA_CHARACTERS): Defined. * xterm.c (x_wm_set_size_hint): Don't set hints for max size. 1993-05-25 Richard Stallman (rms@mole.gnu.ai.mit.edu) * m/ibmrs6000.h (LIBS_MACHINE): Add -lIM and -liconv. (HAVE_GETTIMEOFDAY): Deleted. * sysdep.c (wait_for_termination): Don't use the BSD alternative for LINUX. Use the UNIPLUS alternative. * keyboard.c (read_char): If kbd_buffer_get_event returns nil, redisplay and retry. (kbd_buffer_get_event): If event is handled here, return nil. (swallow_events): New function. * process.c (wait_reading_process_input): Call that. * ralloc.c (POINTER): Always use char *. * s/sol2.h (C_SWITCH_X_SYSTEM): Deleted. (LD_SWITCH_SYSTEM): Delete the -L option, leave just -R. * m/symmetry.h (PTY_TTY_NAME_SPRINTF, PTY_NAME_SPRINTF): Use pty_name, not ptyname. * syntax.c (Fforward_comment): Arg is a Lisp_Object. Convert it to an int. * ymakefile (alloca.o): Get alloca.c and alloca.s from ${srcdir}. * floatfns.c (logb): Don't declare if hpux. * syntax.c (Fforward_comment): Always set point. * s/dgux.h, s/hpux.h, s/esix.h (HAVE_GETTIMEOFDAY): Deleted. * s/irix4-0.h (C_ALLOCA, alloca): Definitions deleted. [!NOT_C_CODE]: Include alloca.h. (NEED_SIOCTL): #undef this. * xterm.h (PIXEL_TO_CHAR_COL, PIXEL_TO_CHAR_ROW): Fix mismatch in arg names. * xfns.c (Fx_open_connection): Set xrm_option correctly. 1993-05-25 David J. MacKenzie (djm@wiki.eng.umd.edu) * xfns.c (x_figure_window_size): Make the default frame coords (0,0). 1993-05-25 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Version 19.8 released. 1993-05-25 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * xfns.c: Clear out the old face stuff. (x_face_table, n_faces, x_set_face, x_set_glyph, Fx_set_face_font, Fx_set_face, Fx_get_face): Removed. (syms_of_xfns): Remove defsubr for Fx_set_face. Arrange for font names to get fully resolved - no wildcards. * xfns.c (x_set_frame_parameters): Store the value in the frame parameter alist before we call the setter function, so the setter function can touch up the value if it chooses. (x_set_foreground_color, x_set_background_color): Call recompute_basic_faces, so their GC's will reflect the changes. (x_new_font): Add extern declaration - this returns a Lisp_Object now, the fully resolved font name. (x_set_font): Accept the fully resolved name from x_new_font, and put it in the frame's parameter alist. Call recompute_basic_faces. * xterm.c (x_new_font): Return the fully resolved font name, Qnil (if no match), or Qt (match, but unacceptable metrics). * xterm.c (x_new_font): Don't call init_frame_faces. * xterm.h: New section for declarations for xfaces.c. (init_frame_faces, free_frame_faces, intern_face, face_name_id_number, same_size_fonts, recompute_basic_faces, compute_char_face, compute_glyph_face): Declare these here. * xfaces.c (same_size_fonts): We can now remove this extern declaration. * xfns.c (face_name_id_number): Likewise. * xterm.c (intern_face): Likewise. * xterm.c (dumpglyphs): Remember that the default faces can have null fonts, too. * xfns.c (Fx_list_fonts): Remember that FACE may not have a font specified. Don't specify 30000 as the maximum limit on the number of fontns returned - 2000 is more reasonable. * xfaces.c (build_face, unload_font, free_frame_faces): Don't forget to block input while making X calls. Treat faces as structures specifying modifications to the frame's parameters, rather than things which need to specify a complete set of parameters by themselves. * xfaces.c (init_frame_faces): Don't set up the two frame display faces by querying the GC - just leave all their fields blank, and call recompute_basic_faces, letting build_face do the work of consulting the frame when necessary. (recompute_basic_faces): New function. (compute_base_faces): New function for obtaining the "identity" for compute_char_face and compute_glyph_face. (compute_char_face, compute_glyph_face): Call it, instead of copying FRAME_DEFAULT_FACE. * xfns.c (x_make_gc): No need to call init_frame_faces here. * xfaces.c (intern_frame_face): This can be static. * dispextern.h (struct face): New field - `copy', to help us with resource allocation. * xfaces.c (free_frame_faces): Do free the first two faces; don't free anything from a face that's a copy. (intern_frame_face): Mark every face we intern as a copy; its resources are actually a combination of the real faces. (Fset_face_attribute_internal): No need to check if we're trying to free one of the frame's GC's; they never enter into the picture. * casetab.c: Fix formatting, so as not to confuse etags. * xfns.c (Fx_list_fonts): New function. (face_name_id_number): Add extern declaration for this. * xfaces.c (face_name_id_number): Make this externally visible, and make the FRAME argument a FRAME_PTR, not a Lisp_Object. (compute_char_face): Call face_name_id_number properly. * xfaces.c (unload_color): Don't free the pixel for now. * xfaces.c (merge_faces): You can't tell if a font is a character-cell font or not by testing whether or not it has a per_char table. They all do. * xterm.c (x_new_font): Same deal. * xfns.c (Fx_list_fonts): Same deal. * m/iris4d.h: Dyke out the section which specifies how to get the load average. * paths.h (PATH_INFO): New path, to edited by the configuration process. * callproc.c (Vconfigure_info_directory): New variable, used internally by build process. (syms_of_callproc): DEFVAR it and initialize it. * keyboard.c (Fcurrent_input_mode): Use XFASTINT to build the last element of the return value, not XSETINT. 1993-05-24 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) Changes for OSF/1: * mem-limits.h [__osf__ && (__mips || mips)]: #include and . (get_lim_data): OSF wants a definition like BSD4_2's. * s/osf1.h: #include "bsd4-3.h", not "s-bsd4-3.h". * ymakefile (LIBX): Put LD_SWITCH_X_SITE before the libraries, so it actually has an effect. Some makes can't handle form feed characters in their makefiles. * s/usg5-3.h: Remove form feed. * s/template.h, m/template.h: Remove form feeds. * xfns.c (select_visual): Include the screen number in the template of things XGetVisualInfo must match. 1993-05-24 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/dgux.h (NO_GET_LOAD_AVG): Test _M88KBCS_TARGET, not __GNUC__. * xterm.c (XTread_socket, ConfigureNotify case): Convert from parent window, not Emacs window. (XTread_socket): Handle ReparentNotify events. * m/i860.h: New file. * keyboard.c (lispy_function_keys): Add kp-numlock. Fix kp-backspace. 1993-05-24 Thorsten Ohl (ohl@chico.harvard.edu) * m/next.h (C_SWITCH_MACHINE): Definition deleted. * lread.c: Don't #undef NULL. 1993-05-24 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * buffer.c (Fmake_overlay): Put beg and end in the right order. (Fmove_overlay): If beg and end are markers, make sure they're in the right buffer. 1993-05-24 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (modify_event_symbol): If a name_table elt is null, generate a name to use. Don't crash. * fileio.c (Fread_file_name): If input is empty, do return the default even if !insert_default_directory. * xterm.c (XTread_socket): For ConfigureNotify event, translate coordinates if send_event field is false provided the x-coord value is not large. 1993-05-24 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/irix4-0.h (NO_MATHERR): Defined. * floatfns.c [NO_MATHERR]: Undef HAVE_MATHERR. 1993-05-24 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * fileio.c (Ffile_writable_p): Pass XSTRING (foo)->data to ro_fsys, not XSTRING (foo). * xterm.c (x_new_font): Reject fonts with varying spacing. We don't support them yet. * xfns.c (x_set_font): Report the error message properly. * xfns.c (Fx_parse_geometry): No need to call check_x here; it doesn't interact with the server at all, and we need it in order to create our first frame. 1993-05-24 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/linux.h (HAVE_SETSID): Defined. (HAVE_SOCKETS): Defined. * process.c (create_process): Ignore retval from TIOCSTTY. (sys_siglist) [LINUX]: Don't even declare it. 1993-05-24 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * syssignal.h (sys_signal): Declare the second argument to have type signal_handler_t. We're told this is necessary for Linux. 1993-05-24 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/dgux.h (NO_GET_LOAD_AVG): Define, if __GNUC__. 1993-05-23 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * s/hpux8.h (NO_SIOCTL_H): Defined. 1993-05-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/linux.h (HAVE_DUP2, HAVE_ALLOCA_H): Deleted. 1993-05-23 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * syssignal.h: Don't #include * alloc.c: #include , but before "config.h". 1993-05-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfaces.c (Fset_face_attribute_internal): Don't call unload_font for the frame's own font. * xfns.c (check_x): New function. Call it in almost every Lisp function in this file. (x_set_menu_bar_lines_1): Pass both args in recursive call. 1993-05-23 Paul Eggert (eggert@twinsun.com) * editfns.c (Fcurrent_time_zone): Make `am' an int, not long. 1993-05-23 Jim Blandy (jimb@geech.gnu.ai.mit.edu) Changes for SGI from Matthew J Brown . * m/iris4d.h, m/iris5d.h: Don't use the --cckr CC switch if we're using GCC. * m/iris4d.h (NEED_SIOCTL): Move this to... * s/irix3-3.h (NEED_SIOCTL): ... here; apparently it's not necessary in irix4-0.h. * s/irix4-0.h: Remove declaration of getpty; apparently Irix 4.0 already declares this elsewhere. (PTY_TTY_NAME_SPRINTF): #undef this before re-#defining it. * m/ibmps2-aix.h, m/pfa50.h, s/hpux.h, s/isc2-2.h, s/linux.h, s/sco4.h, s/usg5-4.h: Remove HAVE_RENAME; configure guesses that now. * config.h.in (LD_SWITCH_X_SITE, C_SWITCH_X_SITE): Change the #defines to #undef's, so ../configure knows it should tweak them. * xterm.c (x_scroll_bar_report_motion): Set *TIME whether or not the mouse is over a scroll bar. * xfaces.c (Fset_face_attribute_internal): Don't free the frame's normal_gc or reverse_gc. * keyboard.c (make_lispy_movement): Deal properly with mouse motion outside of all windows. * lisp.h (GLYPH_FACE): Remember that the face portion of a glyph can be 24 bits, not just eight. 1993-05-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xterm.c: Move signal.h and stdio.h before config.h. * editfns.c (Fcurrent_time_zone): Assign gmt, instead of init. 1993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * Version 19.7 released. * Makefile.in (SUBMAKEFLAGS): Add CFLAGS to the list. * puresize.h [not HAVE_X_WINDOWS] (PURESIZE): Make this 185k, not 196k. We're actually using ~180k. * editfns.c: #include , to get time_t for Eggert's changes. 1993-05-22 Richard Stallman (rms@mole.gnu.ai.mit.edu) * ymakefile (FRAME_SUPPORT): Add mouse.elc, select.elc, scroll-bar.elc. * xdisp.c (display_text_line): Highlight in any frame's sel window. * keyboard.c (modifier_names): Update to match *_modifier in termhooks. 1993-05-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * xterm.c (x_scroll_bar_handle_click): Never grab the scroll bar; that feature requires more support to work correctly. * keyboard.c (make_ctrl_char): New function. (read_char): Call it. (kbd_buffer_store_event): Call it to see if the new character is the quit or stop character. (make_lispy_event): Call it. 1993-05-21 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfns.c (x_window_to_frame): Use XGCTYPE. 1993-05-21 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * process.c (Fopen_network_stream): Deal with older systems, which only have the h_addr field in their struct hostent. * systty.h [SYSV_PTYS]: #include . Francesco Potorti` says it's necessary on his machine, and it should be harmless. 1993-05-21 Richard Stallman (rms@mole.gnu.ai.mit.edu) * sysdep.c (wait_for_termination): Copy code from 18.59 (but sans BSD4_1 alternatives). 1993-05-21 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * ymakefile (alloca.o): #define malloc and free to be xmalloc and xfree on the command line of this compilation. * s/sco4.h: (TIME_WITH_SYS_TIME): This is no longer needed. * s/linux.h: Remove copyright notices by Michael K. Johnson and Rik Faith. They have both sent in papers now which make their changes public domain. * sysdep.c (sys_suspend): Set synch_process_alive, so that wait_for_termination has something to wait for. 1993-05-21 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xdisp.c (display_text_line): Highlight only in selected window. * xfns.c (syms_of_xfns): Don't make Lisp vars x-mode-pointer-shape and x-nontext-pointer-shape. 1993-05-20 Ian Lance Taylor (ian@cygnus.com) * s/sco4.h (SCO): Don't define (no longer needed). (HAVE_SYS_TIME_H): Don't define (set by configure). (TIME_WITH_SYS_TIME): Define. 1993-05-20 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * dispnew.c (preserve_other_columns): Remember to multiply the size argument to bcopy by the size of a glyph. 1993-05-20 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (read_key_sequence): Reexamine this_command after pre-command-hook runs. * xterm.c (x_find_modifier_meanings): If some keys are meta and alt, make them just meta, not alt. 1993-05-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) Some time-handling patches from Paul Eggert: * editfns.c (Fcurrent_time_zone): Take an optional argument specifying what (absolute) time should be used to determine the current time zone. Yield just offset and name of time zone, including DST correction. Yield time zone offset in seconds, not minutes. (lisp_time_argument, difftm): New functions. (Fcurrent_time_string): Use lisp_time_argument. * systime.h (EMACS_CURRENT_TIME_ZONE, EMACS_GET_TZ_OFFSET, EMACS_GET_TZ_NAMES): Remove. * config.h.in: Add HAVE_TM_ZONE. Some more changes from Michael K. Johnson for Linux. * s/template.h: Mention that you should #define HAVE_TERMIO or HAVE_TERMIOS, but not both, and that HAVE_TERMIOS is preferred. * systty.h (EMACS_SET_TTY_PGRP): Don't assign the return value of tcsetpgrp to *pgid; it's just a status value. * config.h.in (HAVE_RANDOM): This shouldn't be defined on Linux systems using XFree386, and perhaps is inappropriate in general. * m/intel386.h: #undefine the integer size macros, since the Linux file #defines them itself. * mem-limits.h (get_lim_data): Linux has the ulimit call; if it fails, fall back on ULIMIT_BREAK_VALUE. * process.c: Linux needs the WAITTYPE, etc. definitions. * unexec.c (hdr, ohdr): Linux has the ordinary `struct exec' type; no need to use SYSV names. * s/linux.h: New file. Some changes from Michael K. Johnson for Linux. * sysdep.c (sys_siglist): Don't define this if HAVE_SYS_SIGLIST is #defined. That lets the system provide it, if it has it. * syssignal.h (sigmask): Only define this if hasn't given us a definition already. * syssignal.h (sys_sigpause): Fix argument in prototype. * sysdep.c (init_signals): The masks are called empty_mask and full_mask, not signal_empty_mask and signal_full_mask. (signal_handler_t): Moved .... * syssignal.h: ... to here. * systty.h (EMACS_SET_TTY_PGRP): Call tcsetpgrp with the correct arguments. * emacs.c (main): Don't try to establish signal handlers for SIGBUS and SIGSYS unless they're actually #defined. * systty.h [HAVE_TERMIO, __DGUX]: #include . * xdisp.c (redisplay_window): Compute the scrollbar start and end properly. 1993-05-19 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (Fcurrent_input_mode): Return META as 3-way flag. 1993-05-19 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * fileio.c (Ffind_file_name_handler): Check that FILENAME is a string. * process.c (wait_reading_process_input): Undo change of April 29th, since that re-introduces the race condition the comments are warning about. Call clear_waiting_for_input before calling status_notify, though. * process.c (wait_reading_process_input): Don't forget to call clear_waiting_for_input when we exit the loop because process input has arrived. Changes for Silicon Graphics Iris 5D. * unexelfsgi.c: New file; like unexelf.c, but tolerates program segments above BSS. * m/iris5d.h: New file. * s/irix5-0.h: New file. * process.c [__sgi] (allocate_pty): Give up immediately if pty is inaccessible. 1993-05-19 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (follow_key): Check char in range before UPPERCASEP. 1993-05-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfns.c (x_set_menu_bar_lines): Fix typo in last change. * keyboard.c (make_lispy_event): Controlify lower case letters too. 1993-05-18 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * xdisp.c (display_text_line): If the newline (or C-m, in selective-display) has a non-default face, apply that face to the remainder of the line, so that the fill occupies the entire line. * xterm.c (x_new_font): Tell the frame display faces about the newly chosen font. Make sure that all the display faces use fonts of the same dimensions as the default face, so as not to confuse the rest of the redisplay code. * xfaces.c (same_size_fonts): New function. (merge_faces): Only merge in a new font from the FROM face if it is the same size as the font in the TO face. * xfns.c (x_set_menu_bar_lines): Minibuffer-only frames can't have menu bars. * keyboard.c (read_key_sequence): Don't lay down an unwind_protect to restore the original buffer until we actually get a mouse click. * window.c (window-dedicated-p): Doc fix. 1993-05-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xterm.c (XTread_socket): Turn off ControlMask for XLookupString. * keyboard.c (make_lispy_event): Controlify here. 1993-05-17 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xdisp.c (redisplay_window): Make the scrollbar reflect the extent of the visible region, not the whole buffer. * xfaces.c (free_frame_faces): Don't free the resources from the first two faces. * lisp.h (malloc, realloc): Declare these to return void *, to avoid conflicts with ANSI header files. * sysdep.c (reset_sys_modes): Test the return value of EMACS_SET_TTY properly. * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Document the return values. 1993-05-16 Jim Blandy (jimb@totoro.cs.oberlin.edu) * config.h.in (STDC_HEADERS, TIME_WITH_SYS_TIME, CRAY_STACKSEG_END, STACK_DIRECTION): Add #undef clauses for these, since otherwise the autoconf tests in configure.in won't do us much good. 1993-05-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) * buffer.c (overlays_at): New arg EXTEND. (Foverlays_at, Fnext_overlay_change): Pass 1. * xfaces.c (compute_char_face): Pass 0. Try first with small overlay_vec, then use a big enough one. * lread.c (syms_of_lread): Make Vcurrent_load_list ordinary Lisp var. Set up Qcurrent_load_list. (readevalloop): Specbind Qcurrent_load_list instead of ad-hoc saving. (build_load_history): Do nothing when loading pure files. * xterm.c (dumpglyphs): Create a temporary merged gc when cursor falls on char with non-default face. * xterm.h (x_display): New field cursor_foreground_pixel. * xfns.c (x_set_cursor_color): Set cursor_foreground_pixel. * casefiddle.c (casify_region): Remove mistaken arg to record_change. 1993-05-15 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * xfaces.c (Fset_face_attribute_internal): Jolt redisplay, so it knows something has changed. * xfaces.c (unload_color): Don't try to unload the standard black or white pixel. More changes from David Mackenzie. * ymakefile (emacs): No need to edit srcdir into a lisp file and then load it; we can just take advantage of the PATH_DUMPLOADSEARCH. (crt0.o): Remember that crt0.c is in ${srcdir}. Install David Mackenzie's patches to make ${srcdir} work. * Makefile.in (srcdir, VPATH): Get this value from the top-level Makefile. (xmakefile): Use ${srcdir} to find the files from which we produce xmakefile. Edit the values for srcdir and VPATH into xmakefile. * ymakefile (srcdir, VPATH): New definitions for the Makefile to edit. (ALL_CFLAGS): Remove `-Is' and `-Im'; add `-I${srcdir}', and `-I.'. (emacs): Adjust dumping commands to deal with a separate source directory. (${etc}DOC): Pass `-d ${srcdir}' to make-docfile, to tell it where to find the source files. (prefix-args): Find the source code in ${srcdir}. * process.c (wait_reading_process_input): If we're running Solaris, it's not necessary to check if we should redeliver SIGIO, according to David Mackenzie. * s/sol2.h: #include "usg5-4.h", and #define const. * systime.h: Borrow CPP sequence from getdate.y to include the proper combination of and . 1993-05-15 Richard Stallman (rms@mole.gnu.ai.mit.edu) * window.h (struct window): New slot region_showing. * xdisp.c (mark_window_display_accurate): Set region_showing fields. (redisplay_window): Update region_showing field. (display_text_line): Set region_showing to t if will show one. * xselect.c (Fx_selection_exists_p): Handle nil, t as SELECTION arg. Don't die if SELECTION is not recognized. * dispnew.c (direct_output_forward_char): Just give up if region is being highlighted. * xdisp.c (redisplay, redisplay_window): Don't use the cursor-motion special-case code if the region is or was highlighted. * xfaces.c (compute_char_face): New args REGION_BEG, REGION_END. Don't sort if noverlays is 0 or 1. * dispnew.c (direct_output_for_insert): Pass those args. * xdisp.c (display_text_line): Pass those args, describing the region if the mark is transient and active. 1993-05-14 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * buffer.c (Fmove_overlay): If the overlay is in no buffer and the BUFFER argument has been omitted, put it in the current buffer, for symmetry with move-marker. * buffer.c (Fdelete_overlay): Make the overlay's markers point nowhere, not at 1. Do this after calling redisplay_region, so that code knows what section has changed. 1993-05-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xdisp.c (display_menu_bar): Update FRAME_MENU_BAR_ITEMS here. * keyboard.c (command_loop_1): Don't do it here. * keymap.c (access_keymap): Handle any length vector. (store_in_keymap): Likewise. (Fcopy_keymap): Likewise. 1993-05-14 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * buffer.c (Foverlay_start, Foverlay_end, Foverlay_buffer, Foverlay_properties): Functions moved here from subr.el. 1993-05-13 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xfaces.c (compute_char_face): When merging the overlays, traverse sortvec, not overlay_vec; the latter isn't the one we sorted. * xterm.c (dumpglyphs): Give the cursor higher priority than the face specified by the glyph under it. * xterm.c (dumpglyphs): Move the underline up a row. I dislike the way X addresses pixels. Quickdraw is much nicer. * xfaces.c (intern_face): If the face has a GC, but it's not the default or modeline face, abort. Nothing but those two faces should have a GC *and* be passed to intern_face. (compute_char_face, compute_glyph_face): After copying the frame's default face into face, to use as a base case for calculation, set the `gc' member to zero; that way we don't have things lying around that look like display faces but aren't. * xfaces.c (intern_frame_face): When copying the new face into the frame's face array, remember that the number of bytes to copy is sizeof (*new_face), not sizeof (new_face). * xfaces.c (compute_char_face): Assume that W is displaying the current buffer. Abort if it isn't. * lisp.h (Lisp_Overlay): New tag. (OVERLAYP): New predicate. (CHECK_OVERLAY): New type-checker. (Qoverlayp): New extern declaration. * buffer.c (Foverlayp): New function. (Qoverlayp): New atom. (overlays_at, recenter_overlay_lists): Abort if we encounter an invalid overlay. (syms_of_buffer): defsubr Soverlayp; initialize Qoverlayp. (Fdelete_overlay): Set the overlay's markers to point nowhere. Use CHECK_OVERLAY instead of signalling a special error. (Fmove_overlay, Foverlay_put): Use CHECK_OVERLAY instead of signalling a special error. (Foverlay_get): Use CHECK_OVERLAY. * fns.c (internal_equal): Define this for overlays. * buffer.h (OVERLAY_VALID): Define in terms of OVERLAYP. * print.c (print): Give overlays their own print syntax. * alloc.c (mark_object): Treat overlays like conses. * lisp.h (FLOATP): Define this appropriately when LISP_FLOAT_TYPE is not defined. * buffer.c (Foverlay_get): Return Qnil if the requested property is missing from the property list. The text property routines can now modify buffers other than the current one. * insdel.c (modify_region): New argument BUFFER. Select that buffer while we prepare for the modification, and switch back when we're done. * textprop.c (add_properties, remove_properties): Pass the buffer being modified as the first argument to modify_region. * editfns.c (Fsubst_char_in_region, Ftranslate_region): Pass the current_buffer as the first argument to modify_region. * casefiddle.c (casify_region): Same. * dispnew.c (direct_output_for_insert): Compute the face of the character we're inserting properly. * xterm.c (dumpglyphs): Pass the proper arguments to intern_face. * xterm.c (dumpglyphs): Don't increment left twice. * intervals.c (set_point): Check for point out of bounds before checking for an empty interval tree. * cmds.c (Fforward_char): Check proposed new position, and then set point, instead of setting point to a potentially invalid position. * lread.c, data.c: If STDC_HEADERS is #defined, include to get the extern declarations for atof. That's where it is in POSIX. 1993-05-12 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * ymakefile (xfaces.o): Add window.h to the dependencies. * xfaces.c (intern_frame_face): Exchange order of arguments, to make callers correct. * xfaces.c (compute_char_face): Notice the next property change location correctly. * xfaces.c (face_name_id_number): Return 0 (the default face) if the name is undefined. * xfaces.c (Fset_face_attribute_internal): Do nothing unless FRAME is an X frame. * xdisp.c (copy_rope, copy_part_of_rope): Add face argument. (display_text_line): Initialize current_face to zero. Apply it to characters as we write them to the display matrix. (display_string): Pass the new argument to copy_rope. * xdisp.c (display_text_line): Handle the locations of face changes properly. * textprop.c (Fnext_single_property_change, Fprevious_single_property_change): Pass arguments to textget in the right order. * ymakefile (xfns.o): Remove duplication of buffer.h in dependencies. * ymakefile ($(OLDXMENU)): Remove extraneous call to `rm'. 1993-05-12 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keymap.c (Faccessible_keymaps): Use whatever size the vector has. (Fwhere_is_internal): Likewise. (describe_vector): Likewise. (current_minor_maps): Call Findirect_function, so symbols can be used in place of actual maps. * xdisp.c (display_text_line): Use break; to exit loop at eol. Duplicate the short MAKE_GLYPH loop after the main loop. If no display table, do obey selective_display_ellipses. (copy_part_of_rope): Arg FROM is now Lisp_Object *. * xfaces.c: Do include window.h. (compute_char_face): Supply third arg of Fget_text_property. * keyboard.c (make_lispy_event): Don't set shift modifier for C-^. * callproc.c (child_setup): Omit duplicates from new env array. 1993-05-10 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * fileio.c (ro_fsys) [SOLARIS_BROKEN_ACCESS]: Check for the filesystem being ro, since Solaris 2.1 doesn't. (file-writable-p): Call ro_fsys. * s/sol2.h (SOLARIS_BROKEN_ACCESS): Define this. * systime.h: Use the strategy from getdate.y to include the proper combination of and . * xfns.c (Fx_create_frame): Use an XLFD name for the default font, instead of "9x15" or whatever it was. * xdisp.c (display_text_line): Make face-handling code conditional on HAVE_X_WINDOWS macro. Perhaps this isn't the best approach, but it'll do for now. * xdisp.c (display_text_line): We can't use the FRAME_DEFAULT_FACE macro here; that's x-specific. Just don't pass the second argument. * xfaces.c (compute_glyph_face): Remove the BASIC_FACE argument; use F's default face. 1993-05-09 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xfaces.c (Fmake_face_internal): Do nothing for non-X frames. * dispextern.h (struct face): Add cached_index member. * xfaces.c (get_cached_face): Use it to avoid unnecessary searches of face_vector. * xfaces.c (intern_face): Renamed from get_display_face. * xfns.c (x_make_gc): After building the GC's for the frame, call init_frame_faces to set up the first two faces. * xfaces.c (init_frame_faces): Don't just try to copy the default and mode line faces from some other random frame; instead, consult the normal_gc and reverse_gc members of the frame, and build the faces based on their parameters. Adjust the face computation functions to return frame face ID's, not pointers to display faces; since we call these functions during display construction, we don't want the display faces yet. * xfaces.c (intern_frame_face): New function. (compute_char_face, compute_glyph_face): Apply intern_frame_face to the computed face, and return the frame face's ID, instead of calling intern_face and returning a pointer to a display frame. * xfaces.c: Describe the facial data structures. It took me a while to figure them out; perhaps this will save someone else the trouble. Arrange to tell redisplay about changes in overlays. * xdisp.c (redisplay_region): New function. * buffer.c (Fmove_overlay): Call redisplay_region on the areas the overlay has enclosed or left. (Fdelete_overlay): Call redisplay_region on the area the overlay used to occupy. (Foverlay_put): Call redisplay_region on the area the overlay now occupies; we may have put a face property on it. * buffer.c (Fmove_overlay): Doc fix. * xdisp.c (redisplay): If we're doing a thorough redisplay (all windows on all frames involved), go ahead and flush the GC cache - call clear_face_vector. * xdisp.c (display_text_line): Apply faces to characters according to overlays and text properties; use compute_char_face and compute_glyph_face to figure out what face to use, and where a new face starts. * xterm.c (dumpglyphs): Use the upper bits of the glyphs to decide which frame face to use. Call GLYPH_FOLLOW_ALIASES to make sure we're implementing the glyph table properly. If we're not using the default or mode line face, call intern_face to find a display face for the frame face selected by the glyph code. Implement underlining. Remove the `font' argument; we have to derive this from the frame and face anyway. Change all callers. * disptab.h (GLYPH_FOLLOW_ALIASES): New macro. * xterm.c (x_destroy_window): Call free_frame_faces. The GNU coding standards specify that CFLAGS should be left for users to set. * ymakefile (ALL_CFLAGS): Set this to the long string of compilation switches, not CFLAGS. Changed all uses. (CFLAGS): Make this default to just -g. (.c.o): Define new default rule, to make sure that the right flags get to the compilations. 1993-05-09 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (read_char): Exit kbd macro if Vexecuting_macro is t. * pwd.h: File deleted. 1993-05-08 Jim Blandy (jimb@totoro.cs.oberlin.edu) * s/sunos4shr.h: Apply changes from David J. Mackenzie; this isn't used by any configuration right now, but he's trying to make it work. #include "sunos4-1.h" instead of "bsd4-2.h". (O_NDELAY): Don't define this. (SYSTEM_MALLOC): Don't define this, either. (LD_SWITCH_SYSTEM): Remove the definition for this. * Makefile.in (DEFS): Remove this; we have configure build a config.h file directly, instead of having lots of -D flags. * Makefile.in (CFLAGS): Don't make this carry DEFS from the configure script; the coding standards say that CFLAGS should be left for the user to tweak. 1993-05-08 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (do_mouse_tracking): Now static. * xmenu.c (Fx_popup_menu): Add a vector of prefix keys for the panes. (keymap_panes): Allocate that vector. (single_keymap_panes): Fill in that vector. (xmenu_show): Return a list of events, not just one event. * keyboard.c (read_char_menu_prompt): Expect Fx_popup_menu to return a list of events. Don't lose any of them. * xfns.c (Fx_get_mouse_event, Fx_mouse_events): Code deleted. * window.c (Vmouse_event): Var deleted. (syms_of_window): Don't make it a Lisp var. * keyboard.c (read_avail_input, Fset_input_mode): Make meta_key a three-value variable to support 8-bit input. 1993-05-07 Jim Blandy (jimb@totoro.cs.oberlin.edu) * ymakefile [__GNUC__ && __GNUC__ > 1] (LIB_GCC): Set this even if LINKER is #defined. * ymakefile ($(OLDXMENU)): Remove the link before we re-create it; not all versions of ln have the `-f' flag. Use the LN_S variable, inherited from src/Makefile. * Makefile.in (LN_S): New variable, edited by top Makefile. (SUBMAKEFILE): New variable, containing all flags to pass to recursive makes. * config.h.in: Adjust this for use by autoconf's AC_CONFIG_HEADER, instead of AC_OUTPUT. * xfaces.c (get_display_face): Use face_eql instead of writing it out. 1993-05-06 Jim Blandy (jimb@totoro.cs.oberlin.edu) * keymap.c (Fwhere_is_internal): If FIRSTONLY is non-nil, avoid returning a non-ascii key sequence unless FIRSTONLY is the symbol `non-ascii'. * config.h.in: Remove mention of GLYPH datatype; that shouldn't be a user option. * lisp.h (GLYPH, MAKE_GLYPH, GLYPH_CHAR, GLYPH_FACE): New macros. 1993-05-06 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfns.c (x_get_arg): Call Fintern, not intern. * systime.h [SCO]: Include time.h. * s/sco4.h: New file. * ymakefile (LIBXMENU): Delete -loldX. * emacs.c (main): Handle -display like -d. 1993-05-05 Jim Blandy (jimb@totoro.cs.oberlin.edu) * s/template.h: Explain the relative significance of the SIGIO and INTERRUPT_INPUT macros. * ymakefile (buffer.o, insdel.o): Note that these files also depend on blockinput.h. * blockinput.h (UNBLOCK_INPUT): We cannot assume that SIGIO is defined everywhere this file is #included; merge the two definitions for defined (SIGIO) and ! defined (SIGIO) into one, which calls reinvoke_input_signal if interrupt_input_pending is set. * keyboard.c (reinvoke_input_signal): New function. 1993-05-04 Richard Stallman (rms@mole.gnu.ai.mit.edu) * window.c (Fdisplay_buffer): Add space to prompt. 1993-05-04 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * keyboard.c (syms_of_keyboard): Doc fix for extra-keyboard-modifiers. * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER, CHAR_SHIFT, CHAR_CTL, CHAR_META): Shift these all up one bit, back to where they were. 1993-05-02 Jim Blandy (jimb@totoro.cs.oberlin.edu) * keymap.c (Fdefine_prefix_command): Doc fix. * ymakefile (C_DEBUG_SWITCH): Undo April 10 change. 1993-05-01 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (Fsuspend_emacs): Doc fix. 1993-04-30 Jim Blandy (jimb@totoro.cs.oberlin.edu) * data.c (Ffset): Refuse to set the function value of t or nil. 1993-04-29 Jim Blandy (jimb@totoro.cs.oberlin.edu) Implement extra_keyboard_modifiers properly. * keyboard.c (syms_of_keyboard): Doc fix for extra-keyboard-modifiers; use the same modifier bits as we do for characters. (read_char): Apply all the modifiers in extra_keyboard_modifiers to the input characters, so you can get hyper, super, and the rest of the gang. * xterm.c (x_emacs_to_x_modifiers): New function. (x_convert_modifiers): Renamed to x_x_to_emacs_modifiers, for consistency. Callers changed. (XTread_socket): Apply x_emacs_to_x_modifiers to extra_keyboard_modifiers before setting the state member of the event; this will get all the modifiers on ASCII characters. * xterm.c (x_text_icon): Don't call XSetIconName; it should be unnecessary, and perhaps it's killing the icon pixmap. * lisp.h (CHAR_ALT, CHAR_SUPER, CHAR_HYPER): New constants, in case we need them. * termhooks.h (alt_modifier, super_modifier, hyper_modifier, shift_modifier, ctrl_modifier, meta_modifier): Define these in terms of the CHAR_mumble macros, to avoid having the same thing defined in two places. * keyboard.c (kbd_buffer_get_event): Don't generate switch-frame events if they'd only switch to the frame already selected. This avoids lots of extra switch-frame events when using a separate minibuffer. 1993-04-29 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (Fthis_command_keys): Doc fix. * process.c (wait_reading_process_input): Move the status_notify call before the set_waiting_for_input call. * fileio.c (Fexpand_file_name): Undo last change--too risky for now. * data.c (Fdefine_function): New function (same code as Fdefalias). 1993-04-28 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * eval.c (do_autoload): Fixed the bug in the autoload-saving code. 1993-04-28 Jim Blandy (jimb@totoro.cs.oberlin.edu) * keyboard.c (Fcurrent_input_mode): New function. 1993-04-27 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * eval.c (un_autoload): Don't try to save old autoload forms when we load something in. Something about the code now conditioned out by UNLOAD was screwing up ordinary autoloads, notably of picture.el. When I figure out what, I'll fix and re-enable this code. 1993-04-27 Jim Blandy (jimb@totoro.cs.oberlin.edu) * buffer.c (syms_of_buffer): Doc fix for buffer-display-table. * systime.h: Doc fix. (EMACS_SET_USECS): Remember that a `usec' is a microsecond, not a millisecond. What's three orders of magnitude between friends? * dispnew.c (Fsit_for, Fsleep_for): Remember to multiply the `milliseconds' argument by 1000 to get microseconds. 1993-04-26 Roland McGrath (roland@geech.gnu.ai.mit.edu) * fileio.c (Fexpand_file_name): Don't remove trailing / from NEWDIR if just "/". 1993-04-26 Jim Blandy (jimb@totoro.cs.oberlin.edu) * m/ibmps2-aix.h, m/ibmrs6000.h, m/ibmrt-aix.h, m/mips.h, m/sps7.h, s/hpux.h, s/usg5-4.h (HAVE_DUP2): Removed; derived by configure script. * s/hpux.h, s/irix3-3.h, s/aix3-1.h (HAVE_GETHOSTNAME): Removed; derived by configure script. Arrange for Fy_or_n_p to put off switch-frame events. * lread.c (read_filtered_char): New function, which contains the code which used to be in Fread_char, Fread_event, and Fread_char_exclusive; there was a lot of common code. (Fread_char, Fread_event, Fread_char_exclusive): Rewrite in terms of read_filtered_char. * lisp.h (read_filtered_char): Declare this extern here. * fns.c (Fy_or_n_p): Call read_filtered_char, arranging to delay switch-frame events. * keyboard.c (read_key_sequence): Let the `modifiers' variable in the code which deals with KEY being unbound be an int, not a Lisp_Object. * config.h.in (getenv): Don't test THIS_IS_YMAKEFILE to see if we should exclude the getenv declaration; instead, test NOT_C_CODE. Per suggestion from Francesco Potorti`. * ymakefile (NOT_C_CODE): Define this; it's true, and useful. * dispnew.c (Fsleep_for, Fsit_for): Allow SECONDS to be a floating point value. 1993-04-26 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * sysdep.c (read_pending_input): Fix the garbaged-modifiers bug under System Vs previous to r4. 1993-04-25 Jim Blandy (jimb@totoro.cs.oberlin.edu) * systty.h (EMACS_GET_TTY, EMACS_SET_TTY): Move these into functions in sysdep.c. * sysdep.c (emacs_get_tty, emacs_set_tty): Here they are. * sysdep.c (emacs_set_tty): Call tcsetattr over and over again until it does all of what we ask it to, or returns an error. * search.c (Freplace_match): Arrange for markers sitting at the beginning or end of the original text to float to the corresponding position in the replacement text. 1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * window.c (Fset-window-buffer): Set horizontal-scrolling on a window to zero when we connect it to a new buffer. * buffer.c: Doc fix. 1993-04-24 Jim Blandy (jimb@totoro.cs.oberlin.edu) Make the modifier manipulation functions more robust. The old way caused a bug once, and probably would again. * termhooks.h (alt_modifier, super_modifier, hyper_modifier, shift_modifier, ctrl_modifier, meta_modifier): Shift these all down one bit in value, to avoid sign extension problems. * lisp.h (CHAR_META, CHAR_CTL, CHAR_SHIFT): Fix these definitions too. * keyboard.c (lispy_modifier_list): Ignore modifier bits beyond what our table of modifier names can handle. (apply_modifiers): Don't abort if you see extra modifier bits, just remove them. 1993-04-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * data.c (Fdefine_function): Changed name back to Fdefalias, so we get things in a known-good state. * buffer.h (BUF_NARROWED, NARROWED): New macros to test whether a region restriction has narrowed the buffer. 1993-04-17 Richard Stallman (rms@mole.gnu.ai.mit.edu) * systime.h: Comment fixes. * data.c (Fdefine_function): New function. * lisp.h (LOADHIST_ATTACH): New macro. (Vcurrent_load_list, Vload_history): Vars declared. * eval.c: (defun, defmacro, defvar, defconst): Attach symbol argument to the list of globals for the input source. (do_autoload): Save the old autoloads, in case we ever unload. * fns.c (provide, require): Put appropriately-marked conses in the current-globals list. * lread.c (readevalloop): New argument is the source file name (or nil if none). All calls changed. Do the two-step necessary to call build_load_history with the correct current-globals list for the current recursion. (build_load_history): New function. (eval_region, eval_buffer): Call readevalloop with new arg. (load_history): New variable. 1993-04-16 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * lread.c (readevalloop): New argument is the source file name (or nil if none). All calls changed. Do the two-step necessary to call build_load_history with the correct current-globals list for the current recursion. (build_load_history): New function. (Feval_region, Feval_buffer): Call readevalloop with new arg. (Vload_history): New variable. * fns.c (Fprovide, Frequire): Put appropriately-marked conses in the current-globals list. * eval.c (Fdefun, Fdefmacro, Fdefvar, Fdefconst): Attach symbol argument to the list of globals for the input source. (do_autoload): Save the old autoloads, in case we ever unload. * data.c (Fdefine_function): New function. 1993-04-16 Jim Blandy (jimb@totoro.cs.oberlin.edu) * fileio.c (Fmake_symbolic_link): If a file already exists under the link's filename, delete the file which the link would replace, not the file the link would point at. * config.h.in (volatile): Don't define this to be the empty string if some file has #defined HAVE_VOLATILE. * emacs.c (SEPCHAR): Instead of defining this to be ',' on VMS and ':' elsewhere, just have it default to ':' if not #defined, and #define it to be ',' in s/vms.h; OS/2 will need it to be ';'. * s/vms.h (SEPCHAR): #define this to be ','. * s/template.h (SEPCHAR): Mention this. 1993-04-13 Jim Blandy (jimb@totoro.cs.oberlin.edu) * s/vms.h (xfree): #define this to emacs_xfree, to avoid case conflict with XFree; on VMS, external symbols are case-insensitive. * s/usg5-4.h (HAVE_GETTIMEOFDAY): Deleted; ../configure figures that out now. Changes for Emacs 19 from Thorsten Ohl : * s/mach2.h: copied from the Emacs 18.59 distribution. Don't define NO_REMAP, define START_FILES as `pre-crt0.o' instead. Define LIB_MATH as `-lm', to override the default `-lm -lc' (there is no libc on the NeXT). * ymakefile (STARTFILES): Allow config.h to set this value even if ORDINARY_LINK is defined. * unexnext.c: Fix subdirectories for the machine dependent include files for NeXTStep 3.0; #include and instead of and . (getsectbyname): Remove prototype for this; the system #include files take care of that. (malloc_cookie): New variable. (unexec_doit): Set malloc_cookie to the result returned by malloc_freezedry. * emacs.c (main): Declare malloc_cookie to be extern, so that we can get the value set when we dumped and pass it to malloc_jumpstart. * systime.h: The NeXT has a timezone function. 1993-04-12 Jim Blandy (jimb@totoro.cs.oberlin.edu) * ymakefile ($(OLDXMENU)): Remove $(OLDXMENU) before trying to link in a new version. * lisp.h (Qrange_error, Qdomain_error, Qsingularity_error, Qoverflow_error, Qunderflow_error): Add extern to these declarations. 1993-04-12 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfaces.c: Don't include Xmu/Drawing.h. 1993-04-10 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * Makefile.in (xmakefile): Recognize the -O option with a numeric optimization level. * ymakefile (C_DEBUG_SWITCH): If we're using version 2 of GCC or higher, use -O99 instead of plain -O. 1993-04-09 Jim Blandy (jimb@totoro.cs.oberlin.edu) * keyboard.c (command_loop_1): Rebuild menu bar if update_mode_lines is set. long_to_cons and cons_to_long are generally useful things; they're needed whether or not X is defined. * xselect.c (long_to_cons, cons_to_long): Moved from here... * data.c (long_to_cons, cons_to_long): ... to here. * lisp.h (long_to_cons, cons_to_long): Add extern declaration. * xmenu.c (Qmenu_enable): Definition moved... (syms_of_xmenu): ... along with initialization ... * keyboard.c (Qmenu_enable): ... to here ... (syms_of_keyboard): ... and here. * keyboard.c (kbd_buffer_get_event): If we get a selection clear or selection request event, but we were compiled without the window-system-specific code to handle it, abort. Don't try to call a function which doesn't exist. * keyboard.c (make_lispy_event): In the code which processes mouse clicks, declare f to be a FRAME_PTR, not a struct frame *; this works when MULTI_FRAME is not #defined. * xfaces.c (sort_overlays): Define this to be static, as declared. * callproc.c (relocate_fd): Make messages string literals, not initialized arrays. * alloc.c (__malloc_hook, __realloc_hook, __free_hook): Declare these extern, not static. (!) * alloc.c (__malloc_hook, old_malloc_hook, __realloc_hook, old_realloc_hook): Declare that the functions these point to return void *, not void. Adjust for autoconf merger. * config.h.in: Add extra line to top, in case autoconf gets fixed and decides not to add Makefile-style comments to the top of the files it generates which we are forced to lop off. Indicate that the boolean macros here get their definitions via the DEFS Makefile variable. Adjust the operating system and machine #includes to use autoload's @cookies@. (RETSIGTYPE): Give this a default value. (SIGTYPE): Set this from RETSIGTYPE. (LD_SWITCH_X_SITE, C_SWITCH_X_SITE): Get values via @cookies@. * Makefile.in (DEFS): Renamed from CONFIG_CFLAGS. (xmakefile): Pass CFLAGS to ${CPP}. * buffer.c (Fmake_overlay, Fmove_overlay): New optional BUFFER arguments. (recenter_overlay_lists): New argument BUF, to use instead of the current buffer. (Foverlay_recenter): Pass the appropriate arguments to recenter_overlay_lists. * buffer.c (Fdelete_overlay): Don't assume that overlay is in the current buffer. Don't forget to declare the argument a Lisp_Object. * dispnew.c (getenv): Extern declaration deleted; this is done in config.h. * Makefile.in (tagsfiles): Remove external-lisp from this list of files; we're not distributing it, so the normal build process shouldn't depend on it. * dispnew.c (init_display): Compare the return value of getenv to zero before setting display_arg, instead of just using the pointer as a truth value. 1993-04-08 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xdisp.c (message, message1): If noninteractive and cursor_in_echo_area, don't print a newline at end of message. * fns.c (Fy_or_n_p): Echo the answer just once, at exit. * keyboard.c (echo_dash): Do nothing if echoptr is 0. * buffer.c (Fkill_all_local_variables): Store each var's current value in the buffer's alist entry, before reverting to the default value. 1993-04-07 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * keyboard.c (apply_modifiers): Fix typo in sanity check. * keyboard.c (interrupt_input_blocked, interrupt_input_pending): Remove `extern' keywords - these are the definitions. 1993-04-07 Richard Stallman (rms@mole.gnu.ai.mit.edu) * blockinput.h (UNBLOCK_INPUT): Fix typo. (interrupt_input_blocked): Make this signed int. * search.c (search_buffer): Fix typo in previous change. * insdel.c, buffer.c: Include blockinput.h. * xterm.c: Fix typo in comment delimiter. 1993-04-07 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * m/imbrs6000.h: If we're using GCC, define ORDINARY_LINK instead of defining LINKER to use cc. * s/aix3-1.h (LINKER): Don't use cc for linking command if we're using GCC. * s/aix3-2.h (SYSTEM_MALLOC): Undefine this. * xterm.c (updating_frame): Declare this extern instead of static, so it's the same variable as the updating_frame in term.c. (XTupdate_begin, XTupdate_end): Don't bother to set updating_frame; the term.c functions take care of that for us. 1993-04-05 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * s/vms.h (EXEC_SUFFIXES): Add definition for this. 1993-03-31 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * xfaces.c: Doc fixes. Put interrupt input blocking in a separate file from xterm.h. This isn't specific to X, and it allows us to avoid #including xterm.h in files that don't really have anything to do with X. * blockinput.h: New file. * xterm.h (BLOCK_INPUT, UNBLOCK_INPUT, TOTALLY_UNBLOCK_INPUT, UNBLOCK_INPUT_RESIGNAL): These are now in blockinput.h. (x_input_blocked, x_pending_input): Deleted; there are analogs in blockinput.h called interrupt_input_blocked and interrupt_input_pending. * keyboard.c (interrupt_input_blocked, interrupt_input_pending): New variables, used by the macros in blockinput.h. * xterm.c: #include blockinput.h. (x_input_blocked, x_pending_input): Deleted. (XTread_socket): Test and set interrupt_input_blocked and interrupt_input_pending instead of the old variables. * alloc.c, xfaces.c, xfns.c, xmenu.c, xselect.c, keymap.c: #include blockinput.h. * eval.c: #include blockinput.h instead of xterm.h. * keyboard.c: #include blockinput.h. (input_poll_signal): Just test interrupt_input_blocked, instead of testing HAVE_X_WINDOWS and x_input_blocked. Block the processing of interrupt input while we're manipulating the malloc heap. * alloc.c: (xfree): New function, to make it easy to free things safely. (xmalloc, xrealloc): Block X input while doing the deed. (VALIDATE_LISP_STORAGE, gc_sweep, compact_strings): Use xfree instead of free. (uninterrupt_malloc): New function, to install input-blocking hooks into the GNU malloc routines. * emacs.c [not SYSTEM_MALLOC] (main): Call uninterrupt_malloc on startup. * alloc.c: (make_interval, make_float, Fcons, Fmake_vector, Fmake_symbol, Fmake_marker, make_uninit_string, Fgarbage_collect): Use xmalloc instead of malloc; don't bother to check if out of memory here. (Fgarbage_collect): Call xrealloc instead of realloc. * buffer.c: Use xmalloc and xfree instead of malloc and free; don't bother to check if out of memory here. (Fget_buffer_create): Put BLOCK_INPUT/UNBLOCK_INPUT pair around calls to ralloc routines. * insdel.c: Same. * lisp.h (xfree): New extern declaration. * xfaces.c (xfree): Don't #define this to be free; use the definition in alloc.c. * dispnew.c, doc.c, doprnt.c, fileio.c, lread.c, term.c, xfns.c, xmenu.c, xterm.c: Use xfree instead of free. * hftctl.c: Use xfree and xmalloc instead of free and malloc. * keymap.c (current_minor_maps): BLOCK_INPUT while calling realloc and malloc. * search.c: Since the regexp routines can malloc, BLOCK_INPUT while runing them. #include blockinput.h. * sysdep.c: #include blockinput.h. Call xfree and xmalloc instead of free and malloc. BLOCK_INPUT around routines which we know will call malloc. ymakefile (keyboard.o, keymap.o, search.o, sysdep.o, xfaces.o, xfns.o, xmenu.o, xterm.o, xselect.o, alloc.o, eval.o): Note that these depend on blockinput.h. * keyboard.c (parse_modifiers, apply_modifiers): Make sure we're not trying to create modifier masks using integers which are unrepresentable as lisp values. 1993-03-30 Jim Blandy (jimb@geech.gnu.ai.mit.edu) New macros NULL_DEVICE and EXEC_SUFFIXES, to give the name of the equivalent of /dev/null, and the suffixes used by executable files. This is simple, and helps people porting Emacs to other operating systems. * process.h (NULL_DEVICE): Give this a default value. * process.c (Fstart_process): Pass EXEC_SUFFIXES to openp. (Fprocess_send_eof): Use NULL_DEVICE instead of "/dev/null". * callproc.c (Fcall_process): Pass EXEC_SUFFIXES to openp. Use NULL_DEVICE instead of "/dev/null". * s/vms.h (NULL_DEVICE): #define this. Rename int-to-string to number-to-string, since it can handle floating-point as well as integer arguments. subr.el defines the former as an alias for the latter. * data.c (Fnumber_to_string): Renamed from Fint_to_string. (wrong_type_argument): Adjust caller. (syms_of_data): Adjust defsubr. * fns.c (concat): Adjust caller. * lisp.h (Fnumber_to_string): Adjust extern declaration. * mocklisp.c (Finsert_string): Adjust caller. * process.c (status_message): Adjust caller. 1993-03-28 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * systty.h [NO_PTY_H]: Don't include pty.h. * m/delta88k.h [USG5_4]: Alternate defining of LIBS_SYSTEM, LIBX11_SYSTEM, HAVE_RANDOM, BSTRING. (NO_PTY_H): Defined. * fileio.c (Fwrite_region): Don't fail to set visit_file. * keyboard.c (command_loop_1): Clear force_start of selected_window after reading each key sequence. (read_char): Clear Vquit_flag when we return C-g for it. * fileio.c (Fexpand_file_name): Default DEFALT at beginning, before expanding it. But avoid unneeded or infinite recursive expand. 1993-03-26 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * editfns.c (Fchar_equal): Don't ignore high bits of character. * fileio.c (Fwrite_region): Set visit_file after expanding file arg. Also expand VISIT arg if specified. * frame.c (make_frame): Init face_alist field. 1993-03-25 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * xselect.c (SELECTION_QUANTUM): Don't use XMaxRequestSize on R3; access the display structure directly. 1993-03-25 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * ymakefile (xfns.o): Depend on buffer.h. * buffer.h (struct buffer): Field `fieldlist' deleted. * search.c (Freplace_match): Clean up criterion about converting case. If old text has any capitalized words, capitalize new text. * xfaces.c: New file. * ymakefile (XOBJ): Add xfaces.o. (xfaces.o): New target. * emacs.c (main): Call syms_of_xfaces. * buffer.h (OVERLAY_START, OVERLAY_END, OVERLAY_VALID): New macros. (OVERLAY_POSITION): Likewise. (searchbuf): Decl deleted--doesn't belong here. Delete include of regex.h for VMS. * dired.c (searchbuf): Declare here. * frame.h (struct frame): New field face_alist. * alloc.c (mark_object): Mark face_alist of a frame. * ymakefile (xselect.o): Depend on dispextern.h. * xterm.h (FRAME_FACES, FRAME_N_FACES, FRAME_DEFAULT_FACE) (FRAME_MODE_LINE_FACE): New macros. (struct x_display): New fields faces, n_faces. * dispextern.h (struct face): New fields pixmap_h, pixmap_w. Field `font' is now a pointer. * fns.c (Fy_or_n_p): Ensure cursor_in_echo_area = 0 when quit. 1993-03-24 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * dispnew.c (getenv): Add extern declaration. * ymakefile (really-oldXMenu): Pass C_SWITCH_SITE and C_SWITCH_SYSTEM to the inferior make as separate flags, instead of passing just C_SWITCH_SITE as CFLAGS. * keymap.c (Fkeymapp): Doc fix. * xterm.h (x_focus_frame): Add extern keyword to declaration. * xterm.c [VMS]: Don't #include and . * xfns.c [VMS]: Get the gray_bits from [.bitmaps]gray.xbm. * process.c [VMS] (DCL_PROMPT): Remove hack. (WIFSTOPPED, WIFSIGNALED, WIFEXITED, XRETCODE, WSTOPSIG, WCOREDUMP, WTERMSIG): New dummy definitions. (deactivate_process): Add missing semicolon. * dispnew.c (init_display): Get display name from environment properly on VMS as well as Unix. 1993-03-24 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * buffer.c (init_buffer_once, reset_buffer): Delete last vestige of fieldlist slot. (Fregion_fields): Finally deleted. * keymap.c (push_key_description): Ignore bits above meta_modifier. 1993-03-23 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * buffer.c (overlays_at, recenter_overlay_lists): New functions. (Fmake_overlay, Fdelete_overlay, Foverlay_get, Foverlay_put): Likewise. (Fmove_overlay, Foverlays_at, Fnext_overlay_change): Likewise. (Foverlay_lists, Foverlay_recenter): Likewise. * buffer.h (struct buffer): New fields overlay_center, overlays_before, overlays_after. 1993-03-23 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * config.h.in (HAVE_XFREE386): New flag, set by configure script. If it's set, #define LIBX11_SYSTEM and HAVE_RANDOM as appropriate for XFree386. * sysdep.c (random, srandom): Don't define these if HAVE_RANDOM is #defined. * config.h.in (C_SWITCH_X_SITE, LD_SWITCH_X_SITE): New flags. * ymakefile (C_SWITCH_X_SITE, LD_SWITCH_X_SITE): Provide default values. Include C_SWITCH_X_SITE in CFLAGS, include LD_SWITCH_X_SITE in LIBX, and pass C_SWITCH_X_SITE to the make which builds the X Menu library. 1993-03-22 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * xfns.c (Fx_parse_geometry): Renamed from Fx_geometry. (Fx_color_defined_p): Renamed from Fx_defined_color. (syms_of_xfns): Adjusted. 1993-03-22 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * indent.c (current_column, Findent_to, position_indentation): (Fmove_to_column, compute_motion): Allow tab_width up to 1000. * xdisp.c (display_string, display_text_line): Allow tab_width up to 1000. * keyboard.c (Fsuspend_emacs): Change suspend-hooks back to suspend-hook and make it a normal hook. * s/dgux.h: Decide automatically whether to use COFF or ELF. 1993-03-21 Richard Stallman (rms@mole.gnu.ai.mit.edu) * fns.c (Fy_or_n_p): Handle `recenter' response type. * s/dgux.h (HAVE_TERMIO, SIGNALS_VIA_CHARACTERS): Defined. 1993-03-21 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * frame.c (Fhandle_switch_frame): Renamed from Fselect_frame. Doc changed in anticipation of new purpose. (Fselect_frame): Just call Fhandle_switch_frame for now. 1993-03-21 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xdisp.c (decode_mode_spec): Handle `%l'. (display_count_lines): New function. (redisplay_window): Update base_line_number and base_line_pos fields. Always update mode line if it's an integer. * window.h (struct window): New fields base_line_number and base_line_pos. * window.c (Fselect_window): Use Fhandle_switch_frame. (Fset_window_configuration): Likewise. 1993-03-20 Jim Blandy (jimb@geech.gnu.ai.mit.edu) Use the `visiblity' parameter to determine the initial state of the frame, instead of the `iconic-startup' and `suppress-initial-map' parameters. * xfns.c (x_icon): Test the Qvisibility parameter against Qicon, instead of the Qiconic_startup against Qt. (x_create_frame): Test Qvisibility against Qnil and Qicon, instead of testing Qsuppress_initial_map and Qvisibility. (Qicon): New symbol. (Qiconic_startup, Qsuppress_initial_map): Removed. (syms_of_xfns): Adjusted appropriately. * xfns.c (x_set_visibility): Instead of interpreting only Qt as `make the frame visible' and everything else as `iconify the frame', interpret Qicon as `iconify the frame' and everything else as `make the frame visible.' * xfns.c (x_get_arg): When the type of the resource is `symbol', return `true' and `on' as Qt, and `false' and `off' as Qnil. 1993-03-20 Richard Stallman (rms@mole.gnu.ai.mit.edu) * emacs.c (init_cmdargs): Fix simple bug in previous change. 1993-03-20 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * dispnew.c (Fsleep_for): Make this take two arguments SECONDS and MILLISECONDS, which add, rather than a second argument which says "treat the first argument as milliseconds." (Fsit_for): Same thing. (Fsleep_for_milliseconds): Deleted; this can be done with Fsleep_for. * process.c (wait_reading_process_input): Doc fix. * systime.h (EMACS_HAS_USECS): #define this if HAVE_TIMEVAL is #defined. * dispnew.c (sit_for): Doc fix. * sysdep.c (reset_sys_modes): Fix usage of EMACS_SET_TTY. * callproc.c (child_setup): Make sure that in, out, and err are not less than three. (relocate_fd): New function. * xterm.c (x_term_init): If the X connection is already in file descriptor zero, don't dup it and close the old one. * s/hpux8.h, s/sunos4-1.h (OLDXMENU_OPTIONS): Define this, as in Emacs 18. * xfns.c (Fx_open_connection): If we have X11R5, use XrmSetDatabase to set the display's database. In older versions, just store the value into x_current_display->db. * xterm.h (HAVE_X11R5): Define this where appropriate. * frame.c (Fraise_frame, Flower_frame): Renamed from Fframe_to_front and Fframe_to_back. (syms_of_frame): Adjusted appropriately. * fileio.c (HAVE_FSYNC): Define, if appropriate. (Fwrite_region): Use HAVE_FSYNC. * s-aix3-2.h (HAVE_FSYNC): Define. * emacs.c (Finvocation_name): New function. (Vinvocation_name): New variable. (init_cmdargs): Set it. (syms_of_emacs): defsubr Finvocation_name, staticpro and initialize Vinvocation_name. * lisp.h (Vinvocation_name): New extern declaration. * xterm.c (invocation_name): Variable deleted; use Vinvocation_name now. (x_text_icon, x_term_init): Use Vinvocation_name now instead of invocation_name. (x_term_init): Don't initialize invocation_name. (syms_of_xterm): Don't initialize or staticpro invocation_name. * xfns.c (invocation_name): Remove extern declaration for this. [HAVE_X11] (Fx_get_resource): Use Vinvocation_name now instead of invocation_name. [not HAVE_X11] (Fx_get_default): Same. 1993-03-20 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * xfns.c (Fx_display_color_p): Renamed from Fx_color_display_p. (syms_of_xfns): Use new name in defsubr. 1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) * Makefile.in (unlock, relock): New productions to assist with version control. 1993-03-19 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * fileio.c (Fvisited_file_modtime): New function. (Fset_visited_file_modtime): Accept an argument specifying time value. If arg is nil, really use the filename handler. * xselect.c (cons_to_long, long_to_cons): No longer static. 1993-03-18 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * frame.h (FOR_EACH_FRAME): Change the definition so that FRAME_VAR is a lisp object. * dispnew.c (WINDOW_CHANGE_SIGNAL, do_pending_window_change): Adjusted appropriately. * xdisp.c (redisplay): Adjusted appropriately. * dispnew.c (Fredraw_frame): Give this appropriate definitions for MULTI_FRAME and non-MULTI_FRAME configurations. (Fredraw_display): Give this a non-MULTI_FRAME-dependent definition. 1993-03-18 Richard Stallman (rms@geech.gnu.ai.mit.edu) * lisp.h (CHECK_LIVE_WINDOW): Use Qlive_window_p. * xfns.c (x_screen): Make this var file scope. (Fx_server_version): Use Fcons, not list3. 1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * xterm.c (term_get_fkeys): Less klugey version of the last fix. * Makefile.in (versionclean): New production nukes binaries and DOC files, forcing a re-load, re-dump and re-makedoc. 1993-03-17 Richard Stallman (rms@mole.gnu.ai.mit.edu) * fileio.c: Doc fix. 1993-03-17 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't display the cursor on garbaged frames. 1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * term.c (term_get_fkeys) Supply second args for all tgetstr calls. 1993-03-17 Richard Stallman (rms@mole.gnu.ai.mit.edu) * process.c (Fprocess_send_eof): Make sure proc is running. * s/irix4-0.h (_getpty): Declare this, not _get_pty. 1993-03-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xfns.c (Fx_server_vendor, Fx_server_version, Fx_display_pixel_width) (Fx_display_pixel_height, Fx_display_mm_width, Fx_display_mm_height) (Fx_display_screens, Fx_display_planes, Fx_display_color_cells) (Fx_display_visual_class, Fx_display_backing_store) (Fx_display_save_under): New functions. (x_screen_count, Vx_vendor, x_release, x_screen_height_mm) (x_screen_width_mm, Vx_backing_store, x_save_under, Vx_screen_visual) (x_visual_strings): Vars deleted. (Fx_open_connection): Don't init those vars. (syms_of_xfns): Set up new functions. Don't set up those vars as Lisp vars. Nor x-screen-width and x-screen-height. 1993-03-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * cmds.c (overwrite_binary_mode): Deleted; this implements the wrong feature. (Qoverwrite_mode_binary): New variable. (internal_self_insert): If current_buffer->overwrite_mode is `overwrite-mode-binary', do as overwrite_binary_mode used to. (syms_of_cmds): Remove defvar of overwrite_binary_mode; initialize Qoverwrite_mode_binary. * buffer.c (syms_of_buffer): Doc fix for overwrite_mode. * buffer.h (struct buffer): Doc fix. Rename `live-window-p' to `window-live-p', for consistency with `frame-live-p'. * window.c (Fwindow_live_p): Renamed from Flive_window_p. * lisp.h (CHECK_LIVE_WINDOW): Change to use Qwindow_live_p. (Qwindow_live_p): Extern declaration renamed fom Qlive_window_p. 1993-03-16 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xmenu.c (xmenu_show): Do BLOCK_INPUT; unblock just before returning. * xterm.h [SIGIO] (UNBLOCK_INPUT): Resignal if x_pending_input. 1993-03-15 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * frame.c (Fframe_height, Fframe_width): Fix doc strings to match those of the multi-frame versions in frame.el. Accept an optional argument FRAME, also for consistency. * floatfns.c (logb): Add extern declaration for this. * floatfns.c (Flogb): Under SYSV, implement this using frexp. 1993-03-15 Richard Stallman (rms@mole.gnu.ai.mit.edu) * ymakefile (dispnew.o): Depend on termhooks.h. * xmenu.c (list_of_items): Allow strings among the alist items; they make nonselectable lines. 1993-03-14 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * dired.c (Fdirectory_files): Recompile MATCH (if specified) after expanding the file name and all; those might compile regexp of their own, and change searchbuf. * keyboard.h (internal_last_event_frame): This should be extern, dummy. * fns.c (Fy_or_n_p): Display the answer. Some VMS changes from Richard Levitte : * [VMS] systime.h: Include vmstime.h. VMS has the timezone variable and the tzname array. * s/vms.h: VMS does have select. mth$dmod is the same as Unix's drem. Use the time functions in vmstime.c. No need to rename the malloc routines if we're using GNU malloc. PURESIZE needs to be 330000. * vmstime.c, vmstime.h: New files. * systty.h: Don't try to initialize extern declarations under VAX C. * vmspaths.h (PATH_LOADSEARCH): Include EMACS_LIBRARY:[LOCAL-LISP] in PATH_LOADSEARCH. (PATH_EXEC): Use EMACS_LIBRARY:[LIB-SRC] instead of [ETC]. * sysdep.c [VMS] (init_sys_modes): Don't allocate process_ef. [VMS] (queue_kbd_input): Build events structure correctly. [VMS] (gethostname): New function. [VMS] (getwd): Don't get the PATH environment variable; that's dumb. Call getcwd. 1993-03-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xdisp.c (display_menu_bar): Assume FRAME_MENU_BAR_ITEMS already set. Fill out line with spaces. Put explicit spaces between items. * keyboard.c (command_loop_1): Set FRAME_MENU_BAR_ITEMS here. * window.c (Fdelete_other_windows): Handle FRAME_MENU_BAR_LINES. * keyboard.c (menu_bar_items): Reverse the list when done. * xmenu.c (single_keymap_panes): When storing in ENABLES, check def before enabled. * ymakefile (really-oldXMenu): Renamed from ${oldXMenudir}$(OLDXMENU). Add @true. ($(OLDXMENU)): Depend on really-oldXMenu. The idea is to make sure libXMenu11.a is always updated if nec. * keyboard.c (command_loop_1): Typo calling Qrecompute_lucid_menubar. (read_key_sequence): Likewise. Also fix call to Vrun_hooks. 1993-03-13 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * ymakefile (YMF_PASS_LDFLAGS): Doc fix. 1993-03-13 Richard Stallman (rms@mole.gnu.ai.mit.edu) * print.c (PRINTPREPARE): Handle marker that points nowhere. * apollo.h (NO_X_DESTROY_DATABASE): Defined. * undo.c (record_property_change, record_delete, record_insert): Don't make boundary or touch last_undo_buffer if cur buf has no undo. * ymakefile [__GNUC__ > 1]: Delete the conditional for GCC 2.4. [__GNUC__ > 1] (LIB_GCC): Use -print-libgcc-file-name to find libgcc.a. (YMF_FIND_LIBGCC_A): Definitions and uses deleted. 1993-03-13 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * s/usg5-4.h: Remove extraneous text after #undef LIB_X11_LIB. 1993-03-13 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xterm.c (Xatom_wm_change_state): Define here. * xfns.c (Xatom_wm_change_state): Just declare. (Xatom_emacs_selection, Xatom_clipboard, Xatom_clipboard_selection): (Xatom_wm_change_state, Xatom_incremental, Xatom_multiple): (Xatom_targets, Xatom_timestamp, Xatom_delete, Xatom_insert_selection): (Xatom_pair, Xatom_insert_property, Xatom_text): Decls deleted. (x_begin_selection_own): Decls deleted. (Fx_open_connection): Set up only the wm atoms here. Call Xatoms_of_xselect. * dispnew.c: Include termhooks.h. * frame.h (FRAMEP): Macro deleted. * xselect.c: Total rewrite, derived from Lucid's version. * keyboard.c (kbd_buffer_get_event): Handle selection_clear_event and selection_request_event events. * xterm.c (XTread_socket): Handle NEW_SELECTIONS alternative: queue events for SelectionRequest and SelectionClear; call functions for SelectionNotify and PropertyNotify. * termhooks.h (selection_request_event, selection_clear_event): New event kinds. * xterm.h (SELECTION_EVENT_DISPLAY): New macro. (SELECTION_EVENT_REQUESTOR, SELECTION_EVENT_SELECTION) (SELECTION_EVENT_TARGET, SELECTION_EVENT_PROPERTY) (SELECTION_EVENT_TIME): New macros. (struct selection_input_event): New structure. * process.c (wait_reading_process_input): New option to wait till a given cons cell has a non-nil car. Delete vipc conditionals. 1993-03-12 Jim Blandy (jimb@totoro.cs.oberlin.edu) * ymakefile (YMF_FIND_LIBGCC_A): New macro, to help GCC find libgcc.a even when -nostdlib is in effect. Define it to be the empty string if nobody else establishes a value for it. (temacs): Include it in the list of flags passed to the linker. * ymakefile (LINKER): If we have GCC 2.4 or later, use the -nostartfiles option instead of -nostdlib. (LIBGCC): Under GCC 2.4 or later, define this to be the empty string. 1993-03-12 Richard Stallman (rms@mole.gnu.ai.mit.edu) * xmenu.c (xmenu_show): New arg enable_list. (keymap_panes): New arg enables (single_keymap_panes): New arg enables. Fill in its contents. (list_of_panes, list_of_items): New arg enables. Fill in contents. (Fx_popup_menu): Pass enable and enable_list args. (single_keymap_panes): Set enable flag to -1 if cmd definition is nil. * lisp.h (INTEGERP, SYMBOLP, MARKERP, STRINGP, VECTORP): New macros. (COMPILEDP, BUFFERP, SUBRP, PROCESSP, FRAMEP, WINDOWP): New macros. (WINDOW_CONFIGURATIONP, FLOATP): New macros. 1993-03-12 Paul Eggert (eggert@twinsun.com) * cmd.c (internal_self_insert): Check that tab_width does not exceed 20, to be consistent with indent.c and xdisp.c. 1993-03-12 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * term.c (CONDITIONAL_REASSIGN): fixed reference to tigetstr. This should have been tgetstr, but I typoed and tigetstr happens to link and even do the right thing if you're on a System V box. 1993-03-12 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (read_key_sequence): Support Vcurrent_menubar and Qactivate_menubar_hook. Call Qrecompute_lucid_menubar. (syms_of_keyboard): Set up Vcurrent_menubar, Vprevious_lucid_menubar, Qactivate_menubar_hook, and Qrecompute_lucid_menubar. * xmenu.c (Fx_popup_menu): Allow a frame instead of a window, in arg. Use Fcar, Fcdr when extracting from event, to check data types. 1993-03-11 Richard Stallman (rms@mole.gnu.ai.mit.edu) * frame.h (FRAME_MENU_BAR_ITEMS): New macro (two versions). (struct frame): New field menu_bar_items. * alloc.c (mark_object): Mark the menu_bar_items field. * xdisp.c (display_menu_bar): New function. (redisplay_window): Call display_menu_bar. * term.c (tigetstr): Add dummy definition to make Emacs link again. * keyboard.c (syms_of_keyboard): Set up Qmenu_bar. (menu_bar_items): New function. (menu_bar_one_keymap, menu_bar_item): New functions. (make_lispy_event): Handle menu bar events. (read_key_sequence): Make dummy prefix `menu-bar' for menu bar events. 1993-03-11 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) * term.c (fkey_table): Added many more keycap cookies to the fkey_table; it now supports the full intersection of the set of X keysyms and terminfo capabilities. See my lisp directory ChangeLog entry for this date, and lisp/term/README, for details. 1993-03-11 Richard Stallman (rms@mole.gnu.ai.mit.edu) * floatfns.c (Flogb): Fix use of IN_FLOAT. Fix arg names. Don't confuse Lisp_Object with integer. 1993-03-11 Jim Blandy (jimb@totoro.cs.oberlin.edu) * process.c (process_send_signal): In the TERMIOS code for sending control characters to processes, don't try to return Qnil; just return. 1993-03-11 Richard Stallman (rms@mole.gnu.ai.mit.edu) * dispnew.c (change_frame_size): Handle FRAME_MENU_BAR_LINES. * frame.c (Fframe_parameters): Report menu-bar-lines parm. (syms_of_frame): Set up Qmenu_bar_lines. * frame.h (FRAME_MENU_BAR_LINES): New macro. (struct frame): New field menu_bar_lines. * xfns.c (x_frame_parms): Add elts for visibility and menu-bar-lines. (enum x_frame_parm): Likewise. (x_set_menu_bar_lines, x_set_menu_bar_lines_1): New functions. (x_set_visibility): New function. (Fx_create_frame): Handle menu-bar-lines parm. (x_report_frame_params): Report Qvisibility. (syms_of_xfns): Set up Qvisibility. * keyboard.c (command_loop_1): Typo in last change. * xmenu.c (syms_of_xmenu): Set up Qmenu_enable. (single_keymap_panes): Test menu-enable property of symbol to decide whether to include it in the menu. 1993-03-10 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * keyboard.c (command_loop_1): Adjust to the fact that display tables are now vectors of vectors, not vectors of strings. 1993-03-10 Jim Blandy (jimb@totoro.cs.oberlin.edu) * floatfns.c (Flogb): Undo the change of Feb 22. * ymakefile (OLDXMENU): Don't assume that we have symbolic links available; use `ln -f' instead of `ln -s'. * xterm.c (x_find_modifier_meanings): XDisplayKeycodes only appeared in X11R4; for earlier versions, just access the members of the Display directly. * xrdb.c (get_user_db): Since xrdb.c doesn't #include xterm.h, we can't test HAVE_X11R4 to see how we should get the resource manager string; cheat. * unexec.c (copy_text_and_data): Error message tweaked. * systime.h (timezone): Add an explicit declaration for this variable under USG 5-4. * sysdep.c (read_input_waiting): Set e.frame_or_window, not e.frame; the latter doesn't exist anymore. * sysdep.c (start_of_data): If ORDINARY_LINK is #defined, we don't have the data_start symbol defined, so we'll just use the address of environ. * s/usg5-4.h: Changes from Eric Raymond: If we're doing ordinary linking, define LIB_STANDARD appropriately. Give LIBS_DEBUG a null definition; usg5-4 has no -lg. #define LIBS_STANDARD as "-lc"; usg5-4 has no -lPW. #define NSIG, if it's not already defined. #define HAVE_TERMIOS instead of HAVE_TCATTR. Provide our own definition of LIB_X11_LIB. * s/usg5-3.h (LIBX11_SYSTEM): Eric Raymond says the libraries here were slightly wrong. * m/intel386.h (LIB_STANDARD): If USG5_4 is #defined, there's no need to include `-lPW'; that has been merged with `-lc'. * emacs.c (__do_global_ctors, __do_global_ctors_aux, __do_global_dtors, __CTOR_LIST__, __DTOR_LIST__, __main): Don't define these if ORDINARY_LINK is #defined; in that case, the standard linking procedure will find definitions for these. * syssignal.h (sigunblock): Add definition which works under SYSVr4. * emacs.c (fatal_error_signal): Unblock the signal which we're handling using sigunblock. 1993-03-09 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xfns.c (x_make_gc): Don't forget to block X input around the X calls in this function. * xfns.c [not HAVE_X11R4] (select_visual): It's v->visualid, not x->visualid. x isn't defined. * m/template.h, s/template.h: Mention that `etc/MACHINES' and `configure' should be updated whenever support for a configuration is added or improved. * process.c [! subprocesses] (wait_reading_process_input): Remember to re-enable polling for input. * keyboard.c [POLL_FOR_INPUT] (quit_throw_to_read_char): If we're polling for input, abort; input polling should always be suppressed while we're waiting for input. * keyboard.c (interrupt_signal): Remove extern declaration of Vwindow_system; this is no longer used. 1993-03-09 Richard Stallman (rms@mole.gnu.ai.mit.edu) * editfns.c (Fcurrent_time_string): Optional arg specifies time. * keymap.c (Fdefine_key): Use proper meta-bit to clear. * intervals.c (set_point): Check invisibility of following character, not previous character. * floatfns.c (FLOAT_CHECK_ERRNO): Define unless NO_FLOAT_CHECK_ERRNO. * floatfns.c: Changes from Lucid. (HAVE_MATHERR, FLOAT_CHECK_ERRNO, FLOAT_CATCH_SIGILL): New parm macros. (FLOAT_CHECK_DOMAIN, HAVE_RINT): New parm macros. (HAVE_INVERSE_HYPERBOLIC, HAVE_CBRT): New parm macros. [!HAVE_RINT]: Define rint as macro. (IN_FLOAT): Major rewrite; several alternate versions. (IN_FLOAT2): New macro. (arith_error, range_error, domain_error, domain_error2): New macros. (Facos, Fasin, Fatan, Fcos, Fsin, Ftan, Fexp, Fexpt, Flog): Changed. (Flog10, Fsqrt, Fabs, Ffloat, Flogb): Changed. (Ffloor, Fceiling, Fround, Ftruncate): Changed. (Fcube_root): Renamed from Fcbrt. (matherr): New function. (float_error): Only if FLOAT_CATCH_SIGILL. * fns.c (Fy_or_n_p): Use query-replace-map. * keymap.c (access_keymap): Handle ints beyond the ASCII range. (store_in_keymap): Likewise. (Faccessible_keymaps): Use meta_modifier. Use vectors for the key sequences. (Fwhere_is_internal): Use meta_modifier. (append_key): Always return a vector. * lisp.h (Qrange_error, Qdomain_error, Qsingularity_error): (Qoverflow_error, Qunderflow_error): New vars. * data.c (syms_of_data) [LISP_FLOAT_TYPE]: Define new error conditions: Qarith_error, Qrange_error, Qdomain_error, Qsingularity_error, Qoverflow_error, Qunderflow_error. 1993-03-08 Richard Stallman (rms@mole.gnu.ai.mit.edu) * systty.h: Define HAVE_TCATTR based on HAVE_TERMIOS earlier. (struct emacs_tty): Separate the struct decl from the EMACS_..._TTY... macro definitions. Use HAVE_TCATTR to decide whether to use `struct termios'. * xfns.c (Fx_pixel_width, Fx_pixel_height): Fns deleted. (syms_of_xfns): Don't install them. (x_user_set_name): Function deleted. (x_char_height, x_char_width): New functions. * frame.c (Fframe_char_height, Fframe_char_width): (Fframe_pixel_height, Fframe_pixel_width): New functions, two versions of each. [MULTI_FRAME] (syms_of_frame): Make them Lisp functions. [!MULTI_FRAME] (syms_of_frame): Likewise. Also Fselected_frame. * xterm.c (XTread_socket): Don't reverse the chars that XLookupString returns. Use all of them. Save last 100 chars and keysyms in temp_buffer. 1993-03-07 Roland McGrath (roland@churchy.gnu.ai.mit.edu) * buffer.c (syms_of_buffer): Make erase-buffer a disabled command. 1993-03-07 Richard Stallman (rms@mole.gnu.ai.mit.edu) * ymakefile (keyboard.o): Depend on intervals.h. (keymap.o): Depend on termhooks.h. * keyboard.c: Include intervals.h. (read_key_sequence): Use get_local_map. * textprop.c (Fget_text_property): Use textget. (Fnext_single_property_change): Likewise. (Fprevious_single_property_change): Likewise. * intervals.c (textget): Handle categories. (get_local_map): New function. (verify_interval_modification): Call textget correctly. * textprop.c (syms_of_textprop): Set up Qcategory, Qlocal_map. * intervals.h: Declare those vars. Declare textget, get_local_map. * keymap.c: Include termhooks.h. (push_key_description): Handle all modifiers. Handle large character codes. (Fkey_description): Move the meta bit, if arg is string. (Fsingle_key_description): Don't alter integer value. Make tem long enough. * keyboard.c (read_key_sequence): Use meta_modifier for meta keys when handling function_key_map. * lread.c (syms_of_lread): Set up Qascii_character. (Fread_char, Fread_char_exclusive): Use that property to convert symbols like tab, return, M-return,... to ASCII. * keyboard.c (follow_key): Downcase shift_modifier as well as ASCII. (command_loop_1): Run pre-command-hook and post-command-hook. Set this_command before running pre-command-hook. (syms_of_keyboard): Set up vars for those hooks. * buffer.c (reset_buffer_local_variables): Reset mark_active. (syms_of_buffer): New buffer-local var `mark-active'. (init_buffer_once): Initialize mechanism for it. 1993-03-06 Jim Blandy (jimb@totoro.cs.oberlin.edu) * dispnew.c (init_display): Initialize Vwindow_system. * ymakefile (SHELL): No need to set this twice; remove one. * emacs.c (main): SIGIOT isn't defined on all systems; don't set its signal handler unless it is. * sysdep.c (init_baud_rate): Use input_fd, instead of fd; the latter is undefined. * dired.c (NAMLEN): Never use d_nameln to get the length of the directory entry's name; it is used inconsistently. Always call strlen instead. 1993-03-06 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (syms_of_keyboard): Handle gaps in modifier_names. (modifier_names): Reorder to match termhooks.h. * keyboard.c (parse_modifiers_uncached): Detect `s-', not `super-'. (apply_modifiers_uncached): Make `s-', not `super-'. * lread.c: Include termhooks.h. (read_escape): Handle \H, \A, \s. Use ..._modifier. * ymakefile (lread.o): Depend on termhooks.h. * termhooks.h (alt_modifier, super_modifier, hyper_modifier): (shift_modifier, ctrl_modifier, meta_modifier): Renumber the bits. * keyboard.c (make_lispy_event): For ASCII event, the ..._modifier bits are the right bits to return. * keyboard.c (lispy_function_keys): Add codes starting at 0xff00 and running through 0xffff. * xterm.c (x_alt_mod_mask, x_super_mod_mask, x_hyper_mod_mask): New variables. (x_find_modifier_meanings): Set them. (x_convert_modifiers): Check for them. (XTread_socket): Handle BackSpace, etc, function keys. * keyboard.c (read_char): Move metabit when fetching from string macro. * callint.c (check_mark): Error if mark is not active. * editfns.c (save_excursion_save): Save mark_active of buffer. (save_excursion_restore): Restore mark_active of buffer. Run activate-mark-hook if it's on, or deactivate-mark-hook if it turns off. (region_limit): Error if mark inactive, if transient-mark-mode. * insdel.c (prepare_to_modify_buffer): Set Vdeactivate_mark. * keyboard.c (command_loop_1): Clear Vdeactivate_mark before cmd. Clear mark_active if command set Vdeactivate_mark. Run deactivate-mark-hook at that time, or activate-mark-hook. (syms_of_keyboard): Define variable deactivate-mark. * buffer.c (syms_of_buffer): New buffer-local var `mark-active'. (init_buffer_once): Initialize mechanism for it. * buffer.h (struct buffer): New field mark_active. * intervals.c (verify_interval_modification): Handle insertions specially. For non-insertions, check only the chars being changed. `modification-hooks' property is now a list of functions. (set_point): Ignore chars outside current restriction. * textprop.c (Qmodification_hooks): Renamed from Qmodification. (syms_of_textprop): Changed accordingly. * keyboard.c (syms_of_keyboard): New lisp var unread-command-char. (Finput_pending_p): Test unread_command_char. (Fdiscard_input, quit_throw_to_read_char, init_keyboard): Set it. (read_char): Fetch from it. 1993-03-05 Jim Blandy (jimb@totoro.cs.oberlin.edu) * textprop.c (Fadd_text_properties): Initialize the modified flag. Use a "for (;;)" loop at the end of the function, to indicate that all exiting is taken care of inside the loop. (Fremove_text_properties): Same. 1993-03-05 Richard Stallman (rms@mole.gnu.ai.mit.edu) * ymakefile (LIB_MATH): Delete -lc, since duplicates LIB_STANDARD. * buffer.c (check_protected_fields): Variable deleted. (syms_of_buffer): Delete vars buffer-field-list and check-protected-fields. * insdel.c (check_protected_fields): Delete decl. * disptab.h (DISP_INVIS_VECTOR): Renamed from DISP_INVIS_ROPE. (DISP_CHAR_VECTOR): Renamed from DISP_CHAR_ROPE. All callers changed. * xdisp.c (copy_rope): Expect FROM to be a vector. (copy_part_of_rope): New function. (display_string): Expect display table elts to be vectors. * indent.c (current_column, Fmove_to_column, compute_motion): Expect display table elts to be vectors. * alloc.c: (Fmake_rope, Frope_elt): Fns deleted. * lisp.h (CHAR_META, CHAR_SHIFT, CHAR_CTL): New macros. * lread.c (read_escape): Handle M-, C- and S- for new convention. (read1): Move the meta bit to the right place for a string. * keyboard.c (Fthis_command_keys, Fread_key_sequence): Fix calls to make_event_array. * macros.c (Fend_kbd_macro): Fix call to make_event_array. * alloc.c (make_event_array): Renamed from make_array. Chars that fit in a string are 0...127 and their meta variants. * keyboard.c (make_lispy_event): Put meta and shift modifiers into an integer. (read_avail_input): Set the modifiers field in the events read. (kbd_buffer_get_event): Pass thru integer event untruncated. (read_char): Likewise. (read_key_sequence, read_char): Only -1 means EOF. (kbd_buffer_store_event): Don't ignore 0200 bit in quit char. (follow_key): Use new meta bit flag. * xterm.c (XTread_socket): Set bufp->modifiers for all kinds of keys. * keymap.c (Flookup_key): Use 0x800000 as meta-bit if from vector. (Fdefine_key): Likewise. 1993-03-04 Richard Stallman (rms@mole.gnu.ai.mit.edu) * dgux.h (ELF): Handle this parameter. [! COFF] (UNEXEC, USG_SHARED_LIBRARIES): New definitions. (_BSD_TTY_FLAVOR): Don't define if already defined. (C_COMPILER, LINKER, MAKE_COMMAND): New definitions. 1993-03-04 Jim Blandy (jimb@totoro.cs.oberlin.edu) * keyboard.c (Fsuspend_emacs): Remember that `suspend-hooks' isn't necessarily bound. 1993-03-04 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * Makefile.in (xmakefile): Add missing quote. 1992-03-03 Wilson H. Tien (wtien at urbana.mcd.mot.com) * unexelf.c (unexec): Move data2 section header up so all section headers will be in ascending order. This will prevent the unexeced emacs that being processed by other applications (such as strip) to fail. 1993-03-02 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/isc2-2.h (S_IFLNK): Add #undef. (C_SWITCH_SYSTEM): Add conditional definition. (NO_ASM, USE_UTIME, NO_X_DESTROY_DATABASE): Defined. (LIB_STANDARD): Alternate definition if __GNUC__. (SIGTSTP): #undef deleted. (LIBS_SYSTEM): Define only if HAVE_X_WINDOWS. * s/isc3-0.h: New file. * unexelf.c: Handle rounding of section boundaries. (round_up): New function. 1993-03-02 Karl Berry (karl@cs.umb.edu) * s/isc2-2.h (USG_SHARED_LIBRARIES, CLASH_DETECTION, NO_FCHMOD): Define. (HAVE_TIMEVAL): Do not define. (NO_ASM): Only define once. 1993-03-02 Jim Blandy (jimb@totoro.cs.oberlin.edu) * print.c (float_to_string): Define buf to be an unsigned char, to match the data field of strings. * keyboard.c (kbd_buffer_get_event): Protect assignment to Vlast_event_frame in a "#ifdef MULTI_FRAME" clause. * syntax.c (describe_syntax_1): Delete excess arg to describe_vector. (check_syntax_table): Delete excess arg to wrong_type_argument. 1993-03-01 Jim Blandy (jimb@totoro.cs.oberlin.edu) * buffer.c (buffer-undo-list): Doc fix. * xdisp.c (redisplay): Protect calls to request_sigio and unrequest_sigio in "#ifdef SIGIO" clauses; these are not defined * cmds.c (Fnewline): Doc fix. 1993-03-01 Richard Stallman (rms@mole.gnu.ai.mit.edu) * insdel.c (del_range): Update point before offset_intervals. * intervals.h: Don't include dispextern.h more than once. (INTERVAL_VISIBLE_P): NILP test was backwards. * intervals.c (intervals_equal): Handle one arg null and other not. (set_point): Considerable rewrite. Handle intervals both before and after the old and new point values. Redo handling of invisible intervals, and of motion hooks. (textget): New function. * textprop.c (Fadd_text_properties, Fremove_text_properties): Add len>0 as condition for main loop. Abort if reach a null interval. (Fset_text_properties): Abort if reach a null interval. (Ftext_properties_at, Fget_text_property): Return nil if POS is end of OBJECT. (add_properties): Use NILP to test result of Fequal. No longer inline. (remove_properties): No longer inline. (set_properties): Total rewrite as function. (validate_interval_range): Don't alter *begin at end of buffer. But do search for a position just before the end. Return null for an empty string. 1993-02-28 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Makefile.in (emacs, temacs): Add @true to prevent Make confusion. * lread.c (read1--strings with properties case): Detect end of list, and invalid syntax, using recursive read1 calls. * intervals.c (graft_intervals_into_buffer): create_root_interval needs Lisp object arg. Set tree to new root interval. Don't test TREE_LENGTH if buffer has no intervals. Rearrange code to copy properties so that it really does merge the inserted ones into the inherited ones. (traverse_intervals): Pass `arg' on recursive calls. (split_interval_left): Use new_length as basis for length of new. * print.c (print--string case): Any non-null interval means print intervals. Get rid of var obj1; just use obj. * textprop.c (validate_interval_range): Allow 0 as position in string. Add 1 to specified string positions. (Fprevious_single_property_change): Subtract 1 if object is string. (Fnext_single_property_change): Likewise. (Fprevious_property_change, Fnext_property_change): Likewise. * xterm.c (x_do_pending_expose, XTframe_rehighlight): (x_window_to_scrollbar): Use XGCTYPE. 1993-02-28 Jim Blandy (jimb@totoro.cs.oberlin.edu) Use the term `scroll bar', instead of `scrollbar'. * alloc.c, frame.c, frame.h, indent.c, keyboard.c, keyboard.h, lisp.h, term.c, termhooks.h, window.c, window.h, xdisp.c, xfns.c, xterm.c, xterm.h: Terminology changed. Don't generate switch-frame events by checking Vlast_event_frame; use a separate variable for that bookkeeping. In order to generate them properly, we may need to fiddle with it. * keyboard.c (internal_last_event_frame): New variable. (command_loop_1): Check internal_last_event_frame, not Vlast_event_frame. (read_char, kbd_buffer_store_event): Set both Vlast_event_frame and internal_last_event_frame. (kbd_buffer_get_event): Check internal_last_event_frame to decide whether to generate a switch-frame event. Set Vlast_event_frame after each event. (init_keyboard): Initialize both Vlast_event_frame and internal_last_event_frame. * keyboard.h (internal_last_event_frame): Add extern declaration for this. * frame.c (Vlast_event_frame): Remove external declaration for this. (Fselect_frame): Set internal_last_event_frame to Qnil to force a switch-frame event, not Vlast_event_frame; the latter is supposed to convey information to the user. * keyboard.c (syms_of_keyboard): Doc fix for unread_command_events. 1993-02-26 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (syms_of_keyboard): Doc fix. 1993-02-26 Jim Blandy (jimb@totoro.cs.oberlin.edu) * ymakefile (LIBES): Exchange the order of LIB_MATH and LIB_STANDARD, to avoid duplicated symbols under SunOS. * buffer.c (syms_of_buffer): Add the extra argument to the commented-out DEFVAR_PER_BUFFER for `mode-line-format', so make-docfile will find the docstring properly. 1993-02-25 Richard Stallman (rms@mole.gnu.ai.mit.edu) * ymakefile (intervals.o): Dep on intervals.c, not textprop.c. * textprop.c (remove_properties): Call modify_buffer. (add_properties): Likewise. * undo.c (record_property_change): Typo in last change. * cmds.c (syms_of_cmds): Typo in last change. * print.c (print): Never declare OBJ arg as `register'. Special handling for strings with intervals. (print_intervals): New function. * lread.c (read1): Handle reading strings with properties. * intervals.c (traverse_intervals): New arg ARG. * alloc.c (mark_interval): Add ignored arg. (mark_interval_tree): Pass new arg to traverse_intervals. 1993-02-24 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xterm.c (x_window_to_scrollbar, x_scrollbar_expose, x_scrollbar_handle_click, x_scrollbar_note_movement): Remember that these can be called during GC; we have to ignore mark bits. * lisp.h (GC_NILP, GC_EQ): New macros to help with that. * print.c (float_to_string): Define buf to be an unsigned char, to match the data field of strings. * lisp.h (RETURN_UNGCPRO): Remove "do ... while (0)" wrapper around macro. * data.c (Fstring_to_number): Declare p to be an unsigned char, to match the data field of strings. * data.c (Fstring_to_number): Just skip tabs and spaces; don't use the macros. The stuff apparently varies from locale to locale more than we'd like. Don't include . 1993-02-24 Roland McGrath (roland@churchy.gnu.ai.mit.edu) * buffer.c (Ferase_buffer): Added interactive spec. 1993-02-24 Richard Stallman (rms@mole.gnu.ai.mit.edu) * undo.c (Fprimitive_undo): Handle property-change undo entry. (record_property_change): New function. * textprop.c (Fadd_text_properties): Pass new arg to add_properties. (Fremove_text_properties): Likewise. (add_properties, remove_properties): New arg OBJECT. Record undo info. (Fput_text_property): New function. * buffer.c (syms_of_buffer): Doc fix. * cmds.c (syms_of_cmds): New var `overwrite-binary-mode'. (internal_self_insert): Handle that var. 1993-02-23 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (read_avail_input): Args to `kill' were backwards. 1993-02-23 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * alloc.c (make_pure_float): Assure that PUREBEG + pureptr is aligned, not pureptr itself. * emacs.c (fatal_error_signal): Unblock the signal before we try to deliver it to ourselves. #include "syssignal.h" to get the right definitions. * abbrev.c (Fexpand_abbrev): Only copy the text we're going to expand - from wordstart to wordend, not from wordstart to point - into the buffer. There might be non-word text between wordend and point. 1993-02-23 Richard Stallman (rms@geech.gnu.ai.mit.edu) * unexec.c (adjust_lnnoptrs): Handle symentry.n_type == 0x2400. (make_hdr) [USG_SHARED_LIBRARIES]: Set bias using bss_start. 1993-02-22 Jim Blandy (jimb@totoro.cs.oberlin.edu) * process.c: Make sure we don't miss processes exiting, by having the sigchld handler clear *input_available_clear_time. (wait_reading_process_input): Check for process activity after setting the timeout and calling set_waiting_for_input. (sigchld_handler): If the process which has exited is one we care about, clear *input_available_clear_time. * frame.c (Fselect_frame): Set Vlast_event_frame to Qnil after switching frames, to make sure we'll get a switch-frame event. (Vlast_event_frame): Add external declaration for this here. * alloc.c (make_pure_float): Align pureptr according to __alignof, if it's available, or sizeof (struct Lisp_Float) if it's not. * .gdbinit (xprocess): New command. * floatfns.c (Flogb): Always implement this by calling Flog, even on non-USG systems, which supposedly have a logb function. (Fround): Always implement this by calling floor, even on systems that have rint. * process.c (process_send_signal): Use TERMIOS functions in preference to BSD ioctls. Some systems attempt to provide the BSD functions for backward compatibility, and get it wrong. * data.c (Fstring_to_number): Skip initial spaces, to make Emacs lisp parse consistently on different operating systems. #include to help with this. * data.c (Fstring_to_int): Rename this to Fstring_to_number, since it parses floats as well as integers. Fix docstring. (syms_of_data): Fix defsubr. (wrong_type_argument): Change use. (Fint_to_string): Doc fix. * lisp.h (Fstring_to_int): Change extern declaration. 1993-02-22 Charles Hannum (mycroft@hal.gnu.ai.mit.edu) * ibmrs6000.h (C_ALLOCA, STACK_DIRECTION): Only define if HAVE_ALLOCA is not defined. (X_DEFAULT_FONT): Change to `fixed', as `Rom14.500' only works on the console. * aix3-1.h: Changes from 18.58. (HAVE_TERMIOS): Changed from HAVE_TERMIO. (unix): Define. * sysdep.c (child_setup_tty): Recognize HAVE_TERMIOS as well as HAVE_TERMIO. * xrdb.c (getuid): Remove declaration. * systty.h [HAVE_TERMIOS]: Include fcntl.h. * systime.h [_AIX]: Move test outside of previous #if. (EMACS_GET_TZ_OFFSET) [USG]: Don't declare twice. Prefer tzset. * keyboard.c (init_keyboard): Recognize HAVE_TERMIOS as well as HAVE_TERMIO. * aix3-2.h: New file. Specifies difference between AIX 3.1 and 3.2. 1993-02-20 Richard Stallman (rms@wookumz.gnu.ai.mit.edu) * keyboard.c (Fsuspend_emacs): Make tem not register. * syntax.c (Fforward_comment): New function. * search.c (Fskip_syntax_backward): New function. (Fskip_syntax_forward): Likewise. (skip_chars): New argument syntaxp. * alloc.c (Fmemory_limit): Doc fix. 1993-02-19 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (Fsuspend_emacs): Rename suspend-hook to suspend-hooks and run it manually. * keymap.c (describe_map): Call Fkey_description before build_string. 1993-02-18 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (Fopen_dribble_file): Doc fix. * lread.c (syms_of_lread): Doc fix. 1993-02-18 Jim Blandy (jimb@totoro.cs.oberlin.edu) * textprop.c (Fget_text_property): Fix typo in function's declaration. * floatfns.c (IN_FLOAT): Make this work properly when SIGTYPE is void. * alloc.c: Add description lines to the top of each page. * alloc.c (mark_interval_tree): Remove spurious & in front of function name. * alloc.c (UNMARK_BALANCE_INTERVALS): Fix to accomodate compilers other than GCC, which do not allow casts on the LHS of an assignment. * config.h.in: #define USE_TEXT_PROPERTIES by default. * alloc.c (mark_object, mark_buffer): Remove some unused variables. * buffer.c (Fswitch_to_buffer): Pass the correct number of arguments to Fnext_window. * buffer.c (Fbury_buffer): Pass the correct number of arguments to Fother_buffer. * bytecode.c (Fbyte_code): Pass the correct number of arguments to temp_output_buffer_show. * callint.c (Fcall_interactively): Pass the correct number of arguments to wrong_type_argument. * casefiddle.c (caseify_object): Same. * casetab.c (check_case_table): Same. * search.c (Fstore_match_data): Same. * syntax.c (check_syntax_table): Same. * callproc.c (delete_temp_file): Declare this to return Lisp_Object, to smooth type-checking. * data.c (wrong_type_argument): Pass the correct number of arguments to Fstring_to_int. * data.c (arithcompare): Add a default case which aborts, just to make me happy. * dispnew.c (sit_for): Pass the correct number of arguments to gobble_input. * editfns.c (Fmessage): Don't forget to return a value when args[0] == Qnil. * fns.c (Fequal): Call internal_equal to recurse on elements of lists and vectors, not Fequal. * frame.c (Fdelete_frame): If FRAME is a dead frame, return Qnil, not nothing. * keyboard.c (echo_char): Apply XINT to c before passing it to push_key_description. * keyboard.c (recursive_edit_1, command_loop_1): Pass the proper number of arguments to unbind_to. * lread.c (Feval_buffer): Same. * window.c (Fscroll_other_window): Same. * keyboard.c (command_loop_1): Apply XINT to c before passing it to internal_self_insert and direct_output_for_insert. * keyboard.c (make_lispy_movement): Rename the variable `part' declared in the block handling scrollbar movement to `part_sym', to avoid potential conflicts with the argument named `part'. Apparently the semantics of expressions like this are unclear. * keyboard.c (Fread_key_sequence): Backslash the newlines in this docstring. * textprop.c (Fget_text_property): Same. * keymap.c (Fdescribe_vector): Pass the proper number of arguments to describe_vector. * syntax.c (describe_syntax_1): Same. * minibuf.c (Fdisplay_completion_list): Pass the proper number of arguments to Flength. * xmenu.c (list_of_items): Same. * window.c (Fset_window_configuration): Pass the proper number of arguments to Fselect_frame. * xfns.c (x_set_icon_type): Pass the proper number of arguments to x_bitmap_icon. * xterm.c (XTread_socket): Pass the proper number of arguments to construct_mouse_click. * config.h.in (HAVE_CONST): New macro. If it's not #defined, #define const to be the empty string. * config.h.in: If we're not __STDC__, define volatile to be the empty string. * buffer.h: Remove code which #includes "undo.h" if lint is defined. undo.h no longer exists. * buffer.c (buffer_slot_type_mismatch): Make symbol_name an unsigned char *, to match the type of a string's data. 1993-02-17 Michael I Bushnell (mib@geech.gnu.ai.mit.edu) * process.c (Fstart_process): Jimb's change of December 11 had a misplaced paren. This only became apparent because of jimb's change on February 8 to Fexpand_file_name. * callproc.c (Fcall_process): Ditto. 1993-02-17 Jim Blandy (jimb@totoro.cs.oberlin.edu) * callproc.c (init_callproc): Move the initialization of Vprocess_environment to its own function. (set_process_environment): This is that. * emacs.c (main): Call set_process_environment earlier than init_callproc. 1993-02-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) * buffer.c (Frename_buffer): Make prefix arg set UNIQUE. 1993-02-14 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xterm.c (x_set_window_size): Call change_frame_size instead of just setting the `rows' and `cols' members of the frame, and leaving the window tree in complete disarray. * dispnew.c (remake_frame_glyphs): When re-allocating the frame's message buffer when echo_area_glyphs is pointing at it, relocate echo_area_glyphs too. Same for previous_echo_glyphs. * window.h (previous_echo_glyphs): Add extern declaration for this. * frame.c (Fframe_parameters): Report the `minibuffer' parameter of minibufferless frames as nil, not `none'. (Qnone): Remove declaration and initialization for this. It's not needed anymore. * xfns.c (Qnone): Add them here; we still accept "none" as a valid value for the `minibuffer' parameter. * xfns.c (x_frame_params): Remember that the parameters are called "auto-raise" and "auto-lower", not "autoraise" and "autolower". * xdisp.c (message): Set echo_frame to the frame whose message buf we want to use, not to the message buf itself. 1993-02-13 Richard Stallman (rms@mole.gnu.ai.mit.edu) * textprop.c (Fadd_text_properties): Put OBJECT arg last. Make it optional. (Fset_text_properties, Fremove_text_properties): Likewise. (Fnext_single_property_change, Fprevious_single_property_change): (Fnext_property_change, Fprevious_property_change): Likewise. (Ferase_text_properties): #if 0. (Fget_text_property): New function. * s/irix4-0.h (C_SWITCH_MACHINE): Don't define if GCC. 1993-02-13 Jim Blandy (jimb@totoro.cs.oberlin.edu) * s/usg5-4.h: #include "usg5-3.h", not "s-usg5-3.h". 1993-02-11 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xterm.c (x_io_error_quitter): New function. (x_error_quitter): Note that this is only used for protocol errors now, not I/O errors. (x_term_init): Set the I/O error handler to x_io_error_quitter. 1993-02-11 Richard Stallman (rms@mole.gnu.ai.mit.edu) * editfns.c (Finsert_buffer_substring): Proper error for non-ex buffer. (Fcompare_buffer_substrings): Likewise. 1993-02-10 Jim Blandy (jimb@totoro.cs.oberlin.edu) * fileio.c (Fdo_auto_save): If NO_MESSAGE is non-nil, don't tell users that buffers have shrunk a lot. This is called when Emacs is crashing, so we don't want to run any code that isn't absolutely necessary. Also, autosave buffers which don't have specially handled autosave file names first. 1993-02-10 Richard Stallman (rms@mole.gnu.ai.mit.edu) * editfns.c (Fcompare_buffer_substrings): Ignore case if case-fold-search is non-nil. 1993-02-08 Jim Blandy (jimb@totoro.cs.oberlin.edu) * keymap.c (Flookup_key, Fkey_binding, Flocal_key_binding, Fglobal_key_binding, Fminor_mode_key_binding): Add a new optional argument ACCEPT_DEFAULT, to control whether this function sees bindings for t. (Fwhere_is_internal, describe_map_tree, describe_map_2, describe_vector): Pass the proper arguments to Flookup_key. * fileio.c (Fexpand_file_name): Pass DEFALT through Fexpand_file_name before using it. * fileio.c (Fexpand_file_name): Doc fix. 1993-02-07 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xdisp.c (message): Use the message buffer of the frame we're going to display the message on to format the message, not that of the selected frame. 1993-02-07 Richard Stallman (rms@mole.gnu.ai.mit.edu) * Makefile (emacs, temacs): Add no-op commands to these rules. * dispnew.c (char_ins_del_cost): Use FRAME_WIDTH, not FRAME_HEIGHT. * editfns.c (Fcompare_buffer_substrings): New function. 1993-02-06 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (extra_keyboard_modifiers): New Lisp var. (read_char): Support ctl and meta bits in extra_keyboard_modifiers. * xterm.c (XTread_socket): Support extra_keyboard_modifiers. 1993-01-29 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * window.c (Fscroll_left, Fscroll_right): Don't forget to apply XWINDOW to selected_window before passing it to window_internal_width. * xmenu.c (Fx_popup_menu): Don't forget to turn the frame-relative coordinates for the menu position into root-window-relative coordinates. * lread.c (read1): Although digits followed by a '.' are an integer, a single . by itself (like, say, \.) should be a symbol. 1993-01-25 Jim Blandy (jimb@geech.gnu.ai.mit.edu) * fns.c (internal_equal): Protect the clause for comparing numbers of different types with a "#ifdef LISP_FLOAT_TYPE". 1993-01-25 Richard Stallman (rms@mole.gnu.ai.mit.edu) * s/hpux8.h [__GNUC__] (LD_SWITCH_SYSTEM): Remove -a. [__GNUC__] (ORDINARY_LINK): Defined. * m/sparc.h [TERMINFO]: Don't define LIBS_TERMCAP. 1993-01-25 Jim Blandy (jimb@totoro.cs.oberlin.edu) `live-frame-p' has become `frame-live-p'. * frame.c (Qlive_frame_p): Renamed to Qframe_live_p. (Flive_frame_p): Renamed to Fframe_live_p. (syms_of_frame): Defsubrs and initializations adjusted. * frame.h (CHECK_LIVE_FRAME): Use Qframe_live_p, not Qlive_frame_p. (Qlive_frame_p): Changed extern declaration to Qframe_live_p. * lread.c (read1): Treat a string of digits ending in a period as an integer. Turn `first-change-function' into `first-change-hook'. * buffer.c (Vfirst_change_function): Renamed to Vfirst_change_hook. (Qfirst_change_hook): New symbol, for passing to Vrun_hooks. (syms_of_buffer): Change DEFVAR; initialize Qfirst_change_hook. * buffer.h (Vfirst_change_function): Renamed to Vfirst_change_hook. (Qfirst_change_hook): Added declaration. * insdel.c (signal_before_change): Change references to Vfirst_change_function, and apply Vrun_hooks to Qfirst_change_hook, instead of just calling Vfirst_change_function directly. x-selection-value has been renamed to x-selection. x-own-selection has been renamed to x-set-selection, and the order of its arguments has been reversed, for consistency with other lisp functions like put and aset. * xselect.c (Fx_own_selection): Rename to Fx_set_selection, reverse the order of the args, and therefore make the type non-optional. Doc fix. (Fx_selection_value): Rename to Fx_selection; make the type argument non-optional, for symmetry with Fx_set_selection. Doc fix. (syms_of_xselect): Adjusted. * xselect.c (Fx_own_selection, Fx_selection_value): Remove "#if 0"'ed code which made cut buffers look like a special selection type. * xfns.c (Vx_selection_value): Removed extern declaration for this; it's never used. * data.c (Fcompiled_function_p): Renamed to Fbyte_code_function_p. (syms_of_data): Adjusted. * data.c (Fnumberp, Fnumber_or_marker_p): Use the NUMBERP macro, instead of writing it out. * fns.c (internal_equal): If the operands are both numbers, compare them numerically, so that (equal 1.0 1) => t. Compare Lisp_Compiled objects like vectors. Add lisp functions to raise and lower frames. * termhooks.h (frame_raise_lower_hook): New hook. * term.c (frame_raise_lower_hook): Define it. * frame.c (Fframe_to_front, Fframe_to_back): New functions. (syms_of_frame): defsubr them. * xterm.c (XTframe_raise_lower): New function. (x_term_init): Set frame_raise_lower_hook to XTframe_raise_lower. * frame.c: Doc fixes. 1993-01-24 Jim Blandy (jimb@totoro.cs.oberlin.edu) Make the cursor style a frame parameter. * xterm.h (struct x_display): Rename the `text_cursor_kind' member to `current_cursor'; add new member `desired_cursor'. (FRAME_DESIRED_CURSOR): New accessor for new member. * xterm.c (x_display_bar_cursor): Rewritten so as not to damage the characters the cursor is displayed over, and to handle transitions between box and bar styles. (x_display_bar_cursor, x_display_box_cursor): Use current_cursor instead of text_cursor_kind. (Vbar_cursor): Delete external declaration. (x_display_cursor): Use the FRAME_DESIRED_CURSOR accessor instead of Vbar_cursor to decide how to draw the cursor. * xfns.c (Vbar_cursor): Remove definition. (Qbar, Qbox, Qcursor_type): New symbols. (syms_of_xfns): Init and staticpro them; remove DEFVAR for Vbar_cursor. (x_set_cursor_type): New setter. (x_frame_parms): Add it to the list. (Fx_create_frame): Get default values for the cursor type. * frame.c (Fmouse_position): Pass the appropriate arguments to *mouse_position_hook; the protocol was changed, but this caller wasn't fixed. * xterm.c (XTclear_frame): Call x_scrollbar_clear. (x_scrollbar_clear): New function. * xterm.c (XTflash): Totally rewritten. Only defined if HAVE_TIMEVAL and HAVE_SELECT are defined, since we use select for our timing. (timeval_subtract): New function, to help XTflash. (x_invert_frame): Removed. This didn't work anyway. (XTring_bell): Remove "#if 0" around call to XTflash, and remove calls to x_invert_frame. If both HAVE_TIMEVAL and HAVE_SELECT aren't defined, then just do the ordinary beep. * window.c (Fscroll_other_window): Prefer windows on the selected frame, then look for windows on other visible frames. * keyboard.c (Fmouse_click_p): Removed; with the 'e' spec, this isn't necessary anymore. (syms_of_keyboard): Remove defsubr for it. * keyboard.h (Fmouse_click_p): Remove extern declaration for it. * xfns.c (gray_bits): Remove this declaration; the same data is in . #include that instead. [not HAVE_X11] (x_set_border_pixel): Use gray_width and gray_height, instead of assuming that the bitmap is 16x16. (x_make_gc): Instead of creating a pixmap and then calling XPutImage to make it into a grey stipple, just call XCreatePixmapFromBitmapData to do it all at once. * xterm.c (x_text_icon): Move the request for font information into the "not HAVE_X11" part of the function; the X11 code doesn't need this. * xterm.c (x_wm_set_icon_pixmap): Instead of setting the icon_pixmap to None, just remove IconPixmapHint from the flags of the XWMHints structure. * window.c (Fprevious_frame): Use prev_frame when we get to the end of the current frame, not next_frame. Doc fix. * frame.c (prev_frame): Remove "#if 0" from this function. It turns out we do need it, to make prev_frame work right. * frame.c (next_frame): Check that FRAME is a live frame. * frame.c (Fselect_frame): Remove "#ifdef MULTI_FRAME" clause around the code which calls Ffocus_frame; this code is already inside an "#ifdef MULTI_FRAME" clause. (next_frame, prev_frame, Fnext_frame): For the same reasons, remove the "#ifdef MULTI_FRAME" clause around these functions. unread-command-event has been replaced by unread-command-events. * commands.h (unread_command_event): Change extern declaration. * keyboard.c (unread_command_event): Change the definition. (syms_of_keyboard): Change DEFVAR, and adjust the docstring. (command_loop_1, read_char, Finput_pending, Fdiscard_input, quit_throw_to_read_char, init_keyboard): Change to use unread_command_events, with the new semantics. * lread.c (read_char): Same. * minibuf.c (temp_echo_area_glyphs): Same. * xterm.c (unread_command_event): Remove external declaration for this; it is only used by obsolete code. * Makefile.in: Some makes can't handle comments in the middle of commands; move them to before the whole rule. 1993-01-21 Jim Blandy (jimb@totoro.cs.oberlin.edu) * keyboard.c (make_lispy_event): When handling a mouse click event on a window, change x and y from screen coordinates to window coordinates even when the click isn't in the text area. * xterm.c (x_scrollbar_create): Remove code which asks for EastGravity for windows; Emacs can't correctly deal with them moving around unexpectedly. * xterm.c (XTread_socket): Minor reformatting. * xterm.c (x_set_window_size): Always mark the frame garbaged. * window.c (Vmouse_window): Variable removed; it can't be handled properly without race conditions, and the events give you all the information you need anyway. (syms_of_window): Remove DEFVAR. * callint.c (Fcall_interactively): Change the `@' spec to select the window of the first parameterized event in the key sequence which invoked the command, instead of using Vmouse_window, which isn't even updated anymore. Adjust the documentation accordingly. 1993-01-20 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xterm.c (x_scrollbar_create): Set the scrollbars to use EastGravity. * keyboard.c (make_lispy_event): Deal with button releases with no stored down-going position. Make sure we always store a Qnil in the right button_down_location element after using it. 1993-01-19 Jim Blandy (jimb@totoro.cs.oberlin.edu) * frame.c (Fdelete_frame): Clear the frame's display after calling the window-system-dependent frame destruction routine. We no longer need to pass the display as a separate argument to x_destroy_window. * xterm.c (x_destroy_window): Put the code which clears out f's display here, right after we free the storage it points to. Put everything, including the code which clears x_focus_frame and x_highlight_frame, inside the BLOCK/UNBLOCK_INPUT pair. * dispnew.c (Fredraw_display): Undo change of Jan 12; redraw only frames whose garbaged flag is set. The change to FRAME_SAMPLE_VISIBILITY on Jan 14 should address the problem better. keyboard.c (read_char_menu_prompt): Test HAVE_X_WINDOWS, not HAVE_X_WINDOW. The CPP symbol indicating whether or not we have mouse menu support under X Windows is HAVE_X_MENU, not not NO_X_MENU. * emacs.c (main): Test HAVE_X_MENU, instead of NO_X_MENU. * keyboard.c (read_char_menu_prompt): Same. * ymakefile: Same. * keyboard.c (read_char, read_char_menu_prompt): Use the EVENT_HAS_PARAMETERS macro from keyboard.h, instead of writing it out. * keyboard.c (read_char_menu_prompt): Doc fix. * keyboard.c (read_char_menu_prompt): Fix test for no menus; comparing name to Qnil doesn't work if we are called with no maps. * keymap.c (Fdefine_key): Call Fkey_description to make the string to use in the error message. 1993-01-18 Roland McGrath (roland@churchy.gnu.ai.mit.edu) * window.c (Fdisplay_buffer): Doc fix. 1993-01-16 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) * xterm.c (x_window_to_scrollbar): Search frames' condemned_scrollbars list as well; input might arrive during redisplay. (x_scrollbar_report_motion): Don't forget to BLOCK_INPUT. (XTjudge_scrollbars): Clear the condemned scrollbar list before traversing it, so we don't try to process an event on a scrollbar we've killed. 1993-01-15 Richard Stallman (rms@mole.gnu.ai.mit.edu) * keyboard.c (Frecent_keys): Doc fix. 1993-01-14 Richard Stallman (rms@mole.gnu.ai.mit.edu) * window.c (Fwindow_at): Doc fix. 1993-01-14 Jim Blandy (jimb@totoro.cs.oberlin.edu) * xterm.c (x_scrollbar_create): Include PointerMotionHintMask in the event mask for scrollbars. * dispnew.c (Fredraw_display): DEFUN was missing a closing paren. * term.c (set_vertical_scrollbar_hook, condemn_scrollbars_hook, redeem_scrollbar_hook, judge_scrollbars_hook): Removed dumbo "externs" from these. They're supposed to be real definitions. * .gdbinit: Add "-geometry +0+0" to default args. (xscrollbar): New command. Make scrollbar structures into lisp objects, so that they can be GC'd; this allows windows and scrollbars can refer to each other without worrying about dangling pointers. * xterm.h (struct x_display): vertical_scrollbars and judge_timestamp members deleted. (struct scrollbar): Redesigned to be a template for a Lisp_Vector. (SCROLLBAR_VEC_SIZE, XSCROLLBAR, SCROLLBAR_PACK, SCROLLBAR_UNPACK, SCROLLBAR_X_WINDOW, SET_SCROLLBAR_X_WINDOW, VERTICAL_SCROLLBAR_INSIDE_WIDTH, VERTICAL_SCROLLBAR_TOP_RANGE, VERTICAL_SCROLLBAR_INSIDE_HEIGHT, VERTICAL_SCROLLBAR_MIN_HANDLE): New macros, to help deal with the lispy structures, and deal with the graphics. * frame.h (WINDOW_VERTICAL_SCROLLBAR): Macro deleted. (struct frame): New fields `scrollbars' and `condemned_scrollbars', for use by the scrollbar implementation. [MULTI_FRAME and not MULTI_FRAME] (FRAME_SCROLLBARS, FRAME_CONDEMNED_SCROLLBARS): Accessors for the new field. * window.h (struct window): Doc fix for vertical_scrollbar field. * frame.c (make_frame): Initialize the `scrollbars' and `condemned_scrollbars' fields of the new frame. * alloc.c (mark_object): Mark the `scrollbars' and `condemned_scrollbars' slots of frames. * xterm.c (x_window_to_scrollbar): Scrollbars are chained on frames' scrollbar field, not their x.display->vertical_scrollbars field. (x_scrollbar_create, x_scrollbar_set_handle, x_scrollbar_move, x_scrollbar_remove, XTset_vertical_scrollbar, XTcondemn_scrollbars, XTredeem_scrollbar, XTjudge_scrollbars, x_scrollbar_expose, x_scrollbar_handle_click, x_scrollbar_handle_motion): Substantially rewritten to correct typos and brainos, and to accomodate the lispy structures. * xterm.c (x_scrollbar_background_expose): Function deleted; we don't want anything in the background there after all. (XTread_socket): Don't call x_scrollbar_background_expose. We don't care. * frame.h (FRAME_SAMPLE_VISIBILITY): Make sure frame is marked as garbaged whenever it goes from invisible to visible. * dispextern.h (frame_garbaged): Move extern declaration from here... * frame.h (frame_garbaged): ... to here. The FRAME_SAMPLE_VISIBILITY macro uses it now, and this seems to be just as modular. Make a new page, just for this and message_buf_print. (struct frame): Doc fix for the `visible' field. * process.c: #include "frame.h" instead of "dispextern.h"; the only thing we care about from it is the frame_garbaged declaration. * ymakefile: Note dependency change. * xfns.c (Fx_create_frame): After mapping the frame, call SET_FRAME_GARBAGED, not just plain FRAME_GARBAGED. * window.c (window_internal_width): New function, which accounts for scrollbars if present. * lisp.h (window_internal_height, window_internal_width): Add extern declarations for these. * dispnew.c (direct_output_for_insert, direct_output_forward_char, buffer_posn_from_coords): Use window_internal_width instead of writing out its definition. * indent.c (compute_motion): Doc fix; mention scrollbars and window_internal_width. (pos_tab_offset, Fvertical_motion): Use window_internal_width instead of writing it out. * window.c (Fpos_visible_in_window_p, Fwindow_width, Fscroll_left, Fscroll_right): Same. * xdisp.c (redisplay, try_window, try_window_id, display_text_line): Same. * xdisp.c (display_string): Add new variable `f', to be W's frame. Use it to set desired_glyphs, and to get the frame's width to decide whether or not to draw vertical bars. * xdisp.c (display_text_line): If we're using vertical scrollbars, don't draw the vertical bars separating side-by-side windows. (display_string): Same thing. Draw spaces to fill in the part of the mode line that is under the scrollbar in partial-width windows. * xfns.c (Qvertical_scrollbars): New symbol. Use it as the name of the parameter which decides whether or not the frame has scrollbars, instead of Qvertical_scrollbar. (Fx_create_frame): Adjusted accordingly. (syms_of_xfns): Initialize and staticpro Qvertical_scrollbars. (x_set_vertical_scrollbar): Renamed to x_set_vertical_scrollbars. (x_frame_parms): Adjusted accordingly. * xterm.h (CHAR_TO_PIXEL_WIDTH, CHAR_TO_PIXEL_HEIGHT, PIXEL_TO_CHAR_WIDTH, PIXEL_TO_CHAR_HEIGHT): Rewritten, using: (CHAR_TO_PIXEL_ROW, CHAR_TO_PIXEL_COL, PIXEL_TO_CHAR_ROW, PIXEL_TO_CHAR_COL): New macros. * xfns.c [not HAVE_X11] (Fx_create_frame): Use the PIXEL_TO_CHAR_{HEIGHT,WIDTH} macros to figure the frame's character size, and the CHAR_TO_PIXEL* macros for vice versa. * xterm.c (XTwrite_glyphs, XTclear_end_of_line, stufflines, scraplines, dumprectangle, pixel_to_glyph_coords, x_draw_box, clear_cursor, x_display_bar_cursor, x_draw_single_glyph, x_set_mouse_position): Use the CHAR_TO_PIXEL_* macros. * xterm.c (x_wm_set_size_hint): The max_width and max_height members of the size_hints are expressed in pixels, not columns. * xterm.c (x_set_window_size): Remove ibw var; it's not used. Set FRAME_WIDTH (f) to cols instead