1. 10 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Port to 32-bit --with-wide-int · 6a37ecee
      Paul Eggert authored
      Prefer symbol indexes to struct Lisp_Symbol * casted and then
      widened, as the latter had trouble with GCC on Fedora 21 when
      configured --with-wide-int and when used in static initializers.
      * lib-src/make-docfile.c (write_globals): Define and use symbols like
      iQnil (a small integer, like 0) rather than aQnil (an address
      constant).
      * src/alloc.c (garbage_collect_1, which_symbols):
      * src/lread.c (init_obarray):
      Prefer builtin_lisp_symbol when it can be used.
      * src/dispextern.h (struct image_type.type):
      * src/font.c (font_property_table.key):
      * src/frame.c (struct frame_parm_table.sym):
      * src/keyboard.c (scroll_bar_parts, struct event_head):
      * src/xdisp.c (struct props.name):
      Use the index of a builtin symbol rather than its address.
      All uses changed.
      * src/lisp.h (TAG_SYMPTR, XSYMBOL_INIT): Remove, replacing with ...
      (TAG_SYMOFFSET, SYMBOL_INDEX): ... new macros that deal with
      symbol indexes rather than pointers, and which work better on MSB
      hosts because they shift right before tagging.  All uses changed.
      (DEFINE_LISP_SYMBOL_BEGIN, DEFINE_LISP_SYMBOL_END):
      No longer noops on wide-int hosts, since they work now.
      (builtin_lisp_symbol): New function.
      6a37ecee
  2. 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
  3. 04 Jan, 2015 1 commit
    • 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
  4. 03 Jan, 2015 2 commits
  5. 01 Jan, 2015 1 commit
  6. 30 Dec, 2014 1 commit
    • Martin Rudalics's avatar
      Update documentation of Temporary Displays. · 01827de4
      Martin Rudalics authored
      * display.texi (Temporary Displays): Amend description of
      `with-temp-buffer-window'.  Add descriptions for
      `with-current-buffer-window', `with-displayed-buffer-window' and
      `temp-buffer-resize-mode', `temp-buffer-max-height' and
      `temp-buffer-max-width'.
      
      * frame.c (frame_inhibit_implied_resize): Escape left paren in
      doc-string.
      01827de4
  7. 25 Dec, 2014 1 commit
    • Paul Eggert's avatar
      Prefer stpcpy to strcat · 1e6879db
      Paul Eggert authored
      * admin/merge-gnulib (GNULIB_MODULES): Add stpcpy.
      * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
      * lib/stpcpy.c, m4/stpcpy.m4: New files, from gnulib.
      * lib-src/ebrowse.c (sym_scope_1, operator_name, open_file):
      * lib-src/emacsclient.c (get_server_config, set_local_socket)
      (start_daemon_and_retry_set_socket):
      * lib-src/etags.c (main, C_entries, relative_filename):
      * lib-src/pop.c (sendline):
      * lib-src/update-game-score.c (main):
      * lwlib/xlwmenu.c (resource_widget_value):
      * src/callproc.c (child_setup):
      * src/dbusbind.c (xd_signature_cat):
      * src/doc.c (get_doc_string, Fsnarf_documentation):
      * src/editfns.c (Fuser_full_name):
      * src/frame.c (xrdb_get_resource):
      * src/gtkutil.c (xg_get_file_with_chooser):
      * src/tparam.c (tparam1):
      * src/xfns.c (xic_create_fontsetname):
      * src/xrdb.c (gethomedir, get_user_db, get_environ_db):
      * src/xsmfns.c (smc_save_yourself_CB):
      Rewrite to avoid the need for strcat, typically by using stpcpy
      and/or lispstpcpy.  strcat tends to be part of O(N**2) algorithms.
      * src/doc.c (sibling_etc):
      * src/xrdb.c (xdefaults):
      Now a top-level static constant.
      1e6879db
  8. 18 Dec, 2014 1 commit
    • 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
  9. 16 Nov, 2014 1 commit
  10. 09 Nov, 2014 1 commit
  11. 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
  12. 07 Nov, 2014 2 commits
    • Paul Eggert's avatar
      Uniquify the 'size' symbol. · 0e44a2d2
      Paul Eggert authored
      * frame.c (Qsize):
      * w32notify.c (Qsize): Remove.
      * lisp.h (Qsize): New decl.
      * lread.c (Qsize): Now extern.
      * w32notify.c (syms_of_w32notify): No need to defsym.
      0e44a2d2
    • 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
  13. 23 Oct, 2014 1 commit
  14. 14 Oct, 2014 1 commit
    • Dmitry Antipov's avatar
      Cleanup terminal handling code. · bb75cdf9
      Dmitry Antipov authored
      * dispextern.h (get_named_tty): Remove prototype but...
      * termhooks.h (get_named_terminal): ...resurrect it under
      more meaningful name.
      (get_terminal): Likewise, but with...
      (decode_live_terminal): ...this name.
      (decode_tty_terminal): Add prototype.
      * term.c (get_tty_terminal): Remove.
      (get_named_tty): Remove.
      (Ftty_display_color_p, Ftty_display_color_cells, Ftty_type)
      (Fcontrolling_tty_p, Fsuspend_tty, Fresume_tty):
      Use decode_tty_terminal.
      (Ftty_no_underline, Ftty_top_frame): Use decode_live_terminal.
      * terminal.c (get_terminal): Refactor to...
      (decode_terminal, decode_live_terminal): ...new functions.
      (decode_tty_terminal): Replacement for get_tty_terminal.
      (get_named_terminal): Likewise for get_named_tty.
      * coding.c (Fset_terminal_coding_system_internal)
      (Fterminal_coding_system, Fset_keyboard_coding_system_internal):
      (Fkeyboard_coding_system):
      * composite.c (Fcomposition_get_gstring):
      * dispnew.c (Fsend_string_to_terminal):
      * frame.c (Fmake_terminal_frame):
      * nsfns.m (check_ns_display_info):
      * w32fns.c, xfns.c (check_x_display_info):
      * xselect.c (frame_for_x_selection): Use decode_live_terminal.
      * keyboard.c (handle_interrupt_signal, handle_interrupt)
      (Fset_quit_char): Use get_named_terminal.
      (Fset_output_flow_control, Fset_input_meta_mode):
      Use decode_tty_terminal.
      bb75cdf9
  15. 09 Oct, 2014 1 commit
  16. 01 Oct, 2014 1 commit
    • Paul Eggert's avatar
      Use AUTO_CONS instead of SCOPED_CONS, etc. · 27900ac7
      Paul Eggert authored
      * doc/lispref/internals.texi (Stack-allocated Objects):
      Adjust to match the revised, less error-prone macros.
      * src/frame.h (AUTO_FRAME_ARG): Rename from FRAME_PARAMETER.
      * src/lisp.h (AUTO_CONS): Rename from scoped_cons.
      (AUTO_LIST1): Rename from scoped_list1.
      (AUTO_LIST2): Rename from scoped_list2.
      (AUTO_LIST3): Rename from scoped_list3.
      (AUTO_LIST4): Rename from scoped_list4.
      (AUTO_STRING): Rename from SCOPED_STRING.
      * src/frame.h (AUTO_FRAME_ARG):
      * src/lisp.h (AUTO_CONS, AUTO_LIST1, AUTO_LIST2, AUTO_LIST3)
      (AUTO_LIST4, AUTO_STRING):
      Prepend a new argument 'name'.
      Declare a variable instead of yielding a value.
      All uses changed.
      * src/lisp.h (STACK_CONS, AUTO_CONS_EXPR): New internal macros.
      27900ac7
  17. 30 Sep, 2014 2 commits
    • Paul Eggert's avatar
      * frame.c (x_set_frame_parameters): Port --enable-gcc-warnings · 699aeb00
      Paul Eggert authored
      to Ubuntu 14.04.1 x86-64.
      699aeb00
    • Paul Eggert's avatar
      Simplify stack-allocated Lisp objects, and make them more portable. · dc452569
      Paul Eggert authored
      The build_local_string macro was used in two ways: (1) string
      literals for which scoped allocation suffices, and (2) file name
      components, where it's not safe in general to assume bounded-size
      ASCII data.  Simplify by defining a new macro SCOPED_STRING that
      allocates a block-scope string, and by using SCOPED_STRING for (1)
      and build_string for (2).  Furthermore, actually use stack
      allocation only for objects known to have sufficient alignment.
      This simpler implementation means Emacs can make
      USE_STACK_LISP_OBJECTS the default unless GC_MARK_STACK !=
      GC_MAKE_GCPROS_NOOPS.
      * lisp.h (GCALIGNED): Align even if !USE_STACK_LISP_OBJECTS,
      for fewer differences among implementations.
      (struct Lisp_String): Now GCALIGNED.
      (USE_STACK_LISP_OBJECTS): Default to true, since the
      implementation no longer insists on a nonempty GCALIGNED.
      But make it false if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS.
      (SCOPED_CONS_INITIALIZER): Remove, since it's no longer needed
      separately.  Move definiens to scoped_cons.  The old definition
      was incorrect when GCALIGNED was defined to be empty.
      (union Aligned_String): New type.
      (USE_STACK_CONS, USE_STACK_STRING): New constants, so that the
      implementation ports to compilers that don't align strictly enough.
      Don't worry about the union sizes; it's not worth bothering about.
      (scoped_cons, scoped_list1, scoped_list3, scoped_list4):
      Rewrite using USE_STACK_CONS.
      (scoped_cons): Assume the use of union Aligned_Cons.
      (lisp_string_size, make_local_string, build_local_string): Remove.
      Unless otherwise specified, all callers of build_local_string
      changed to use SCOPED_STRING.
      (SCOPED_STRING): New macro.
      * data.c (wrong_choice):
      * menu.c (single_menu_item):
      * process.c (Fformat_network_address):
      Hoist use of SCOPED_STRING out of a scope, so that its returned
      object lives long enough.
      * fileio.c (Fexpand_file_name): Use build_string, not SCOPED_STRING,
      as the string might be long or might not be ASCII.
      dc452569
  18. 29 Sep, 2014 1 commit
    • Dmitry Antipov's avatar
      Keep stack-allocated Lisp objects fast rather than versatile. · 71a72686
      Dmitry Antipov authored
      * configure.ac (HAVE_STATEMENT_EXPRESSIONS): Remove.
      For USE_STACK_LISP_OBJECTS, we always assume __GNUC__.
      * lisp.h (union Aligned_Cons) [!GCALIGNED]: Define as such.
      (SCOPED_CONS_INITIALIZER): New macro.
      (scoped_cons) [USE_STACK_LISP_OBJECTS]: Use it.
      (USE_LOCAL_ALLOCA): Remove.
      (local_cons, local_list1, local_list2, local_list3, local_list4):
      Remove.  Stack overflow checking makes them too slow.
      (make_local_vector): Likewise.  Also we just don't have enough
      users for it.
      (enum LISP_STRING_OVERHEAD): Remove.
      (local_string_init, local_vector_init): Remove prototypes.
      (make_local_string, build_local_string): Redesign to target short
      compile-time string constants, fall back to regular string allocation
      where appropriate.
      (lisp_string_size): New function.
      (verify_ascii) [ENABLE_CHECKING]: Add prototype.
      * alloc.c (local_string_init, local_vector_init): Remove.
      (verify_ascii) [ENABLE_CHECKING]: New function.
      * buffer.c, charset.c, chartab.c, data.c, editfns.c, emacs.c, fileio.c:
      * fns.c, font.c, fontset.c, frame.c, keyboard.c, keymap.c, lread.c:
      * menu.c, minibuf.c, process.c, textprop.c, xdisp.c, xfns.c, xfont.c:
      * xselect.c, xterm.c: All related users changed.
      71a72686
  19. 25 Sep, 2014 2 commits
    • 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
    • Paul Eggert's avatar
      Fix local_cons etc. to not exhaust the stack when in a loop. · 10381f58
      Paul Eggert authored
      Problem reported in:
      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00696.html
      * buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
      * charset.c (load_charset_map_from_file, Ffind_charset_region)
      (Ffind_charset_string):
      * chartab.c (uniprop_encode_value_numeric, uniprop_table):
      * data.c (wrong_range):
      * editfns.c (Fpropertize, format2):
      * emacs.c (init_cmdargs, decode_env_path):
      * fileio.c (auto_save_error):
      * fns.c (Fyes_or_no_p):
      * font.c (font_style_to_value, font_parse_xlfd)
      (font_parse_family_registry, font_delete_unmatched)
      (font_add_log):
      * fontset.c (Fset_fontset_font):
      * frame.c (x_get_arg):
      * keyboard.c (echo_dash, safe_run_hooks_error, parse_menu_item)
      (read_char_minibuf_menu_prompt):
      * keymap.c (silly_event_symbol_error, describe_vector):
      * lread.c (load_warn_old_style_backquotes):
      * menu.c (single_menu_item):
      * minibuf.c (Fread_buffer):
      * process.c (status_message, Fformat_network_address)
      (server_accept_connection):
      * textprop.c (copy_text_properties):
      * xdisp.c (Fcurrent_bidi_paragraph_direction):
      * xfns.c (x_default_scroll_bar_color_parameter):
      * xfont.c (xfont_open):
      * xselect.c (x_clipboard_manager_error_1):
      * xterm.c (x_term_init):
      Put USE_LOCAL_ALLOCA at the start of the function.
      * fns.c (maybe_resize_hash_table): Use build_string instead of
      build_local_string, since we'd otherwise need a conditional
      USE_LOCAL_ALLOCA here, but this is just debugging output and is
      not worth the bother of optimization.
      * font.c (font_delete_unmatched): Remove by-hand code that
      observed MAX_ALLOCA limit, since it's now done automatically.
      * keymap.c (Fsingle_key_description): Put USE_SAFE_ALLOCA at top,
      since build_local_string needs its sa_alloc.
      * lisp.h (lisp_word_count): New function.
      (SAFE_ALLOCA_LISP): Use it.
      (USE_LOCAL_ALLOCA): New macro.
      (local_cons, make_local_vector, make_local_string):
      Observe the MAX_ALLOCA limit.
      (LISP_STRING_OVERHEAD): New constant.
      (make_local_string): Use it.
      10381f58
  20. 23 Sep, 2014 2 commits
    • Paul Eggert's avatar
      * lisp.h (lispstpcpy): Rename from lispstrcpy, and act like stpcpy. · 97914756
      Paul Eggert authored
      All callers changed.
      * xterm.c (x_term_init): Use new functionality to avoid two needs
      to compute a string length.
      97914756
    • Dmitry Antipov's avatar
      Use known length of a Lisp string to copy it faster. · 59e10fbd
      Dmitry Antipov authored
      * lisp.h (lispstrcpy): New function.  Add comment.
      * callproc.c (child_setup):
      * dbusbind.c (xd_append_arg):
      * doc.c (get_doc_string):
      * font.c (Ffont_xlfd_name):
      * frame.c (xrdb_get_resource):
      * process.c (Fmake_network_process, network_interface_info):
      * w32fns.c (Fx_open_connection):
      * w32proc.c (sys_spawnve):
      * xfns.c (select_visual):
      * xfont.c (xfont_list):
      * xsmfns.c (x_session_initialize):
      * xterm.c (x_term_init): Use it.
      59e10fbd
  21. 18 Sep, 2014 2 commits
    • Eli Zaretskii's avatar
      Clarify the doc strings of mouse-position and set-mouse-position. · 41932b21
      Eli Zaretskii authored
       src/frame.c (Fmouse_position, Fset_mouse_position): Clarify the
       units in which the position is measured.  (Bug#18493)
      41932b21
    • Dmitry Antipov's avatar
      More and more stack-allocated Lisp objects if USE_LOCAL_ALLOCATORS. · 3cab7dd4
      Dmitry Antipov authored
      * lisp.h (local_list4) [USE_LOCAL_ALLOCATORS]: New macro.
      [!USE_LOCAL_ALLOCATORS]: Fall back to regular list4.
      * frame.h (FRAME_PARAMETER): New macro.
      * dispnew.c (init_display):
      * fontset.c (Fset_fontset_font):
      * frame.c (x_default_parameter):
      * xfaces.c (set_font_frame_param, Finternal_merge_in_global_face):
      * xfns.c (x_default_scroll_bar_color_parameter)
      (x_default_font_parameter, x_create_tip_frame): Use it.
      * editfns.c (Fpropertize): Use local_cons.
      * process.c (status_message): Use build_local_string.
      * xfont.c (xfont_open): Use make_local_string.
      * xdisp.c (build_desired_tool_bar_string): Use local_list4.
      3cab7dd4
  22. 16 Sep, 2014 1 commit
    • Dmitry Antipov's avatar
      If USE_LOCAL_ALLOCATORS, allocate even more Lisp objects on stack. · b98b1a83
      Dmitry Antipov authored
      * charset.c (load_charset_map_from_file): Use scoped_list2
      and build_local_string.
      * buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
      * emacs.c (init_cmdargs, decode_env_path):
      * fileio.c (Fexpand_file_name):
      * fns.c (maybe_resize_hash_table) [ENABLE_CHECKING]:
      * frame.c (x_get_arg):
      * keyboard.c (safe_run_hooks_error):
      * lread.c (load_warn_old_style_backquotes):
      * xdisp.c (Fcurrent_bidi_paragraph_direction):
      * xfns.c (x_default_scroll_bar_color_parameter, select_visual):
      * xselect.c (x_clipboard_manager_error_1)
      (x_clipboard_manager_save_all):
      * xterm.c (x_term_init): Use build_local_string.
      b98b1a83
  23. 11 Sep, 2014 2 commits
    • Paul Eggert's avatar
      Spelling fixes. · 0f2ed592
      Paul Eggert authored
      * lisp/ses.el (ses-file-format-extend-parameter-list): Rename from
      ses-file-format-extend-paramter-list.  All uses changed.
      * lisp/gnus-cloud.el (gnus-cloud-parse-version-1): Fix misspelling
      of ":delete".
      0f2ed592
    • 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
  24. 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
  25. 03 Sep, 2014 1 commit
    • Martin Rudalics's avatar
      Clean up initialization and customization of horizontal scroll bars. · 568df136
      Martin Rudalics authored
      * frame.el (frame-initialize): Remove horizontal-scroll-bars
      from frame-initial-frame-alist.
      * scroll-bar.el (previous-horizontal-scroll-bar-mode)
      (horizontal-scroll-bar-mode-explicit)
      (set-horizontal-scroll-bar-mode, get-horizontal-scroll-bar-mode)
      (toggle-horizontal-scroll-bar): Remove.
      (horizontal-scroll-bar-mode): Remove defcustom.
      (horizontal-scroll-bar-mode): Fix doc-string.
      (scroll-bar-toolkit-scroll)
      (scroll-bar-toolkit-horizontal-scroll): Add doc-strings stubs.
      * buffer.c (scroll-bar-height): Fix typo in doc-string.
      * frame.c (Vdefault_frame_horizontal_scroll_bars): Remove
      variable.
      * nsfns.m (Fx_create_frame):
      * w32fns.c (Fx_create_frame):
      * xfns.c (Fx_create_frame): Default horizontal scroll bars to
      nil.
      568df136
  26. 12 Aug, 2014 1 commit
  27. 10 Aug, 2014 1 commit
    • Martin Rudalics's avatar
      Fix handling of menu bar line on TTY frames (Bug#18136) (Bug#18196). · c29f96fa
      Martin Rudalics authored
      * dispnew.c (handle_window_change_signal):
      * keyboard.c (Fsuspend_emacs): Call change_frame_size with
      frame's menu bar lines subtracted from height.
      * frame.c (frame_inhibit_resize): Inhibit resizing of TTY
      frames.
      (adjust_frame_size): Count in menu bar when setting FrameRows.
      (make_terminal_frame): When setting up the frame's lines and
      text height don't count in the menu bar.
      (Fmake_terminal_frame): Call adjust_frame_size with menu bar
      lines subtracted from height.
      (do_switch_frame): Set tty's FrameRows to number of total lines
      of frame.
      (Fframe_pixel_height, Fframe_pixel_width): If no window system
      is used, return total number of lines and columns.
      * menu.c (emulate_dialog_with_menu): Use FRAME_TOTAL_LINES instead
      of FRAME_LINES.
      * term.c (OUTPUT, tty_set_terminal_modes)
      (tty_set_terminal_window, tty_set_scroll_region)
      (tty_clear_to_end, tty_write_glyphs, tty_write_glyphs_with_face)
      (tty_ins_del_lines, tty_menu_display, tty_menu_activate): Use
      FRAME_TOTAL_LINES instead of FRAME_LINES.
      (Fresume_tty): Use FRAME_TOTAL_LINES instead of FRAME_LINES.
      Call change_frame_size with frame's menu bar lines subtracted
      from height.
      * w32console.c (w32con_clear_to_end, w32con_clear_frame)
      (w32con_ins_del_lines): Use FRAME_TOTAL_LINES instead of
      FRAME_LINES.
      c29f96fa
  28. 04 Aug, 2014 1 commit
    • Martin Rudalics's avatar
      Fix scroll bar handling for non-toolkit builds. · 4a75c94d
      Martin Rudalics authored
      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS): Condition
      correctly according to toolkit used.
      * frame.c (make_initial_frame, make_terminal_frame)
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height)
      (Vdefault_frame_horizontal_scroll_bars): Correctly condition
      assignments according to presence of toolkit scrollbars.
      * window.h (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Condition
      correctly according to toolkit used.
      * window.c (set_window_scroll_bars): Set horizontal scroll bar
      only if toolkit supports it.
      * w32term.c (w32_redeem_scroll_bar): Always redeem scroll bar if
      present.
      * xterm.c (x_scroll_bar_create): Initialize horizontal slot for
      non-toolkit builds.
      (XTredeem_scroll_bar): Always redeem scroll bar if present.
      4a75c94d
  29. 01 Aug, 2014 3 commits
  30. 31 Jul, 2014 1 commit
  31. 29 Jul, 2014 1 commit