1. 11 Sep, 2013 1 commit
    • Dmitry Antipov's avatar
      Ifdef away frame tool bar code when it is not really used. · 742516e0
      Dmitry Antipov authored
      * frame.h (struct frame) [HAVE_WINDOW_SYSTEM && !USE_GTK && !HAVE_NS]:
      Move tool_bar_window, desired_tool_bar_string, current_tool_bar_string
      and minimize_tool_bar_window_p under the above.
      (fset_current_tool_bar_string, fset_desired_tool_bar_string)
      (fset_tool_bar_window): Likewise.
      * dispnew.c (clear_current_matrices, clear_desired_matrices)
      (adjust_frame_glyphs_for_window_redisplay, free_glyphs, update_frame)
      (change_frame_size_1):
      * window.c (window_from_coordinates, Frecenter): Adjust users.
      * window.h (WINDOW_TOOL_BAR_P): Define to zero when frame tool bar
      code is not really used.
      * xdisp.c (build_desired_tool_bar_string, display_tool_bar_line)
      (tool_bar_lines_needed, MAX_FRAME_TOOL_BAR_HEIGHT, tool_bar_item_info)
      (get_tool_bar_item, handle_tool_bar_click, note_tool_bar_highlight)
      [!USE_GTK && !HAVE_NS]: Define as such.
      (Ftool_bar_lines_needed, redisplay_tool_bar, show_mouse_face)
      (note_mouse_highlight, expose_frame):
      * xfns.c (x_set_tool_bar_lines):
      * xterm.c (handle_one_xevent): Adjust users.
      742516e0
  2. 09 Sep, 2013 2 commits
    • Dmitry Antipov's avatar
      Review and drop old frame resize hack. · 0750a308
      Dmitry Antipov authored
      * frame.h (struct frame): Remove force_flush_display_p.
      * dispnew.c (update_frame): Adjust user and don't call
      flush_frame here.  The comment has said that there was an issues
      with redisplaying fringes, but I don't see any differences with
      and without this hack.  Hopefully we can continue without it.
      * xdisp.c (clear_garbaged_frames): Adjust user and do not clear
      current frame matrices twice if resized_p is set.
      0750a308
    • Dmitry Antipov's avatar
      Cleanup frame flushing. · fd462129
      Dmitry Antipov authored
      * dispextern.h (struct redisplay_interface): Drop
      flush_display_optional because flush_display is enough
      for X and flushing via RIF is just a no-op for others.
      * frame.h (flush_frame): New function.
      * dispnew.c (update_frame):
      * minibuf.c (read_minibuf):
      * xdisp.c (echo_area_display, redisplay_preserve_echo_area):
      Use it.
      * keyboard.c (detect_input_pending_run_timers): Do not flush
      all frames but selected one in redisplay_preserve_echo_area.
      * nsterm.m (ns_flush): Remove no-op.
      (ns_redisplay_interface): Adjust user.
      * w32term.h (x_flush): Remove no-op.
      (w32_redisplay_interface): Adjust user.
      * xterm.c (x_flush): Simplify because we do not flush all
      frames at once any more.  Adjust comment.
      (x_redisplay_interface): Adjust user.
      fd462129
  3. 06 Sep, 2013 1 commit
    • Dmitry Antipov's avatar
      Attempt to make redisplay more selective when changing fonts. · bd0443bb
      Dmitry Antipov authored
      * frame.h (struct frame): New bitfield fonts_changed.
      * dispextern.h (fonts_changed_p, adjust_glyphs): Remove declaration.
      (adjust_frame_glyphs): Add prototype.
      * dispnew.c (fonts_changed_p): Remove.
      (adjust_glyphs): Remove becase we do not
      adjust matrices on all frames at once any more.
      (adjust_frame_glyphs): Block and unblock input here.
      (adjust_glyph_matrix): Use fonts_changed.
      (change_frame_size_1): Use adjust_frame_glyphs.
      * font.c (font_open_entity): Use fonts_changed.
      * frame.c (set_menu_bar_lines, Fmake_terminal_frame):
      * w32fns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
      * window.c (Fdelete_other_windows_internal, Fwindow_resize_apply)
      (Fsplit_window_internal, Fdelete_window_internal, grow_mini_window)
      (shrink_mini_window, Fresize_mini_window_internal)
      (window_scroll_pixel_based, Fset_window_configuration)
      (apply_window_adjustment, Fset_window_vscroll):
      * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines, Fx_show_tip):
      Use adjust_frame_glyphs.
      * xdisp.c (redisplay_tool_bar, redisplay_window, try_window)
      (try_window_reusing_current_matrix, try_window_id, display_line)
      (IT_EXPAND_MATRIX_WIDTH): Use fonts_changed.
      (redisplay_internal): Consider fonts_changed and adjust frame
      matrices for each frame only if the frame is visible.  If font
      has been changed on some frame during full redisplay, retry
      only visible frames where the font has been actually changed.
      bd0443bb
  4. 02 Sep, 2013 1 commit
  5. 01 Sep, 2013 1 commit
  6. 28 Aug, 2013 2 commits
    • Dmitry Antipov's avatar
      Prefer enum glyph_row_area to int where appropriate. · c3c4768d
      Dmitry Antipov authored
      * dispextern.h (enum glyph_row_area): Add ANY_AREA member.
      Fix comment.
      (window_box, window_box_width, window_box_left, window_box_left_offset)
      (window_box_right, window_box_right_offset): Adjust prototypes.
      * xdisp.c (window_box, window_box_width, window_box_left)
      (window_box_left_offset, window_box_right, window_box_right_offset):
      Use enum glyph_row_area.  Adjust users and tweak comment where needed.
      (window_box_edges): Likewise.  Lost 2nd arg since it is always ANY_AREA.
      * nsterm.m (ns_clip_to_row):
      * w32term.c (w32_clip_to_row):
      * xterm.c (x_clip_to_row): Likewise.
      c3c4768d
    • Dmitry Antipov's avatar
      Redesign redisplay interface to drop global output_cursor. · f60e429a
      Dmitry Antipov authored
      * dispextern.h (struct redisplay_interface): Remove cursor_to member.
      (toplevel): Remove declaration of output_cursor.
      (set_output_cursor, x_cursor_to): Remove prototype.
      * window.h (struct window): New member output_cursor.
      (output_cursor_to): New function to replace RIF member.
      * dispnew.c (redraw_overlapped_rows, update_marginal_area)
      (update_text_area, set_window_cursor_after_update): Use it.
      * xdisp.c (output_cursor, set_output_cursor, x_cursor_to): Remove.
      (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
      * nsterm.m (ns_update_window_begin, ns_update_window_end):
      * w32term.c (x_update_window_begin, x_update_window_end):
      * xterm.c (x_update_window_begin, x_update_window_end):
      Adjust to use per-window output cursor.
      f60e429a
  7. 27 Aug, 2013 1 commit
    • Paul Eggert's avatar
      Simplify EMACS_TIME-related code. · 43aac990
      Paul Eggert authored
      This portability layer is no longer needed, since Emacs has been
      using struct timespec as a portability layer for some time.
      Merge from gnulib, incorporating:
      2013-08-27 timespec: new convenience constants and function
      * src/atimer.h, src/buffer.h, src/dispextern.h, src/xgselect.h:
      Include <time.h> rather than "systime.h"; that's all that's needed now.
      * src/dispnew.c: Include <timespec.h> rather than "systime.h";
      that's all that's needed now.
      * src/systime.h (EMACS_TIME): Remove.  All uses changed to struct timespec.
      (EMACS_TIME_RESOLUTION): Remove.  All uses changed to
      TIMESPEC_RESOLUTION.
      (LOG10_EMACS_TIME_RESOLUTION): Remove.  All uses changed to
      LOG10_TIMESPEC_RESOLUTION.
      (EMACS_SECS, emacs_secs_addr): Remove.  All uses changed to tv_sec.
      (EMACS_NSECS): Remove.  All uses changed to tv_nsec.
      (make_emacs_time): Remove.  All used changed to make_timespec.
      (invalid_timespec): Rename from invalid_emacs_time.  All uses changed.
      (current_timespec): Rename from current_emacs_time.  All uses changed.
      (add_emacs_time): Remove.  All uses changed to timespec_add.
      (sub_emacs_time): Remove.  All uses change dot timespec_sub.
      (EMACS_TIME_SIGN): Remove.  All uses changed to timespec_sign.
      (timespec_valid_p): Rename from EMACS_TIME_VALID_P.  All uses changed.
      (EMACS_TIME_FROM_DOUBLE): Remove.  All uses changed to dtotimespec.
      (EMACS_TIME_TO_DOUBLE): Remove.  All uses changed to timespectod.
      (current_timespec): Rename from current_emacs_time.  All uses changed.
      (EMACS_TIME_EQ, EMACS_TIME_LT, EMACS_TIME_LE): Remove.  All uses
      changed to timespec_cmp.
      * src/xgselect.c: Include <timespec.h>, since our .h files don't.
      43aac990
  8. 23 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      Redesign redisplay interface to drop updated_row and updated_area. · 7f780da6
      Dmitry Antipov authored
      * dispextern.h (updated_row, updated_area): Remove declaration.
      (struct redisplay_interface): Pass glyph row and row area parameters
      to write_glyphs, insert_glyphs and clear_end_of_line functions.
      (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
      Adjust prototypes.
      * dispnew.c (updated_row, updated_area): Remove.
      (redraw_overlapped_rows, update_window_line): Adjust user.
      (update_marginal_area, update_text_area): Likewise.  Pass updated row
      as a parameter.  Prefer enum glyph_row_area to int where appropriate.
      * xdisp.c (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
      Adjust users.
      7f780da6
  9. 14 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      * window.h (struct window): Convert window_end_pos and · 02455cb6
      Dmitry Antipov authored
      window_end_vpos from Lisp_Object to ptrdiff_t and int, respectively.
      (wset_window_end_pos, wset_window_end_vpos): Remove.
      * dispnew.c (adjust_glyph_matrix):
      * window.c (Fwindow_end, replace_window, set_window_buffer)
      (make_window):
      * xdisp.c (check_window_end, move_it_to, redisplay_internal)
      (set_vertical_scroll_bar, redisplay_window, try_window)
      (try_window_reusing_current_matrix, find_first_unchanged_at_end_row)
      (try_window_id, decode_mode_spec, mouse_face_from_buffer_pos)
      (note_mouse_highlight): Adjust users.
      (try_cursor_movement): Likewise.  Convert old precondition to eassert.
      Add comment.
      02455cb6
  10. 13 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      * window.h (struct window): Convert left_margin_cols and · eeaf9bf3
      Dmitry Antipov authored
      right_margin_cols from Lisp_Objects to integers.  Adjust comment.
      (WINDOW_LEFT_MARGIN_COLS, WINDOW_RIGHT_MARGIN_COLS)
      (WINDOW_LEFT_MARGIN_WIDTH, WINDOW_RIGHT_MARGIN_WIDTH):
      Adjust users.
      * dispnew.c (margin_glyphs_to_reserve): Convert 3rd arg to int.
      Adjust comment.
      (showing_window_margins_p, update_window_line, update_frame_1):
      * fringe.c (draw_fringe_bitmap_1):
      * xdisp.c (window_box_width): Adjust users.
      * window.c (wset_left_margin_cols, wset_right_margin_cols): Remove.
      (adjust_window_margins, set_window_buffer, Fsplit_window_internal):
      Use direct assignment.
      (Fset_window_configuration, save_window_save, Fwindow_margins):
      Convert Lisp_Object to integer and back where appropriate.
      (Fset_window_margins): Adjust user.  Return t if any margin
      was actually changed, and mention this in docstring.
      eeaf9bf3
  11. 08 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      Redesign redisplay interface to drop global variable updated_window. · 65620264
      Dmitry Antipov authored
      Always pass currently updated window as a parameter to update routines.
      * dispextern.h (updated_window): Remove declaration.
      (struct redisplay_interface): Pass window parameter to
      write_glyphs, insert_glyphs, clear_end_of_line, cursor_to
      and after_update_window_hook.
      (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line, x_cursor_to):
      Adjust prototypes.
      * dispnew.c (updated_window): Remove.
      (redraw_overlapped_rows, update_marginal_area, update_text_area)
      (update_window_line): Adjust to match redisplay interface changes.
      * nsterm.m (ns_update_window_begin, ns_update_window_end)
      (ns_scroll_run, ns_after_update_window_line):
      * w32term.c (x_update_window_begin, x_update_window_end)
      (x_after_update_window_line, x_scroll_run):
      * xterm.c (x_update_window_begin, x_update_window_end)
      (x_after_update_window_line, x_scroll_run):
      * xdisp.c (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
      Likewise.  Adjust comments where appropriate.
      (x_cursor_to): Simplify because this is always called during window
      update (but install debugging check anyway).
      (expose_window): Check must_be_updated_p flag to see whether this
      function is called during window update.
      65620264
  12. 05 Aug, 2013 1 commit
    • Dmitry Antipov's avatar
      New macro to iterate over live buffers similar to frames. · 8f3a2c26
      Dmitry Antipov authored
      * buffer.h (FOR_EACH_LIVE_BUFFER): New macro.
      (Vbuffer_alist, Qpriority, Qbefore_string, Qafter_string):
      Declare buffer-related variables here to offload lisp.h.
      * buffer.c (Vbuffer_alist): Adjust comment.
      (Fget_file_buffer, get_truename_buffer, Fother_buffer)
      (other_buffer_safely):
      * data.c (store_symval_forwarding):
      * dispnew.c (Fframe_or_buffer_changed_p):
      * fileio.c (Fdo_auto_save):
      * filelock.c (unlock_all_files):
      * minibuf.c (read_minibuf): Use FOR_EACH_LIVE_BUFFER.
      8f3a2c26
  13. 04 Aug, 2013 1 commit
  14. 23 Jul, 2013 1 commit
    • Paul Eggert's avatar
      Port to GNU/Linux systems with tinfo but not ncurses. · a29c3e6d
      Paul Eggert authored
      * configure.ac (USE_NCURSES): New symbol.
      * src/dispnew.c (init_display): Depend on USE_NCURSES, not GNU_LINUX,
      to decide whether ncurses is being used.  Without this change,
      GCC complains about tgetent not being declared, on a system
      that has tinfo installed but ncurses not installed.
      a29c3e6d
  15. 16 Jul, 2013 2 commits
    • Paul Eggert's avatar
      * fileio.c (report_file_errno): Fix errno reporting bug. · a9757f6a
      Paul Eggert authored
      If the file name is neither null nor a pair, package it up as a
      singleton list.  All callers changed, both to this function and to
      report_file_error.  This fixes a bug where the memory allocator
      invoked by list1 set errno so that the immediately following
      report_file_error reported the wrong errno value.
      a9757f6a
    • Paul Eggert's avatar
      Prefer list1 (X) to Fcons (X, Qnil) when building lists. · 6c6f1994
      Paul Eggert authored
      This makes the code easier to read and the executable a bit smaller.
      Do not replace all calls to Fcons that happen to create lists,
      just calls that are intended to create lists.  For example, when
      creating an alist that maps FOO to nil, use list1 (Fcons (FOO, Qnil))
      rather than list1 (list1 (FOO)) or Fcons (Fcons (FOO, Qnil), Qnil).
      Similarly for list2 through list5.
      * buffer.c (Fget_buffer_create, Fmake_indirect_buffer):
      * bytecode.c (exec_byte_code):
      * callint.c (quotify_arg, Fcall_interactively):
      * callproc.c (Fcall_process, create_temp_file):
      * charset.c (load_charset_map_from_file)
      (Fdefine_charset_internal, init_charset):
      * coding.c (get_translation_table, detect_coding_system)
      (Fcheck_coding_systems_region)
      (Fset_terminal_coding_system_internal)
      (Fdefine_coding_system_internal, Fdefine_coding_system_alias):
      * composite.c (update_compositions, Ffind_composition_internal):
      * dired.c (directory_files_internal, file_name_completion)
      (Fsystem_users):
      * dispnew.c (Fopen_termscript, bitch_at_user, init_display):
      * doc.c (Fsnarf_documentation):
      * editfns.c (Fmessage_box):
      * emacs.c (main):
      * eval.c (do_debug_on_call, signal_error, maybe_call_debugger)
      (Feval, eval_sub, Ffuncall, apply_lambda):
      * fileio.c (make_temp_name, Fcopy_file, Faccess_file)
      (Fset_file_selinux_context, Fset_file_acl, Fset_file_modes)
      (Fset_file_times, Finsert_file_contents)
      (Fchoose_write_coding_system, Fwrite_region):
      * fns.c (Flax_plist_put, Fyes_or_no_p, syms_of_fns):
      * font.c (font_registry_charsets, font_parse_fcname)
      (font_prepare_cache, font_update_drivers, Flist_fonts):
      * fontset.c (Fset_fontset_font, Ffontset_info, syms_of_fontset):
      * frame.c (make_frame, Fmake_terminal_frame)
      (x_set_frame_parameters, x_report_frame_params)
      (x_default_parameter, Fx_parse_geometry):
      * ftfont.c (syms_of_ftfont):
      * image.c (gif_load):
      * keyboard.c (command_loop_1):
      * keymap.c (Fmake_keymap, Fmake_sparse_keymap, access_keymap_1)
      (Fcopy_keymap, append_key, Fcurrent_active_maps)
      (Fminor_mode_key_binding, accessible_keymaps_1)
      (Faccessible_keymaps, Fwhere_is_internal):
      * lread.c (read_emacs_mule_char):
      * menu.c (find_and_return_menu_selection):
      * minibuf.c (get_minibuffer):
      * nsfns.m (Fns_perform_service):
      * nsfont.m (ns_script_to_charset):
      * nsmenu.m (ns_popup_dialog):
      * nsselect.m (ns_get_local_selection, ns_string_from_pasteboard)
      (Fx_own_selection_internal):
      * nsterm.m (append2):
      * print.c (Fredirect_debugging_output)
      (print_prune_string_charset):
      * process.c (Fdelete_process, Fprocess_contact)
      (Fformat_network_address, set_socket_option)
      (read_and_dispose_of_process_output, write_queue_push)
      (send_process, exec_sentinel):
      * sound.c (Fplay_sound_internal):
      * textprop.c (validate_plist, add_properties)
      (Fput_text_property, Fadd_face_text_property)
      (copy_text_properties, text_property_list, syms_of_textprop):
      * unexaix.c (report_error):
      * unexcoff.c (report_error):
      * unexsol.c (unexec):
      * xdisp.c (redisplay_tool_bar, store_mode_line_string)
      (Fformat_mode_line, syms_of_xdisp):
      * xfaces.c (set_font_frame_param)
      (Finternal_lisp_face_attribute_values)
      (Finternal_merge_in_global_face, syms_of_xfaces):
      * xfns.c (x_default_scroll_bar_color_parameter)
      (x_default_font_parameter, x_create_tip_frame):
      * xfont.c (xfont_supported_scripts):
      * xmenu.c (Fx_popup_dialog, xmenu_show, xdialog_show)
      (menu_help_callback, xmenu_show):
      * xml.c (make_dom):
      * xterm.c (set_wm_state):
      Prefer list1 (FOO) to Fcons (FOO, Qnil) when creating a list,
      and similarly for list2 through list5.
      6c6f1994
  16. 10 Jul, 2013 1 commit
    • Paul Eggert's avatar
      Port to C89. · 29abe551
      Paul Eggert authored
      * lib-src/ebrowse.c (USAGE): Remove macro with too-long string literal ...
      (usage_message): ... and replace it with this new static constant
      containing multiple literals.  All uses changed.
      * lib-src/emacsclient.c (print_help_and_exit):
      Rewrite to avoid string literals longer than the C89 limits.
      (start_daemon_and_retry_set_socket):
      Rewrite to avoid non-constant array initializer.
      * lib-src/make-docfile.c (enum global_type): Omit trailing comma.
      * src/bytecode.c (BYTE_CODE_THREADED): Do not define if __STRICT_ANSI__.
      (B__dummy__): New dummy symbol, to pacify C89.
      * src/dbusbind.c (XD_DEBUG_MESSAGE): Omit debugging on C89 hosts, since
      they can't grok varargs macros.
      * src/dispnew.c (add_window_display_history)
      (add_frame_display_history):
      * src/print.c (print_object):
      * src/xdisp.c (debug_method_add):
      Use %p printf format only for void pointers.
      * src/emacs.c (usage_message): New constant, replacing ...
      (USAGE1, USAGE2, USAGE3): Remove; they were too long for C89.
      (main): Adjust to usage reorg.
      * src/fns.c (syms_of_fns):
      * src/profiler.c (syms_of_profiler):
      Don't use non-constant struct initializers.
      * src/gnutls.h (gnutls_initstage_t):
      * src/lisp.h (enum Lisp_Fwd_Type):
      * src/lread.c (lisp_file_lexically_bound_p):
      * src/xsettings.c (anonymous enum):
      Remove trailing comma.
      * src/xsettings.c (apply_xft_settings): Use %f, not %lf; %lf is a C99ism.
      * src/lisp.h (ENUM_BF): Use unsigned if pedantic.
      (DEFUN_FUNCTION_INIT): New macro, that falls back on a cast if pre-C99.
      (DEFUN): Use it.
      * src/regex.c (const_re_char): New type, to pacify strict C89.
      All uses of 'const re_char' replaced to use it.
      * src/regex.h (_Restrict_): Rename from __restrict, to avoid clash
      with glibc when strict C89.  This change is imported from gnulib.
      All uses changed.
      (_Restrict_arr_): Rename from __restrict_arr, similarly.
      * src/sysdep.c (time_from_jiffies) [!HAVE_LONG_LONG_INT]:
      Omit GNU_LINUX implementation, since it requires long long.
      * src/xterm.c (x_draw_underwave):
      Do not assume the traditional order of struct's members.
      (x_term_init): Rewrite to avoid the need for non-constant structure
      initializers.
      29abe551
  17. 06 Jul, 2013 1 commit
    • Paul Eggert's avatar
      Use emacs_open more consistently when opening files. · 406af475
      Paul Eggert authored
      This handles EINTR more consistently now, and makes it easier
      to introduce other uniform changes to file descriptor handling.
      * src/systdio.h: New file.
      * src/buffer.c (mmap_init):
      * cygw32.c (chdir_to_default_directory):
      * dispnew.c (Fopen_termscript):
      * emacs.c (Fdaemon_initialized):
      * fileio.c (Fdo_auto_save):
      * image.c (slurp_file, png_load_body, jpeg_load_body):
      * keyboard.c (Fopen_dribble_file):
      * lread.c (Fload):
      * print.c (Fredirect_debugging_output):
      * sysdep.c (get_up_time, procfs_ttyname, procfs_get_total_memory):
      * termcap.c (tgetent):
      * unexaix.c, unexcoff.c (unexec, adjust_lnnoptrs):
      * unexcw.c, unexelf.c, unexhp9k800.c, unexmacosx.c (unexec):
      * w32term.c (w32_initialize) [CYGWIN]:
      * xfaces.c (Fx_load_color_file):
      Use emacs_open instead of plain open, and emacs_fopen instead of
      plain fopen.
      * dispnew.c, fileio.c, image.c, keyboard.c, lread.c, print.c, sysdep.c:
      * xfaces.c: Include sysstdio.h rather than stdio.h, for emacs_fopen.
      * callproc.c (default_output_mode): New constant.
      (Fcall_process): Use it to call emacs_open instead of plain creat.
      * dispnew.c (Fopen_termscript): Fix minor race in opening termscript.
      * sysdep.c (emacs_open): Add commentary and don't call file name "path".
      (emacs_fopen): New function.
      * unexaix.c, unexcoff.c, unexelf.c, unexhp9k800.c, unexmacosx.c:
      Include <lisp.h>, for emacs_open.
      * unexelf.c (fatal): Remove decl; not needed with <lisp.h> included.
      406af475
  18. 02 Apr, 2013 1 commit
    • Paul Eggert's avatar
      Prefer < to > in range checks such as 0 <= i && i < N. · 7216e43b
      Paul Eggert authored
      This makes it easier to visualize quantities on a number line.
      This patch doesn't apply to all such range checks,
      only to the range checks affected by the 2013-03-24 change.
      This patch reverts most of the 2013-03-24 change.
      * alloc.c (xpalloc, Fgarbage_collect):
      * ccl.c (ccl_driver, resolve_symbol_ccl_program):
      * character.c (string_escape_byte8):
      * charset.c (read_hex):
      * data.c (cons_to_unsigned):
      * dispnew.c (update_frame_1):
      * doc.c (Fsubstitute_command_keys):
      * doprnt.c (doprnt):
      * editfns.c (hi_time, decode_time_components):
      * fileio.c (file_offset):
      * fns.c (larger_vector, make_hash_table, Fmake_hash_table):
      * font.c (font_intern_prop):
      * frame.c (x_set_alpha):
      * gtkutil.c (get_utf8_string):
      * indent.c (check_display_width):
      * keymap.c (Fkey_description):
      * lisp.h (FIXNUM_OVERFLOW_P, vcopy):
      * lread.c (read1):
      * minibuf.c (read_minibuf_noninteractive):
      * process.c (wait_reading_process_output):
      * search.c (Freplace_match):
      * window.c (get_phys_cursor_glyph):
      * xdisp.c (redisplay_internal):
      * xsmfns.c (smc_save_yourself_CB):
      Prefer < to > for range checks.
      * dispnew.c (sit_for): Don't mishandle NaNs.
      This fixes a bug introduced in the 2013-03-24 change.
      * editfns.c (decode_time_components): Don't hoist comparison.
      This fixes another bug introduced in the 2013-03-24 change.
      7216e43b
  19. 28 Mar, 2013 1 commit
    • Dmitry Antipov's avatar
      * window.h (struct window): Replace hchild, vchild and buffer slots · e74aeda8
      Dmitry Antipov authored
      with the only contents slot.  This is possible because each valid
      window may have either the child window (in vertical or horizontal
      combination) or buffer to display (for the leaf window).  Using that,
      a lof of operations to traverse and/or change window hierarchies may
      be simplified.  New member horizontal is used to distinguish between
      horizontal and vertical combinations of internal windows.
      (WINDOW_LEAF_P, WINDOW_HORIZONTAL_COMBINATION_P)
      (WINDOW_VERTICAL_COMBINATION_P): New macros.
      (WINDOW_VALID_P, WINDOW_LIVE_P): Adjust to match struct window changes.
      * window.c (wset_hchild, wset_vchild): Remove.  Adjust all users.
      Use contents slot, not buffer, where appropriate.
      (wset_combination): New function.
      (wset_buffer): Add eassert.
      (Fframe_first_window): Simplify the loop reaching first window.
      (Fwindow_buffer): Use WINDOW_LEAF_P.
      (Fwindow_top_child): Use WINDOW_VERTICAL_COMBINATION_P.
      (Fwindow_left_child): Use WINDOW_HORIZONTAL_COMBINATION_P.
      (unshow_buffer): Convert initial debugging check to eassert.
      (replace_window, recombine_windows, Fdelete_other_windows_internal)
      (make_parent_window, window_resize_check, window_resize_apply)
      (resize_frame_windows, Fsplit_window_internal, Fdelete_window_internal)
      (Fset_window_configuration, delete_all_child_windows, save_window_save):
      Adjust to match struct window changes.
      (window_loop): Check for broken markers in CHECK_ALL_WINDOWS.
      (mark_window_cursors_off, count_windows, get_leaf_windows)
      (foreach_window_1): Simplify the loop.
      * alloc.c (mark_object): Do not check for the leaf window because
      internal windows has no glyph matrices anyway.
      * dispnew.c (clear_window_matrices, showing_window_margins_p)
      (allocate_matrices_for_window_redisplay, fake_current_matrices)
      (allocate_matrices_for_frame_redisplay, free_window_matrices)
      (build_frame_matrix_from_window_tree, mirror_make_current)
      (frame_row_to_window, mirror_line_dance, check_window_matrix_pointers)
      (update_window_tree, set_window_update_flags): Simplify the loop.
      (sync_window_with_frame_matrix_rows): Enforce live window.
      Use contents slot, not buffer, where appropriate.
      * frame.c (set_menu_bar_lines_1): Use WINDOW_VERTICAL_COMBINATION_P
      and WINDOW_HORIZONTAL_COMBINATION_P.
      (make_frame_visible_1): Simplify the loop.
      Use contents slot, not buffer, where appropriate.
      * xdisp.c (hscroll_window_tree, mark_window_display_accurate)
      (redisplay_windows, redisplay_mode_lines, update_cursor_in_window_tree)
      (expose_window_tree): Likewise.
      Use contents slot, not buffer, where appropriate.
      * textprop.c (get_char_property_and_overlay): Add CHECK_LIVE_WINDOW
      to avoid deleted windows.  Use contents slot instead of buffer.
      * buffer.c, dispextern.h, editfns.c, fileio.c, font.c, fringe.c:
      * indent.c, insdel.c, keyboard.c, keymap.c, minibuf.c, msdos.c:
      * nsfns.m, nsmenu.m, nsterm.m, print.c, w32fns.c, w32menu.c, xfaces.c:
      * xfns.c, xmenu.c: Use contents slot, not buffer, where appropriate.
      e74aeda8
  20. 24 Mar, 2013 1 commit
    • Andreas Schwab's avatar
      Reorder conditions that are written backwards · 908589fd
      Andreas Schwab authored
      * alloc.c (xpalloc, Fgarbage_collect): Reorder conditions that are
      written backwards.
      * blockinput.h (input_blocked_p): Likewise.
      * bytecode.c (exec_byte_code): Likewise.
      * callproc.c (call_process_kill, call_process_cleanup)
      (Fcall_process): Likewise.
      * ccl.c (ccl_driver, resolve_symbol_ccl_program)
      (Fccl_execute_on_string): Likewise.
      * character.c (string_escape_byte8): Likewise.
      * charset.c (read_hex): Likewise.
      * cm.c (calccost): Likewise.
      * data.c (cons_to_unsigned): Likewise.
      * dired.c (directory_files_internal, file_name_completion):
      Likewise.
      * dispnew.c (scrolling_window, update_frame_1, Fsleep_for)
      (sit_for): Likewise.
      * doc.c (Fsubstitute_command_keys): Likewise.
      * doprnt.c (doprnt): Likewise.
      * editfns.c (hi_time, decode_time_components, Fformat): Likewise.
      * emacsgtkfixed.c: Likewise.
      * fileio.c (file_offset, Fwrite_region): Likewise.
      * floatfns.c (Fexpt, fmod_float): Likewise.
      * fns.c (larger_vector, make_hash_table, Fmake_hash_table):
      Likewise.
      * font.c (font_intern_prop): Likewise.
      * frame.c (x_set_alpha): Likewise.
      * gtkutil.c (get_utf8_string): Likewise.
      * indent.c (check_display_width): Likewise.
      * intervals.c (create_root_interval, rotate_right, rotate_left)
      (split_interval_right, split_interval_left)
      (adjust_intervals_for_insertion, delete_node)
      (interval_deletion_adjustment, adjust_intervals_for_deletion)
      (merge_interval_right, merge_interval_left, copy_intervals)
      (set_intervals_multibyte_1): Likewise.
      * keyboard.c (gobble_input, append_tool_bar_item): Likewise.
      * keymap.c (Fkey_description): Likewise.
      * lisp.h (FIXNUM_OVERFLOW_P, vcopy): Likewise.
      * lread.c (openp, read_integer, read1, string_to_number):
      Likewise.
      * menu.c (ensure_menu_items): Likewise.
      * minibuf.c (read_minibuf_noninteractive): Likewise.
      * print.c (printchar, strout): Likewise.
      * process.c (create_process, Faccept_process_output)
      (wait_reading_process_output, read_process_output, send_process)
      (wait_reading_process_output): Likewise.
      * profiler.c (make_log, handle_profiler_signal): Likewise.
      * regex.c (re_exec): Likewise.
      * regex.h: Likewise.
      * search.c (looking_at_1, Freplace_match): Likewise.
      * sysdep.c (get_child_status, procfs_ttyname)
      (procfs_get_total_memory): Likewise.
      * systime.h (EMACS_TIME_VALID_P): Likewise.
      * term.c (dissociate_if_controlling_tty): Likewise.
      * window.c (get_phys_cursor_glyph): Likewise.
      * xdisp.c (init_iterator, redisplay_internal, redisplay_window)
      (try_window_reusing_current_matrix, try_window_id, pint2hrstr):
      Likewise.
      * xfns.c (Fx_window_property): Likewise.
      * xmenu.c (set_frame_menubar): Likewise.
      * xselect.c (x_get_window_property, x_handle_dnd_message):
      Likewise.
      * xsmfns.c (smc_save_yourself_CB): Likewise.
      * xterm.c (x_scroll_bar_set_handle): Likewise.
      908589fd
  21. 22 Mar, 2013 1 commit
    • Dmitry Antipov's avatar
      * frame.h (struct frame): Put menu_bar_window under #ifdef · 5a49b79c
      Dmitry Antipov authored
      because this member is not needed when X toolkit is in use.
      (fset_menu_bar_window):
      * dispnew.c (clear_current_matrices, clear_desired_matrices)
      (free_glyphs, update_frame):
      * xdisp.c (expose_frame): Likewise.
      (display_menu_bar): Likewise.  Remove redundant eassert.
      * window.h (WINDOW_MENU_BAR_P): Always define to 0 if X
      toolkit is in use.
      5a49b79c
  22. 20 Mar, 2013 1 commit
    • Dmitry Antipov's avatar
      * window.h (struct window): Convert left_col, top_line, total_lines · 5f24fa51
      Dmitry Antipov authored
      and total_cols from Lisp_Objects to integers.  Adjust comments.
      (wset_left_col, wset_top_line, wset_total_cols, wset_total_lines):
      Remove.
      (WINDOW_TOTAL_COLS, WINDOW_TOTAL_LINES, WINDOW_LEFT_EDGE_COL)
      (WINDOW_TOP_EDGE_LINE): Drop Lisp_Object to integer conversion.
      * dispnew.c, frame.c, w32fns.c, window.c, xdisp.c, xfns.c:
      Adjust users where appropriate.
      5f24fa51
  23. 17 Mar, 2013 1 commit
  24. 13 Mar, 2013 1 commit
    • Paul Eggert's avatar
      Static checking by Sun C 5.12. · d9df6f40
      Paul Eggert authored
      * lib-src/etags.c (analyse_regex): Omit unreachable code.
      * src/alloc.c (buffer_memory_full) [REL_ALLOC]:
      * src/bytecode.c (exec_byte_code):
      * src/dispnew.c (init_display):
      * src/eval.c (error):
      * src/fileio.c (Fsubstitute_in_file_name):
      * src/keyboard.c (Fevent_convert_list):
      * src/keymap.c (Fsingle_key_description):
      * src/term.c (maybe_fatal, fatal):
      * src/xfns.c (Fx_display_backing_store, Fx_display_visual_class):
      * src/xsmfns.c (Fhandle_save_session):
      Omit unreachable code.
      * src/keymap.c (map_keymap_char_table_item): Cast void * to
      a function pointer type; the C Standard requires this.
      d9df6f40
  25. 10 Mar, 2013 1 commit
    • Eli Zaretskii's avatar
      Use macros from dispextern.h where appropriate. · 138c0ae8
      Eli Zaretskii authored
       src/xdisp.c (display_tool_bar_line, redisplay_tool_bar)
       (redisplay_internal, set_cursor_from_row, try_window)
       (try_window_id, dump_glyph_row, extend_face_to_end_of_line)
       (display_line, notice_overwritten_cursor)
       (mouse_face_from_buffer_pos, note_mouse_highlight): Use
       MATRIX_ROW_DISPLAYS_TEXT_P.
       (note_mouse_highlight): Use MATRIX_ROW_GLYPH_START.
       (mouse_face_from_string_pos, fast_find_string_pos): Use
       MATRIX_ROW_VPOS.
       src/xfns.c (Fx_show_tip): Use MATRIX_ROW_DISPLAYS_TEXT_P.
       src/w32fns.c (Fx_show_tip): Use MATRIX_ROW_DISPLAYS_TEXT_P.
       src/xdisp.c (try_cursor_movement): Use MATRIX_ROW and
       MATRIX_MODE_LINE_ROW.
       src/dispnew.c (update_window): Use MATRIX_ROW and MATRIX_MODE_LINE_ROW.
      138c0ae8
  26. 13 Feb, 2013 1 commit
    • Paul Eggert's avatar
      Minor getenv-related fixes. · 83be8524
      Paul Eggert authored
      * callproc.c (Fcall_process_region) [!DOS_NT]:
      Avoid unnecessary duplicate call to getenv.
      * callproc.c (init_callproc):
      * dispnew.c (init_display):
      * sysdep.c (sys_subshell):
      Omit unnecessary cast of getenv or egetenv.
      83be8524
  27. 28 Jan, 2013 1 commit
  28. 23 Jan, 2013 1 commit
    • Stefan Monnier's avatar
      * src/xdisp.c (message2, message2_nolog): Remove functions. · b09cca6a
      Stefan Monnier authored
      (message3, message3_nolog): Extract nbytes and multibyteness directly
      from the string.  Change all callers.
      (message3_nolog): Don't set message_enable_multibyte since set_message
      will reset it anyway.
      (message1, message1_nolog): Use message3.
      (vmessage): Use a stack allocated buffer rather than f->message_buf.
      (with_echo_area_buffer): Remove last two arguments.  Update all callers.
      (set_message): Drop all but the second arg, which has to be a string.
      (set_message_1): Simplify now that we know that a1 is NULL and the
      second arg is a string.
      * src/frame.h (struct frame): Remove `message_buf' field.
      Use glyphs_initialized_p instead.
      (FRAME_MESSAGE_BUF): Remove macro.
      * src/w16select.c (Fw16_set_clipboard_data): Prefer message3 to message2.
      * src/lisp.h (message2, message2_nolog): Remove declarations.
      (message3, message3_nolog): Update declarations.
      * src/keyboard.c (read_char_minibuf_menu_text)
      (read_char_minibuf_menu_width): Remove vars.
      (read_char_minibuf_menu_prompt): Rewrite the menu's construction so as
      to correctly handle multibyte strings.
      * src/frame.c (delete_frame): Don't free message_buf any more.
      * src/editfns.c (message_text, message_length): Remove vars.
      (Fmessage_box): Don't copy the Lisp string's bytes any longer.
      * src/fileio.c (auto_save_error): Use message3 instead of message2.
      * src/dispnew.c (adjust_frame_message_buffer): Remove function.
      b09cca6a
  29. 22 Jan, 2013 1 commit
    • Dmitry Antipov's avatar
      * window.h (struct window): Change window_end_valid member from · 9d93ce29
      Dmitry Antipov authored
      Lisp_Object to a bitfield.  Adjust comments.
      (wset_window_end_valid): Remove.
      * window.c (adjust_window_count): Clear window_end_valid.
      (Fwindow_end): Adjust user.  Remove ancient #if 0 code.
      (Fwindow_line_height, set_window_buffer, Frecenter)
      (Fsplit_window_internal, Fdelete_other_windows_internal)
      (Fset_window_fringes, Fset_window_scroll_bars): Adjust users.
      * dispnew.c (adjust_glyph_matrix, clear_window_matrices): Likewise.
      * xdisp.c (check_window_end, reconsider_clip_changes)
      (redisplay_internal, mark_window_display_accurate_1, redisplay_window)
      (try_window, try_window_reusing_current_matrix, note_mouse_highlight)
      (find_first_unchanged_at_end_row, try_window_id): Likewise.
      9d93ce29
  30. 01 Jan, 2013 1 commit
  31. 14 Dec, 2012 1 commit
    • Paul Eggert's avatar
      Spelling fixes. · cccaebd2
      Paul Eggert authored
      My favorite was that the word "dictionary" was misspelled.
      Also, correct the title in the DeRemer & Pennello 1982 citation,
      and add a URL.
      cccaebd2
  32. 12 Dec, 2012 1 commit
  33. 13 Nov, 2012 1 commit
    • Dmitry Antipov's avatar
      Omit glyphs initialization at startup. · 2a14f83b
      Dmitry Antipov authored
      * dispnew.c (glyphs_initialized_initially_p): Remove.
      (adjust_frame_glyphs_initially): Likewise.  Adjust users.
      (Fredraw_frame): Move actual code from here...
      (redraw_here): ...to here.  Add eassert.  Adjust comment.
      (Fredraw_display): Use redraw_frame.
      * xdisp.c (clear_garbaged_frames): Likewise.
      2a14f83b
  34. 06 Nov, 2012 1 commit
    • Dmitry Antipov's avatar
      Widely used frame validity and checking functions. · d9f07150
      Dmitry Antipov authored
      * frame.h (decode_live_frame, decode_any_frame): Add prototypes.
      * frame.c (decode_live_frame, decode_any_frame): New functions.
      (delete_frame, Fredirect_frame_focus, Fframe_parameters)
      (Fframe_parameter, Fframe_char_height, Fframe_char_width)
      (Fframe_pixel_height, Fframe_pixel_width, Ftool_bar_pixel_width)
      (Fframe_pointer_visible_p): Use decode_any_frame.
      (Fmake_frame_visible, Fmake_frame_invisible, Ficonify_frame)
      (Fraise_frame, Flower_frame, Fmodify_frame_parameters)
      (Fset_frame_height, Fset_frame_width): Use decode_live_frame.
      (Fframe_focus): Likewise.  Allow zero number of arguments.
      Adjust docstring.
      (frame_buffer_list, frame_buffer_predicate): Remove.
      * lisp.h (frame_buffer_predicate): Remove prototype.
      * buffer.c (Fother_buffer): Use decode_any_frame.
      * xdisp.c (Ftool_bar_lines_needed): Likewise.
      * xfaces.c (Fcolor_gray_p, Fcolor_supported_p): Likewise.
      * font.c (Ffont_face_attributes, Ffont_family_list, Fopen_font)
      (Fclose_font, Ffont_info): Use decode_live_frame.
      * fontset.c (check_fontset_name): Likewise.
      * terminal.c (Fframe_terminal): Likewise.
      * w32fns.c (check_x_frame): Likewise.
      * window.c (Fminibuffer_window, Fwindow_at)
      (Fcurrent_window_configuration): Likewise.
      (Frun_window_configuration_change_hook, Fwindow_resize_apply):
      Likewise.  Allow zero number of arguments.  Adjust docstring.
      * dispnew.c (Fredraw_frame): Likewise.
      * xfaces.c (frame_or_selected_frame): Remove.
      (Fx_list_fonts, Finternal_get_lisp_face_attribute, Fface_font)
      (Finternal_lisp_face_equal_p, Finternal_lisp_face_empty_p)
      (Fframe_face_alist): Use decode_live_frame.
      * xfns.c (check_x_frame): Likewise.
      d9f07150
  35. 05 Nov, 2012 1 commit
    • Paul Eggert's avatar
      Simplify by assuming __fpending. · 8148369c
      Paul Eggert authored
      Now that Emacs is using the gnulib fpending module,
      there's no need for Emacs to have a separate implementation.
      * configure.ac (stdio_ext.h, __fpending): Remove now-duplicate checks.
      (PENDING_OUTPUT_COUNT, DISPNEW_NEEDS_STDIO_EXT): Remove.
      * admin/CPP-DEFINES (PENDING_OUTPUT_COUNT): Remove.
      * src/dispnew.c: Include <fpending.h>, not <stdio_ext.h>.
      (update_frame_1): Use __fpending, not PENDING_OUTPUT_COUNT.
      Do not assume that __fpending's result fits in int.
      8148369c
  36. 04 Nov, 2012 1 commit
    • Paul Eggert's avatar
      Remove EMACS_OUTQSIZE+sleep hack. · 06b63c9b
      Paul Eggert authored
      * dispnew.c (update_frame_1): Remove hack for terminals slower
      than 2400 bps, which throttled Emacs by having it sleep.  This
      code hasn't worked since at least 2007, when the multi-tty stuff
      was added, and anyway those old terminals are long dead.
      * systty.h (EMACS_OUTQSIZE): Remove; unused.  The macro isn't used even
      without the dispnew.c change, as dispnew.c doesn't include systty.h.
      06b63c9b
  37. 02 Nov, 2012 1 commit
    • Dmitry Antipov's avatar
      Window-related stuff cleanup here and there. · b9e9df47
      Dmitry Antipov authored
      * dispnew.c (Finternal_show_cursor, Finternal_show_cursor_p):
      Use decode_any_window.
      * fringe.c (Ffringe_bitmaps_at_pos): Likewise.
      * xdisp.c (Fformat_mode_line): Likewise.
      * font.c (Ffont_at): Use decode_live_window.
      * indent.c (Fcompute_motion, Fvertical_motion): Likewise.
      * window.c (decode_next_window_args): Likewise.
      (decode_any_window): Remove static.
      * window.h (decode_any_window): Add prototype.
      * lisp.h (CHECK_VALID_WINDOW, CHECK_LIVE_WINDOW): Move from here...
      * window.h: ...to here, redefine via WINDOW_VALID_P and WINDOW_LIVE_P,
      respectively.
      b9e9df47