1. 30 Sep, 2015 3 commits
  2. 16 Sep, 2015 2 commits
    • Paul Eggert's avatar
      Omit unnecessary \ before paren in C docstrings · 032ce1c7
      Paul Eggert authored
      Although \( is needed in docstrings in Elisp code, it is not needed in
      docstrings in C code, since C function definitiions do not start with
      a parenthesis.  The backslashes made the docstrings a bit harder to
      read and to format in columns.  Also, some C docstrings had ( in
      column 1 and this did not appear to be causing any problems.  So,
      simplify C docstrings by replacing \( with ( and \) with ).
      032ce1c7
    • Paul Eggert's avatar
      Add -Wswitch to --enable-gcc-warnings · 8865587c
      Paul Eggert authored
      Make --enable-gcc-warnings a bit pickier, by also using -Wswitch.
      * configure.ac (WERROR_CFLAGS): Don’t add -Wno-switch.
      * lib-src/etags.c (main, consider_token, C_entries):
      * src/coding.c (encode_invocation_designation):
      * src/data.c (Ftype_of):
      * src/eval.c (Fdefvaralias, default_toplevel_binding)
      (Fbacktrace__locals, mark_specpdl):
      * src/lisp.h (record_xmalloc):
      * src/syntax.c (scan_lists, scan_sexps_forward):
      * src/window.c (window_relative_x_coord):
      * src/xdisp.c (push_it, pop_it):
      * src/xterm.c (xg_scroll_callback, x_check_fullscreen):
      Error out or do nothing (as appropriate) if a switch statement
      with an enum value does not cover all of the enum.
      * src/dispextern.h (struct iterator_stack_entry.u.comp):
      Remove unused member discovered by using -Wswitch.
      * src/lisp.h (record_xmalloc): Add a ‘+ 0’ to pacify -Wswitch.
      * src/vm-limit.c (check_memory_limits):
      Simplify warning-diagnostic computation by using a table.
      8865587c
  3. 27 Aug, 2015 1 commit
    • Paul Eggert's avatar
      Assume GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS · 60d1b187
      Paul Eggert authored
      This removes the need for GCPRO1 etc.  Suggested by Stefan Monnier in:
      http://lists.gnu.org/archive/html/emacs-devel/2015-08/msg00918.html
      * doc/lispref/internals.texi (Writing Emacs Primitives):
      * etc/NEWS:
      Document the change.
      * src/alloc.c (gcprolist, dump_zombies, MAX_ZOMBIES, zombies)
      (nzombies, ngcs, avg_zombies, max_live, max_zombies, avg_live)
      (Fgc_status, check_gcpros, relocatable_string_data_p, gc-precise):
      * src/bytecode.c (mark_byte_stack) [BYTE_MARK_STACK]:
      * src/eval.c (gcpro_level) [DEBUG_GCPRO]:
      * src/lisp.h (struct handler.gcpro, struct gcpro, GC_MARK_STACK)
      (GC_USE_GCPROS_AS_BEFORE, GC_MAKE_GCPROS_NOOPS)
      (GC_MARK_STACK_CHECK_GCPROS, GC_USE_GCPROS_CHECK_ZOMBIES)
      (BYTE_MARK_STACK, GCPRO1, GCPRO2, GCPRO3, GCPRO4, GCPRO5, GCPRO6)
      (GCPRO7, UNGCPRO, RETURN_UNGCPRO):
      Remove.  All uses removed.  The code now assumes
      GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS.
      * src/bytecode.c (relocate_byte_stack):
      Rename from unmark_byte_stack, since it now only relocates.
      All callers changed.
      * src/frame.c (make_frame): Add an IF_LINT to pacify GCC 5.2
      with GCPROs removed.
      * src/systime.h: Use EMACS_LISP_H as the canary instead of GCPRO1.
      * test/automated/finalizer-tests.el (finalizer-basic)
      (finalizer-circular-reference, finalizer-cross-reference)
      (finalizer-error):
      * test/automated/generator-tests.el (cps-test-iter-close-finalizer):
      Remove tests, as they depend on gc-precise.
      60d1b187
  4. 19 Aug, 2015 1 commit
    • Martin Rudalics's avatar
      Move window edge functions to Elisp. · f5a14da1
      Martin Rudalics authored
      * src/window.c (Fwindow_edges, Fwindow_pixel_edges)
      (Fwindow_absolute_pixel_edges, Fwindow_inside_edges)
      (Fwindow_inside_pixel_edges, Fwindow_inside_absolute_pixel_edges):
      Move to window.el.
      (calc_absolute_offset): Remove.
      * lisp/frame.el (frame-edges): New function.
      * lisp/window.el (window-edges, window-pixel-edges)
      (window-absolute-pixel-edges): Move here from window.c.
      (window-body-edges, window-body-pixel-edges)
      (window-absolute-body-pixel-edges): Move here from window.c and
      rename "inside" to "body".  Keep old names as aliases.
      (window-absolute-pixel-position): New function.
      f5a14da1
  5. 31 May, 2015 1 commit
    • Paul Eggert's avatar
      Remove unused DEFSYMs · 0c2a3cf6
      Paul Eggert authored
      Remove DEFSYMs that aren't used at the C level.  Also:
      * src/decompress.c (Qzlib_dll):
      * src/font.c (Qunicode_sip):
      * src/frame.c (Qtip_frame):
      * src/ftfont.c (Qserif):
      * src/gnutls.c (Qgnutls_dll):
      * src/xml.c (Qlibxml2_dll):
      Move from here ...
      * src/w32fns.c (syms_of_w32fns): ... to here,
      as these are used only on MS-Windows.
      0c2a3cf6
  6. 14 May, 2015 1 commit
  7. 14 Apr, 2015 2 commits
    • Paul Eggert's avatar
      Fix think-o in previous patch · 7744cc7e
      Paul Eggert authored
      * src/window.c (count_windows, get_leaf_windows):
      Don't optimize count_windows incorrectly.
      7744cc7e
    • Paul Eggert's avatar
      Avoid some int overflows in window.c · b80c5ebc
      Paul Eggert authored
      * src/print.c (print_object):
      * src/window.c (sequence_number):
      * src/window.h (struct window.sequence_number):
      Don't assume window sequence number fits in int.
      * src/window.c (window_select_count):
      * src/window.h (struct window.use_time, window_select_count):
      Don't assume window use time fits in int.
      * src/window.c (Fsplit_window_internal):
      Don't assume user-supplied integer, or sum, fits in int.
      (Fset_window_configuration, count_windows, get_leaf_windows)
      (save_window_save, Fcurrent_window_configuration):
      Use ptrdiff_t for object counts.
      (Fset_window_configuration): Omit unused local 'n'.
      (count_windows): Simplify by writing in terms of get_leaf_windows.
      (get_leaf_windows): Don't store through FLAT if it's null.
      (extract_dimension): New static function.
      (set_window_margins, set_window_fringes, set_window_scroll_bars):
      Use it to avoid undefined behavior when converting user-supplied
      integer to 'int'.
      b80c5ebc
  8. 12 Apr, 2015 1 commit
    • Paul Eggert's avatar
      Use bool for boolean in window.c · 30379713
      Paul Eggert authored
      * src/window.c:	Omit unnecessary static function decls.
      (adjust_window_count, select_window, Fselect_window)
      (window_body_width, Fwindow_body_height, Fwindow_body_width)
      (set_window_hscroll, check_window_containing, Fwindow_at)
      (Fwindow_end, Fset_window_start, Fpos_visible_in_window_p)
      (unshow_buffer, replace_window, recombine_windows)
      (add_window_to_list, candidate_window_p, next_window)
      (Fnext_window, Fprevious_window, window_loop, check_all_windows)
      (Fget_buffer_window, Fdelete_other_windows_internal)
      (replace_buffer_in_windows_safely, set_window_buffer)
      (Fset_window_buffer, Fforce_window_update)
      (temp_output_buffer_show, make_parent_window)
      (window_resize_check, window_resize_apply, Fwindow_resize_apply)
      (resize_frame_windows, Fsplit_window_internal)
      (Fdelete_window_internal, grow_mini_window, shrink_mini_window)
      (Fresize_mini_window_internal, mark_window_cursors_off)
      (window_scroll, window_scroll_pixel_based)
      (window_scroll_line_based, scroll_command, Fscroll_other_window)
      (Fscroll_left, Fscroll_right, displayed_window_lines, Frecenter)
      (Fmove_to_window_line, Fset_window_configuration)
      (delete_all_child_windows, apply_window_adjustment)
      (set_window_fringes, set_window_scroll_bars)
      (Fset_window_vscroll, foreach_window, foreach_window_1)
      (compare_window_configurations, Fcompare_window_configurations):
      Prefer 'bool', 'true', and 'false' for booleans.
      * src/window.h (WINDOW_MODE_LINE_LINES)
      (WINDOW_HEADER_LINE_LINES): Omit unnecessary "!!" on bool value.
      30379713
  9. 10 Apr, 2015 1 commit
  10. 09 Feb, 2015 1 commit
    • Eli Zaretskii's avatar
      Speed up vertical-motion when screen coordinates are known · 403cb178
      Eli Zaretskii authored
       src/indent.c (Fvertical_motion): Accept an additional argument
       CUR-COL and use it as the starting screen coordinate.
       src/window.c (window_scroll_line_based, Fmove_to_window_line): All
       callers of vertical-motion changed.
      
       doc/lispref/positions.texi (Screen Lines): Update the documentation of
       vertical-motion to document the new additional argument.
      403cb178
  11. 07 Feb, 2015 1 commit
    • Martin Rudalics's avatar
      Try to improve handling of fullwidth/-height frames. · d1655783
      Martin Rudalics authored
      * frame.el (frame-notice-user-settings): Update
      `frame-size-history'.
      (make-frame): Update `frame-size-history'.  Call
      `frame-after-make-frame'.
      * faces.el (face-set-after-frame-default): Remove call to
      frame-can-run-window-configuration-change-hook.
      * frame.c (frame_size_history_add): New function.
      (frame_inhibit_resize): Consider frame_inhibit_implied_resize
      only after frame's after_make_frame slot is true.  Inhibit
      resizing fullwidth-/height frames in one direction only.  Update
      frame_size_history.
      (adjust_frame_size): Call frame_size_history_add.
      (make_frame): Initalize after_make_frame slot.
      (Fmake_terminal_frame): Adjust adjust_frame_size call.
      (Fcan_run_window_configuration_change_hook): Rename to
      Fframe_after_make_frame.  Set after_make_frame slot.  Return
      second argument.
      (x_set_frame_parameters): Postpone handling fullscreen parameter
      until after width and height parameters have been set.  Apply
      width and height changes only if can_x_set_window_size is true.
      Update frame_size_history.
      (Qadjust_frame_size_1, Qadjust_frame_size_2)
      (Qadjust_frame_size_3, QEmacsFrameResize, Qframe_inhibit_resize)
      (Qx_set_fullscreen, Qx_check_fullscreen, Qx_set_window_size_1)
      (Qxg_frame_resized, Qxg_frame_set_char_size_1)
      (Qxg_frame_set_char_size_2, Qxg_frame_set_char_size_3)
      (Qxg_change_toolbar_position, Qx_net_wm_state)
      (Qx_handle_net_wm_state, Qtb_size_cb, Qupdate_frame_tool_bar)
      (Qfree_frame_tool_bar): New symbol for updating
      frame_size_history.
      (Qtip_frame, Qterminal_frame): New symbols.
      (Vframe_adjust_size_history): Rename to frame_size_history.
      * frame.h (struct frame): Rename
      can_run_window_configuration_change_hook slot to
      after_make_frame.
      (frame_size_history_add): Extern.
      * gtkutil.c (xg_frame_resized): Call frame_size_history_add.
      Don't set FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT here.
      (xg_frame_set_char_size): Try to preserve the status of
      fullwidth/-height frames.  Call frame_size_history_add.
      (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar)
      (xg_change_toolbar_position): Call frame_size_history_add.
      * w32fns.c (x_change_tool_bar_height): Handle frame's fullscreen
      status.
      (Fx_create_frame): Process fullscreen parameter after frame has
      been resized.
      (x_create_tip_frame): Pass Qtip_frame to adjust_frame_size.
      (Fx_frame_geometry): Don't pollute pure storage.
      * w32term.c (w32_read_socket): For WM_WINDOWPOSCHANGED,
      WM_ACTIVATE and WM_ACTIVATEAPP set frame's visibility before
      calling w32fullscreen_hook.  For WM_DISPLAYCHANGE call
      w32fullscreen_hook immediately.
      (x_fullscreen_adjust, x_check_fullscreen): Remove.
      (w32fullscreen_hook): Call change_frame_size just as with a
      "normal" frame resize operation.  Call do_pending_window_change.
      (x_set_window_size): Try to handle fullwidth and fullheight more
      accurately.  Don't rely on w32_enable_frame_resize_hack.
      (w32_enable_frame_resize_hack): Remove variable.
      * widget.c (EmacsFrameResize): Remove dead code.  Call
      frame_size_history_add
      * window.c (run_window_configuration_change_hook): Check
      f->after_make_frame instead of
      f->can_run_window_configuration_change_hook.
      * xfns.c (x_change_tool_bar_height): Handle frame's fullscreen status.
      (Fx_create_frame): Process fullscreen parameter after frame has
      been resized.
      (Fx_frame_geometry): Don't pollute pure storage.
      * xterm.c (x_net_wm_state, x_handle_net_wm_state): Call
      frame_size_history_add.
      (do_ewmh_fullscreen): Handle x_frame_normalize_before_maximize.
      (x_check_fullscreen): Count in menubar when calling
      XResizeWindow.  Wait for ConfigureNotify event.  Call
      frame_size_history_add.
      (x_set_window_size_1): Remove PIXELWISE argument.  Try to handle
      changing a fullheight frame's width or a fullwidth frame's
      height.  Call frame_size_history_add.
      (x_set_window_size): Simplify xg_frame_set_char_size and
      x_set_window_size_1 calls.
      (x_frame_normalize_before_maximize): New variable.
      d1655783
  12. 01 Feb, 2015 1 commit
  13. 25 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Count MANY function args more reliably · a3689d3c
      Paul Eggert authored
      * alloc.c (Fgc_status, purecopy, unbind_to, garbage_collect_1):
      * buffer.c (Fbuffer_list, Fkill_buffer):
      * callint.c (read_file_name, Fcall_interactively):
      * charset.c (Fset_charset_priority, syms_of_charset):
      * chartab.c (uniprop_encode_value_numeric):
      * coding.c (syms_of_coding):
      * composite.c (syms_of_composite):
      * data.c (wrong_range):
      * dbusbind.c (syms_of_dbusbind):
      * dired.c (file_attributes):
      * editfns.c (Fdecode_time, update_buffer_properties, format2):
      * eval.c (run_hook_with_args_2, apply1, call1, call2, call3)
      (call4, call5, call6, call7):
      * fileio.c (Finsert_file_contents, choose_write_coding_system)
      (Fcar_less_than_car, build_annotations, auto_save_error):
      * filelock.c (get_boot_time):
      * fns.c (internal_equal, nconc2, Fyes_or_no_p, Fwidget_apply):
      (maybe_resize_hash_table, secure_hash):
      * font.c (font_style_to_value, font_open_by_name, Flist_fonts):
      * fontset.c (fontset_add, Fset_fontset_font):
      * ftfont.c (ftfont_lookup_cache):
      * gtkutil.c (xg_get_font):
      * insdel.c (signal_before_change, signal_after_change):
      * keymap.c (append_key):
      * lread.c (load_warn_old_style_backquotes, Fload, init_lread):
      * minibuf.c (Fread_buffer):
      * print.c (print_preprocess):
      * process.c (Fformat_network_address, Fmake_network_process)
      (server_accept_connection):
      * sound.c (Fplay_sound_internal):
      * term.c (Fsuspend_tty, Fresume_tty):
      * window.c (window_list):
      * xdisp.c (run_redisplay_end_trigger_hook, add_to_log)
      (message_with_string):
      * xfaces.c (Fx_list_fonts):
      * xfont.c (syms_of_xfont):
      * xselect.c (x_handle_selection_request)
      (x_handle_selection_clear, x_clear_frame_selections)
      (x_clipboard_manager_error_1):
      Prefer CALLMANY and CALLN to counting args by hand.
      * doc.c (reread_doc_file): Remove unused code.
      * fns.c (concat2, concat3): Redo to avoid need for local-var vector.
      (cmpfn_user_defined, hashfn_user_defined, Fmaphash):
      Prefer call1 and call2 to Ffuncall.
      * keyboard.c (safe_run_hook_funcall, safe_run_hooks):
      Use struct literal rather than a local var, for simplicity.
      * keymap.c (where_is_internal): Use NULL rather than a pointer
      to unused args.
      * lisp.h (CALLMANY, CALLN): New macros.
      * sound.c (Fplay_sound_internal): Coalesce duplicate code.
      Fixes: bug#19634
      a3689d3c
  14. 16 Jan, 2015 1 commit
    • Dmitry Antipov's avatar
      Tune pseudovector allocation assuming Qnil == 0 · 3b48f995
      Dmitry Antipov authored
      * alloc.c (allocate_pseudovector): Use memset for both
      Lisp_Objects and regular slots.  Add zerolen arg.
      * lisp.h (allocate_pseudovector): Adjust prototype.
      (ALLOCATE_PSEUDOVECTOR): Adjust user.
      (ALLOCATE_ZEROED_PSEUDOVECTOR): New macro.
      (allocate_hash_table, allocate_window, allocate_frame)
      (allocate_process, allocate_terminal): Remove prototypes.
      * fns.c (allocate_hash_table): Now static here.
      * frame.c (allocate_frame):
      * process.c (allocate_process):
      * terminal.c (allocate_terminal):
      * window.c (allocate_window): Now static here.
      Use ALLOCATE_ZEROED_PSEUDOVECTOR.  Add comment.
      3b48f995
  15. 13 Jan, 2015 1 commit
    • Dmitry Antipov's avatar
      Support const and noreturn DEFUN attributes. · ad9c4a40
      Dmitry Antipov authored
      * lib-src/make-docfile.c (struct global): New field 'flags'.
      (DEFUN_noreturn, DEFUN_const): New enum bitfields.
      (add_global): Now return pointer to global.
      (write_globals): Add _Noreturn and ATTRIBUTE_CONST attributes
      if requested by global's flags.
      (stream_match): New function.
      (scan_c_stream): Recognize 'attributes:' of DEFUN.
      
      * src/callint.c (Finteractive):
      * src/character.c (Fcharacterp, Fmax_char):
      * src.data.c (Feq, Fnull, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp)
      (Fstringp, Fchar_or_string_p, Fintegerp, Fnatnump, Fnumberp)
      (Ffloatp, Fbyteorder):
      * src/decompress.c (Fzlib_available_p):
      * src/fns.c (Fidentity):
      * src/frame.c (Fframe_windows_min_size):
      * src/gnutls.c (Fgnutls_error_p, Fgnutls_available_p):
      * src/window.c (Fwindow__sanitize_window_sizes):
      * src/xdisp.c (Ftool_bar_height):
      * src/xfaces.c (Fface_attribute_relative_p): Add const attribute.
      * src/emacs.c (Fkill_emacs):
      * src/eval.c (Fthrow):
      * src/keyboard.c (Ftop_level, Fexit_recursive_edit)
      (Fabor_recursive_edit): Add noreturn attribute.
      ad9c4a40
  16. 12 Jan, 2015 1 commit
    • Martin Rudalics's avatar
      Adjust frame heights to real height of tool bar. · fb35f1f7
      Martin Rudalics authored
      * frame.el (frame-notice-user-settings): Remove code dealing with
      frame-initial-frame-tool-bar-height.  Turn off `tool-bar-mode'
      only if `window-system-frame-alist' or `default-frame-alist' ask
      for it.
      (make-frame): Update frame-adjust-size-history if needed.
      * dispnew.c (change_frame_size_1): Pass Qchange_frame_size to
      adjust_frame_size.
      * frame.c (frame_default_tool_bar_height): New variable.
      (adjust_frame_size): Possibly add requested adjustment to
      Vframe_adjust_size_history.
      (make_frame): Initialize tool_bar_redisplayed_once slot.
      (Fset_frame_height, Fset_frame_width, Fset_frame_size): Clarify
      doc-string.  Call adjust_frame_size unconditionally (the frame's
      text size may remain unaltered but the pixel size may change).
      (x_figure_window_size): If frame_default_tool_bar_height was
      set, use it instead of calculating the tool bar height from
      DEFAULT_TOOL_BAR_IMAGE_HEIGHT.  Don't set
      Vframe_initial_frame_tool_bar_height.
      (Qchange_frame_size, Qxg_frame_set_char_size)
      (Qset_window_configuration, Qx_create_frame_1)
      (Qx_create_frame_2): New symbols.
      (Vframe_initial_frame_tool_bar_height): Remove.
      (Vframe_adjust_size_history): New history variable for debugging
      frame size adjustments.
      * frame.h (struct frame): New boolean slot
      tool_bar_redisplayed_once.
      (frame_default_tool_bar_height): Extern.
      * gtkutil.c (xg_frame_set_char_size): Pass Qxg_frame_set_char_size
      to adjust_frame_size.
      * nsfns.m (Fx_create_frame): Pass Pass Qx_create_frame_1 and
      Qx_create_frame_2 to adjust_frame_size.
      * w32fns.c (x_change_tool_bar_height): Call adjust_frame_size with
      inhibit 1 when we have not redisplayed the tool bar yet.
      (Fx_create_frame): Pass Pass Qx_create_frame_1 and
      Qx_create_frame_2 to adjust_frame_size.
      * w32menu.c (set_frame_menubar): Simplify adjust_frame_size
      call.
      * window.c (Fset_window_configuration): Pass
      Qset_window_configuration to adjust_frame_size.
      * xdisp.c (redisplay_tool_bar): Assign new height to
      frame_default_tool_bar_height.
      (redisplay_internal): If we haven't redisplayed this frame's
      tool bar, call redisplay_tool_bar early so we can adjust the
      frame size accordingly.
      * xfns.c (x_change_tool_bar_height): Call adjust_frame_size with
      inhibit 1 when we have not redisplayed the tool bar yet.
      (Fx_create_frame): Pass Pass Qx_create_frame_1 and
      Qx_create_frame_2 to adjust_frame_size.
      fb35f1f7
  17. 07 Jan, 2015 1 commit
  18. 05 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Compute C decls for DEFSYMs automatically · 58f2d6ef
      Paul Eggert authored
      Fixes Bug#15880.
      This patch also makes Q constants (e.g., Qnil) constant addresses
      from the C point of view.
      * make-docfile.c: Revamp to generate table of symbols, too.
      Include <stdbool.h>.
      (xstrdup): New function.
      (main): Don't process the same file twice.
      (SYMBOL): New constant in enum global_type.
      (struct symbol): Turn 'value' member into a union, either v.value
      for int or v.svalue for string.  All uses changed.
      (add_global): New arg svalue, which overrides value, so that globals
      can have a string value.
      (close_emacs_global): New arg num_symbols; all uses changed.
      Output lispsym decl.
      (write_globals): Output symbol globals too.  Output more
      ATTRIBUTE_CONST, now that Qnil etc. are C constants.
      Output defsym_name table.
      (scan_c_file): Move most of guts into ...
      (scan_c_stream): ... new function.  Scan for DEFSYMs and
      record symbols found.  Don't read past EOF if file doesn't
      end in newline.
      * alloc.c, bidi.c, buffer.c, bytecode.c, callint.c, casefiddle:
      * casetab.c, category.c, ccl.c, charset.c, chartab.c, cmds.c, coding.c:
      * composite.c, data.c, dbusbind.c, decompress.c, dired.c, dispnew.c:
      * doc.c, editfns.c, emacs.c, eval.c, fileio.c, fns.c, font.c, fontset.c:
      * frame.c, fringe.c, ftfont.c, ftxfont.c, gfilenotify.c, gnutls.c:
      * image.c, inotify.c, insdel.c, keyboard.c, keymap.c, lread.c:
      * macfont.m, macros.c, minibuf.c, nsfns.m, nsfont.m, nsimage.m:
      * nsmenu.m, nsselect.m, nsterm.m, print.c, process.c, profiler.c:
      * search.c, sound.c, syntax.c, term.c, terminal.c, textprop.c, undo.c:
      * window.c, xdisp.c, xfaces.c, xfns.c, xftfont.c, xmenu.c, xml.c:
      * xselect.c, xsettings.c, xterm.c:
      Remove Q vars that represent symbols (e.g., Qnil, Qt, Qemacs).
      These names are now defined automatically by make-docfile.
      * alloc.c (init_symbol): New function.
      (Fmake_symbol): Use it.
      (c_symbol_p): New function.
      (valid_lisp_object_p, purecopy): Use it.
      * alloc.c (marked_pinned_symbols):
      Use make_lisp_symbol instead of make_lisp_ptr.
      (garbage_collect_1): Mark lispsym symbols.
      (CHECK_ALLOCATED_AND_LIVE_SYMBOL): New macro.
      (mark_object): Use it.
      (sweep_symbols): Sweep lispsym symbols.
      (symbol_uses_obj): New function.
      (which_symbols): Use it.  Work for lispsym symbols, too.
      (init_alloc_once): Initialize Vpurify_flag here; no need to wait,
      since Qt's address is already known now.
      (syms_of_alloc): Add lispsym count to symbols_consed.
      * buffer.c (init_buffer_once): Compare to Qnil, not to make_number (0),
      when testing whether storage is all bits zero.
      * dispextern (struct image_type):
      * font.c (font_property_table):
      * frame.c (struct frame_parm_table, frame_parms):
      * keyboard.c (scroll_bar_parts, struct event_head):
      * xdisp.c (struct props):
      Use XSYMBOL_INIT (Qfoo) and struct Lisp_Symbol * rather than &Qfoo and
      Lisp_Object *, since Qfoo is no longer an object whose address can be
      taken.  All uses changed.
      * eval.c (run_hook): New function.  Most uses of Frun_hooks changed to
      use it, so that they no longer need to take the address of a Lisp sym.
      (syms_of_eval): Don't use DEFSYM on Vrun_hooks, as it's a variable.
      * frame.c (syms_of_frame): Add defsyms for the frame_parms table.
      * keyboard.c (syms_of_keyboard): Don't DEFSYM Qmenu_bar here.
      DEFSYM Qdeactivate_mark before the corresponding var.
      * keymap.c (syms_of_keymap): Use DEFSYM for Qmenu_bar and Qmode_line
      instead of interning their symbols; this avoids duplicates.
      (LISP_INITIALLY, TAG_PTR)
      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END, XSYMBOL_INIT):
      New macros.
      (LISP_INITIALLY_ZERO): Use it.
      (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol)
      (EXFUN, DEFUN_ARGS_MANY, DEFUN_ARGS_UNEVALLED, DEFUN_ARGS_*):
      Move decls up, to avoid forward uses.  Include globals.h earlier, too.
      (make_lisp_symbol): New function.
      (XSETSYMBOL): Use it.
      (DEFSYM): Now just a placeholder for make-docfile.
      * lread.c (DEFINE_SYMBOLS): Define, for globals.h.
      (intern_sym): New function, with body taken from old intern_driver.
      (intern_driver): Use it.  Last arg is now Lisp integer, not ptrdiff_t.
      All uses changed.
      (define_symbol): New function.
      (init_obarray): Define the C symbols taken from lispsym.
      Use plain DEFSYM for Qt and Qnil.
      * syntax.c (init_syntax_once): No need to worry about
      Qchar_table_extra_slots.
      58f2d6ef
  19. 04 Jan, 2015 2 commits
    • Paul Eggert's avatar
      'temacs -nw' should not call missing functions · bf90e9ac
      Paul Eggert authored
      Without this patch, "temacs -nw" fails with the diagnostic
      "emacs: Symbol's function definition is void: frame-windows-min-size"
      and messes up the tty's state.
      * lib-src/make-docfile.c (write_globals):
      Declare Fframe_windows_min_size with ATTRIBUTE_CONST, too.  Sort.
      * src/frame.c (Fframe_windows_min_size): New placeholder function.
      (syms_of_frame): Define it.
      * src/window.c (Fwindow__sanitize_window_sizes): New placeholder.
      (syms_of_window): Define it.
      bf90e9ac
    • jave's avatar
      cleanups · 78f196e3
      jave authored
      78f196e3
  20. 01 Jan, 2015 2 commits
  21. 18 Dec, 2014 2 commits
    • Eli Zaretskii's avatar
      811aceea
    • Martin Rudalics's avatar
      Add code for "preserving" window sizes. · 47f730e3
      Martin Rudalics authored
      * frame.c (frame_windows_min_size): New argument IGNORE.
      (adjust_frame_size): When called from change_frame_size call
      frame_windows_min_size with IGNORE Qt so we can ignore size
      restrictions.
      
      * dired.el (dired-pop-to-buffer): Call fit-window-to-buffer with
      `preserve-size' t.
      (dired-mark-pop-up): Preserve size of window showing marked
      files.
      * electric.el (Electric-pop-up-window):
      * help.el (resize-temp-buffer-window): Call fit-window-to-buffer
      with `preserve-size' t.
      * minibuffer.el (minibuffer-completion-help): Use
      `resize-temp-buffer-window' instead of `fit-window-to-buffer'
      (Bug#19355).  Preserve size of completions window.
      * register.el (register-preview): Preserve size of register
      preview window.
      * tmm.el (tmm-add-prompt): Call fit-window-to-buffer
      with `preserve-size' t (Bug#1291).
      * window.el (with-displayed-buffer-window): Add calls to
      `window-preserve-size'.
      (window-min-pixel-size, window--preservable-size)
      (window-preserve-size, window-preserved-size)
      (window--preserve-size, window--min-size-ignore-p): New
      functions.
      (window-min-size, window-min-delta, window--resizable)
      (window--resize-this-window, split-window-below)
      (split-window-right): Amend doc-string.
      (adjust-window-trailing-edge): Handle preserving window
      sizes.  Signal user-error instead of an error when there's no
      window above or below.
      (window--min-size-1, window-sizable, window--size-fixed-1)
      (window-size-fixed-p, window--min-delta-1)
      (frame-windows-min-size, window--max-delta-1, window-resize)
      (window--resize-child-windows, window--resize-siblings)
      (enlarge-window, shrink-window, split-window): Handle preserving
      window sizes.
      (window--state-put-2): Handle horizontal scroll bars.
      (window--display-buffer): Call `preserve-size' if asked for.
      (display-buffer): Mention `preserve-size' alist member in
      doc-string.
      (fit-window-to-buffer): New argument PRESERVE-SIZE.
      47f730e3
  22. 15 Dec, 2014 1 commit
  23. 14 Dec, 2014 1 commit
    • Alan Mackenzie's avatar
      New feature optionally to accelerate auto-repeated scrolling. · 37139317
      Alan Mackenzie authored
      src/xdisp.c: Remove "static" from declaration of
      Qfontification_functions.
      
      src/window.c (window_scroll): bind fontification-functions to nil when
      scrolling by whole screens and fast-but-imprecise-scrolling is non-nil.
      (syms_of_window): New DEFVAR_BOOL fast-but-imprecise-scrolling.
      
      src/lisp.h (bool): Declare Qfontification_functions extern.
      
      lisp/cus-start.el (all): Add fast-but-imprecise-scrolling.
      
      doc/emacs/display.texi (Scrolling): fast-but-imprecise-scrolling.
      Describe new variable.
      
      etc/NEWS: Add entry for fast-but-imprecise-scrolling.
      37139317
  24. 15 Nov, 2014 1 commit
  25. 08 Nov, 2014 1 commit
    • Martin Rudalics's avatar
      Run `window-configuration-change-hook' only after all faces have been realized. · c936cbbc
      Martin Rudalics authored
      * frame.c (adjust_frame_size): Call x_set_window_size only if
      f->can_x_set_window_size is set.
      (make_frame): Initialize f->can_x_set_window_size and
      f->can_run_window_configuration_change_hook.
      (Fcan_run_window_configuration_change_hook): New function.
      * frame.h (frame): Split `official' into `can_x_set_window_size'
      and `can_run_window_configuration_change_hook'.
      * nsfns.m (Fx_create_frame): Set f->can_x_set_window_size.
      * w32fns.c (Fx_create_frame, x_create_tip_frame): Set
      f->can_x_set_window_size.
      * window.c (run_window_configuration_change_hook): Return
      immediately if either f->can_x_set_window_size or
      f->can_run_window_configuration_change_hook are false.
      (Fset_window_configuration): Instead of f->official set
      f->can_x_set_window_size.
      * xfns.c (Fx_create_frame, x_create_tip_frame): Set
      f->can_x_set_window_size.
      * faces.el (face-set-after-frame-default): Enable running
      `window-configuration-change-hook'.
      c936cbbc
  26. 07 Nov, 2014 1 commit
    • Martin Rudalics's avatar
      Improve inhibiting of implied frame resizes. · 1c50b3ad
      Martin Rudalics authored
      * frames.texi (Size and Position): Rewrite description of
      `frame-inhibit-implied-resize'.
      * cus-start.el (frame-resize-pixelwise): Fix group.
      (frame-inhibit-implied-resize): Add entry.
      * dispnew.c (change_frame_size_1): Fix call of
      adjust_frame_size.
      * frame.c (Qsize, Qframe_position, Qframe_outer_size)
      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
      (Qtool_bar_size): New constants.
      (frame_inhibit_resize, adjust_frame_size): New argument to
      handle case where frame_inhibit_implied_resize is a list.
      (Fmake_terminal_frame, Fset_frame_height, Fset_frame_width)
      (Fset_frame_size, x_set_left_fringe, x_set_right_fringe)
      (x_set_right_divider_width, x_set_bottom_divider_width)
      (x_set_vertical_scroll_bars, x_set_horizontal_scroll_bars)
      (x_set_scroll_bar_width, x_set_scroll_bar_height): Update
      callers.
      (frame-inhibit-implied-resize): Rewrite doc-string.
      * frame.h (frame_inhibit_resize, adjust_frame_size): Fix
      external declarations.
      (Qframe_position, Qframe_outer_size)
      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
      (Qtool_bar_size): Extern them.
      * gtkutil.c (FRAME_TOTAL_PIXEL_HEIGHT, FRAME_TOTAL_PIXEL_WIDTH)
      (xg_height_or_width_changed): Remove.
      (xg_frame_set_char_size): Adjust adjust_frame_size calls.
      (menubar_map_cb, xg_update_frame_menubar, free_frame_menubar)
      (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar)
      (xg_change_toolbar_position): Call adjust_frame_size directly.
      * nsfns.m (x_set_internal_border_width, Fx_create_frame): Fix
      calls of adjust_frame_size.
      * w32fns.c (x_set_internal_border_width, x_set_menu_bar_lines)
      (Fx_create_frame, x_create_tip_frame): Adjust adjust_frame_size
      calls.
      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
      frame can get resized when tool-bar-lines parameter changes from
      or to zero.
      (Fw32_frame_menu_bar_size): Return fourth value.
      (Fw32_frame_rect): Block input around system calls
      (Fx_frame_geometry): New function.
      * w32menu.c (set_frame_menubar): Adjust adjust_frame_size call.
      * w32term.c (x_new_font): Adjust adjust_frame_size call.
      * widget.c (EmacsFrameSetCharSize): Adjust frame_inhibit_resize
      call.
      * window.c (Fset_window_configuration): Adjust adjust_frame_size
      call.
      * xfns.c (x_set_menu_bar_lines, x_set_internal_border_width)
      (Fx_create_frame): Adjust adjust_frame_size calls.
      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
      frame can get resized when tool-bar-lines parameter changes from
      or to zero.
      (Fx_frame_geometry): New function.
      * xmenu.c (update_frame_menubar): On Lucid call
      adjust_frame_size with one pixel less height to avoid that
      repeatedly adding/removing the menu bar grows the frame.
      (free_frame_menubar): On Motif arrange to optionally preserve
      the old frame height when removing the menu bar.
      * xterm.c (x_new_font): Adjust adjust_frame_size call.
      1c50b3ad
  27. 03 Nov, 2014 1 commit
  28. 04 Oct, 2014 1 commit
    • Martin Rudalics's avatar
      Add documentation for horizontal scroll bars and fix some minor issues. · 3c6ba8b4
      Martin Rudalics authored
      * buffer.c (scroll_bar_width, scroll_bar_height): Fix
      doc-strings.
      * window.c (Fset_window_scroll_bars): Fix doc-string.
      (Fwindow_scroll_bars): Have it return what the doc-string says.
      
      * window.el (window-full-height-p): Make it behave correctly for
      minibuffer window.
      (window-current-scroll-bars): Fix code.
      (fit-frame-to-buffer): Use window-scroll-bar-height instead of
      window-scroll-bars.
      * frame.el (frame-current-scroll-bars): Fix doc-string.
      * scroll-bar.el (toggle-horizontal-scroll-bar): New command.
      
      * frames.texi (Scroll Bars): Describe use of horizontal scroll
      bars.
      
      * display.texi (Scroll Bars): Add description of horizontal scroll
      bars and associated functions.
      * frames.texi (Layout Parameters): Add horizontal scroll bar
      entries.  Remove paragraph on "combined fringe widths".
      * windows.texi (Window Sizes): Describe affects of horizontal
      scroll bars on window layout and sizes.  Fix description of
      window-full-height-p.
      (Resizing Windows): Mention horizontal scroll bar.
      3c6ba8b4
  29. 29 Sep, 2014 1 commit
    • Eli Zaretskii's avatar
      Fix bug #18545 with lack of scrolling a window when point goes out of view. · 5bb6d037
      Eli Zaretskii authored
       src/xdisp.c (cursor_row_fully_visible_p): Update commentary.
       (redisplay_window): Treat the frame's frozen_window_starts flag
       the same way as the optional_new_start flag for the window: only
       obey it if the glyph row showing point will be fully visible.
       Likewise when the window start is in a continuation line.  If,
       after trying everything under the 'force_start' label, point is
       still not fully visible, give up and scroll the window.  Add
       debugging traces.
       src/window.c (Frecenter): Set the window's redisplay flag.
      5bb6d037
  30. 25 Sep, 2014 1 commit
    • Martin Rudalics's avatar
      Remove code left dead after 2014-07-27 changes. · 340e4cce
      Martin Rudalics authored
      * frame.c (frame_inhibit_resize):
      * widget.c (EmacsFrameResize):
      * window.c (resize_frame_windows, Fset_window_configuration):
      * xdisp.c (expose_frame):
      * xfns.c (x_change_tool_bar_height):
      * xmenu.c (update_frame_menubar):
      * xterm.c (handle_one_xevent, x_new_font, x_set_window_size_1):
      Remove code left dead after 2014-07-27 changes.
      340e4cce
  31. 11 Sep, 2014 2 commits
    • Martin Rudalics's avatar
      In Fresize_mini_window_internal set w->total_lines from w->pixel_height (Bug#18422). · 6e49a66a
      Martin Rudalics authored
      * window.c (Fresize_mini_window_internal): Set w->total_lines
      from w->pixel_height (Bug#18422).
      6e49a66a
    • Paul Eggert's avatar
      Pacify --enable-gcc-warnings when no window system is used. · b3ed13e8
      Paul Eggert authored
      These warnings found that subscript error, so they seem worthwhile.
      * composite.c (char_composable_p): Simplify a bit.
      * frame.c (x_set_frame_parameters): Add an IF_LINT.
      * frame.c (x_set_horizontal_scroll_bars, x_set_scroll_bar_height):
      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS):
      * window.c (set_window_scroll_bars):
      Use USE_HORIZONTAL_SCROLL_BARS for simplicity.
      * frame.h [! USE_HORIZONTAL_SCROLL_BARS]:
      Ignore -Wsuggest-attribute=const.
      * window.h (USE_HORIZONTAL_SCROLL_BARS): New macro.
      (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Use it.
      b3ed13e8
  32. 07 Sep, 2014 1 commit
    • Paul Eggert's avatar
      Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. · b3bf18b3
      Paul Eggert authored
      This follows up on the recent thread in emacs-devel on alloca; see:
      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00042.html
      This patch also cleans up alloca-related glitches noted while
      examining the code looking for unbounded alloca.
      * alloc.c (listn):
      * callproc.c (init_callproc):
      Rewrite to avoid need for alloca.
      * buffer.c (mouse_face_overlay_overlaps)
      (report_overlay_modification):
      * buffer.h (GET_OVERLAYS_AT):
      * coding.c (make_subsidiaries):
      * doc.c (Fsnarf_documentation):
      * editfns.c (Fuser_full_name):
      * fileio.c (Ffile_name_directory, Fexpand_file_name)
      (search_embedded_absfilename, Fsubstitute_in_file_name):
      * fns.c (Fmake_hash_table):
      * font.c (font_vconcat_entity_vectors, font_update_drivers):
      * fontset.c (fontset_pattern_regexp, Ffontset_info):
      * frame.c (Fmake_terminal_frame, x_set_frame_parameters)
      (xrdb_get_resource, x_get_resource_string):
      * ftfont.c (ftfont_get_charset, ftfont_check_otf, ftfont_drive_otf):
      * ftxfont.c (ftxfont_draw):
      * image.c (xbm_load, xpm_load, jpeg_load_body):
      * keyboard.c (echo_add_key, menu_bar_items, tool_bar_items):
      * keymap.c (Fdescribe_buffer_bindings, describe_map):
      * lread.c (openp):
      * menu.c (digest_single_submenu, find_and_call_menu_selection)
      (find_and_return_menu_selection):
      * print.c (PRINTFINISH):
      * process.c (Fformat_network_address):
      * scroll.c (do_scrolling, do_direct_scrolling, scrolling_1):
      * search.c (search_buffer, Fmatch_data, Fregexp_quote):
      * sound.c (wav_play, au_play):
      * syntax.c (skip_chars):
      * term.c (tty_menu_activate, tty_menu_show):
      * textprop.c (get_char_property_and_overlay):
      * window.c (Fset_window_configuration):
      * xdisp.c (safe__call, next_overlay_change, vmessage)
      (compute_overhangs_and_x, draw_glyphs, note_mouse_highlight):
      * xfaces.c (face_at_buffer_position):
      * xmenu.c (x_menu_show):
      Use SAFE_ALLOCA etc. instead of plain alloca, since the
      allocation size isn't bounded.
      * callint.c (Fcall_interactively): Redo memory_full check
      so that it can be done at compile-time on some platforms.
      * coding.c (MAX_LOOKUP_MAX): New constant.
      (get_translation_table): Use it.
      * callproc.c (call_process): Use SAFE_NALLOCA instead of
      SAFE_ALLOCA, to catch integer overflows on size calculation.
      (exec_failed) [!DOS_NT]: New function.
      (child_setup) [!DOS_NT]: Use it.
      * editfns.c (Ftranspose_regions):
      Hoist USE_SAFE_ALLOC + SAFE_FREE out of 'if'.
      * editfns.c (check_translation):
      Allocate larger buffers on the heap.
      * eval.c (internal_lisp_condition_case):
      Check for MAX_ALLOCA overflow.
      * fns.c (sort_vector): Use SAFE_ALLOCA_LISP rather than Fmake_vector.
      (Fbase64_encode_region, Fbase64_decode_region):
      Avoid unnecessary calls to SAFE_FREE before 'error'.
      * buffer.c (mouse_face_overlay_overlaps):
      * editfns.c (Fget_pos_property, check_translation):
      * eval.c (Ffuncall):
      * font.c (font_unparse_xlfd, font_find_for_lface):
      * ftfont.c (ftfont_drive_otf):
      * keyboard.c (echo_add_key, read_decoded_event_from_main_queue)
      (menu_bar_items, tool_bar_items):
      * sound.c (Fplay_sound_internal):
      * xdisp.c (load_overlay_strings, dump_glyph_row):
      Use an ordinary auto buffer rather than alloca, since the
      allocation size is fixed and small.
      * ftfont.c: Include <c-strcase.h>.
      (matching_prefix): New function.
      (get_adstyle_property): Use it, to avoid need for alloca.
      * keyboard.c (echo_add_key):
      * keymap.c (describe_map): Use ptrdiff_t, not int.
      * keyboard.c (echo_add_key): Prefer sizeof to strlen.
      * keymap.c (Fdescribe_buffer_bindings): Use SBYTES, not SCHARS,
      when counting bytes.
      * lisp.h (xlispstrdupa): Remove, replacing with ...
      (SAFE_ALLOCA_STRING): ... new macro with different API.
      This fixes a portability problem, namely, alloca result
      passed to another function.  All uses changed.
      (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Check for MAX_ALLOCA,
      not MAX_ALLOCA - 1.
      * regex.c (REGEX_USE_SAFE_ALLOCA, REGEX_SAFE_FREE)
      (REGEX_ALLOCATE): New macros.
      (REGEX_REALLOCATE, REGEX_ALLOCATE_STACK, REGEX_REALLOCATE_STACK)
      (REGEX_FREE_STACK, FREE_VARIABLES, re_match_2_internal):
      Use them.
      * xdisp.c (message3): Use SAFE_ALLOCA_STRING rather than doing it
      by hand.
      (decode_mode_spec_coding): Store directly into buf rather than
      into an alloca temporary and copying the temporary to the buf.
      
      Fixes: debbugs:18410
      b3bf18b3