1. 21 Oct, 2015 1 commit
    • Paul Eggert's avatar
      Include-file cleanup for src directory · 63cfb75f
      Paul Eggert authored
      Omit ‘#include "foo.h"’ unless the file needs foo.h (Bug#21707).
      In a few cases, add ‘#include "foo.h"’ if the file needs foo.h
      but does not include it directly.  As a general rule, a source
      file should include foo.h if it needs the interfaces that foo.h
      defines.
      * src/alloc.c: Don’t include process.h.  Include dispextern.h,
      systime.h.
      * src/atimer.c: Don’t include blockinput.h.
      * src/buffer.c: Include coding.h, systime.h.  Don’t include
      keyboard.h, coding.h.
      * src/callint.c: Don’t include commands.h, keymap.h.
      * src/callproc.c: Don’t include character.h, ccl.h, composite.h,
      systty.h, termhooks.h.
      * src/casetab.c: Don’t include character.h.
      * src/category.c: Don’t include charset.h, keymap.h.
      * src/ccl.h: Don’t include character.h.
      * src/character.c: Don’t include charset.h.
      * src/charset.c: Don’t include disptab.h.
      * src/chartab.c: Don’t include ccl.h.
      * src/cm.c: Don’t include frame.h, termhooks.h.
      * src/cmds.c: Don’t include window.h, dispextern.h.
      * src/coding.c: Don’t include window.h, frame.h.
      * src/composite.c: Include composite.h.  Don’t include window.h,
      font.h.
      * src/data.c: Don’t include syssignal.h, termhooks.h, font.h.
      * src/dbusbind.c: Don’t include frame.h.
      * src/decompress.c: Don’t include character.h.
      * src/dired.c: Don’t include character.h, commands.h, charset.h.
      * src/dispnew.c: Don’t include character.h, indent.h, intervals.h,
      process.h, timespec.h.  Include systime.h.
      * src/doc.c: Include coding.h.  Don’t include keyboard.h.
      * src/editfns.c: Include composite.h.  Don’t include frame.h.
      * src/emacs.c: Include fcntl.h, coding.h.  Don’t include
      commands.h, systty.h..
      * src/fileio.c: Don’t include intervals.h, dispextern.h.
      Include composite.h.
      * src/filelock.c: Don’t include character.h, systime.h.
      * src/fns.c: Don’t include time.h, commands.h, keyboard.h,
      keymap.h, frame.h, blockinput.h, xterm.h.  Include composite.h.
      * src/font.c: Include termhooks.h.
      * src/font.h: Don’t include ccl.h, frame.h.  Add forward decls of
      struct composition_it, struct face, struct glyph_string.
      * src/fontset.c: Don’t include buffer.h, ccl.h, keyboard.h,
      intervals.h, window.h, termhooks.h.
      * src/frame.c: Don’t include character.h, commands.h, font.h.
      * src/frame.h: Don’t include dispextern.h.
      * src/fringe.c: Don’t include character.h.
      * src/ftcrfont.c: Don’t include dispextern.h, frame.h,
      character.h, charset.h, fontset.h.
      * src/ftfont.c: Don’t include frame.h, blockinput.h, coding.h,
      fontset.h.
      * src/ftxfont.c: Don’t include dispextern.h, character.h,
      charset.h, fontset.h.
      * src/gfilenotify.c: Don’t include frame.h, process.h.
      * src/gtkutil.c: Include dispextern.h, frame.h, systime.h.
      Don’t include syssignal.h, buffer.h, charset.h, font.h.
      * src/gtkutil.h: Don’t include frame.h.
      * src/image.c: Include fcntl.h and stdio.h instead of sysstdio.h.
      Don’t include character.h.
      * src/indent.c: Don’t include keyboard.h, termchar.h.
      * src/inotify.c: Don’t include character.h, frame.h.
      * src/insdel.c: Include composite.h.  Don’t include blockinput.h.
      * src/intervals.c: Don’t include character.h, keyboard.h.
      * src/intervals.h: Don’t include dispextern.h, composite.h.
      * src/keyboard.c: Don’t include sysstdio.h, disptab.h, puresize.h.
      Include coding.h.
      * src/keyboard.h: Don’t incldue systime.h.
      * src/keymap.c: Don’t include charset.h, frame.h.
      * src/lread.c: Include dispextern.h and systime.h.
      Don’t include frame.h.  Include systime.h.
      * src/macros.c: Don’t include commands.h, character.h, buffer.h.
      * src/menu.c: Include character.h, coding.h.  Don’t include
      dispextern.h.
      * src/menu.h: Don’t include systime.h.
      * src/minibuf.c: Don’t include commands.h, dispextern.h, syntax.h,
      intervals.h, termhooks.h.
      * src/print.c: Include coding.h.  Don’t include keyboard.h,
      window.h, dispextern.h, termchar.h, termhooks.h, font.h.
      Add forward decl of struct terminal.
      * src/process.c: Don’t include termhooks.h, commands.h,
      dispextern.h, composite.h.
      * src/region-cache.c: Don’t include character.h.
      * src/scroll.c: Don’t include keyboard.h, window.h.
      * src/search.c: Don’t include category.h, commands.h.
      * src/sound.c: Don’t include dispextern.h.
      * src/syntax.c: Don’t include command.h, keymap.h.
      * src/sysdep.c: Don’t include window.h, dispextern.h.
      * src/systime.h: Use ‘#ifdef emacs’, not ‘#ifdef EMACS_LISP_H’,
      * src/term.c: Don’t include systty.h, intervals.h, xterm.h.
      * src/terminal.c: Include character.h.
      Don’t include charset.h, coding.h.
      * src/textprop.c: Don’t include character.h.
      * src/undo.c: Don’t include character.h, commands.h, window.h.
      * src/unexsol.c: Don’t include character.h, charset.h.
      * src/widget.c: Include widget.h.  Don’t include keyboard.h,
      window.h, dispextern.h, blockinput.h, character.h, font.h.
      * src/widgetprv.h: Don’t include widget.h.
      * src/window.c: Don’t include character.h, menu.h, intervals.h.
      * src/xdisp.c: Include composite.h, systime.h.  Don’t include
      macros.h, process.h.
      * src/xfaces.c: Don’t include charset.h, keyboard.h, termhooks.h,
      intervals.h.
      * src/xfns.c: Don’t include menu.h, character.h, intervals.h,
      epaths.h, fontset.h, systime.h, atimer.h, termchar.h.
      * src/xfont.c: Don’t include dispextern.h, fontset.h, ccl.h.
      * src/xftfont.c: Don’t include dispextern.h, character.h, fontset.h.
      * src/xgselect.c: Don’t include timespec.h, frame.h.
      Include systime.h.
      * src/xgselect.h: Don’t include time.h.
      Use a forward decl to struct timespec instead.
      * src/xmenu.c: Don’t include keymap.h, character.h, charset.h,
      dispextern.h.  Include systime.h.
      * src/xml.c: Don’t include character.h.
      * src/xrdb.c [USE_MOTIF]: Don’t include keyboard.h.
      * src/xselect.c: Don’t include dispextern.h, character.h,
      buffer.h, process.h.
      * src/xsmfns.c: Don’t include systime.h, sysselect.h.
      * src/xterm.c: Don’t include syssignal.h, charset.h, disptab.h,
      intervals.h process.h, keymap.h, xgselect.h.  Include composite.h.
      63cfb75f
  2. 13 Oct, 2015 1 commit
    • Martin Rudalics's avatar
      Allow setting frame pixel sizes from frame parameters (Bug#21415) · d4fe840d
      Martin Rudalics authored
      Also fix some misfeatures in frame (re-)sizing code, add more
      debugging information and remove some dead code.
      
      * lisp/frame.el (frame-notice-user-settings, make-frame): Change
      parameter names when setting `frame-size-history'.
      (frame--size-history): New function.
      
      * src/frame.c (frame_inhibit_resize): If frame has not been made
      yet, return t if inhibit_horizontal_resize or
      inhibit_vertical_resize bit have been set.
      (adjust_frame_size): Simplify.
      (make_frame): Initialize inhibit_horizontal_resize,
      inhibit_vertical_resize, tool_bar_redisplayed, tool_bar_resized.
      (Fframe_after_make_frame): Reset inhibit_horizontal_resize and
      inhibit_vertical_resize slots.
      (x_set_frame_parameters): Handle `text-pixels' specification for
      width and height parameters.  Don't consider new_height or
      new_width changes.  Call adjust_frame_size instead of
      Fset_frame_size.
      (x_figure_window_size): Two new arguments x_width and y_width
      returning frame's figures width and height.  Calculate tool bar
      height before frame sizes so SET_FRAME_HEIGHT can pick it up.
      Handle `text-pixels' specification for width and height
      parameters.
      (Qtext_pixels, Qx_set_frame_parameters, Qset_frame_size)
      (Qx_set_window_size_1, Qx_set_window_size_2)
      (Qx_set_window_size_3, Qx_set_menu_bar_lines)
      (Qupdate_frame_menubar, Qfree_frame_menubar_1)
      (Qfree_frame_menubar_2): New symbols.
      * src/frame.h (structure frame): New booleans
      tool_bar_redisplayed, tool_bar_resized,
      inhibit_horizontal_resize, inhibit_vertical_resize.
      (x_figure_window_size): Update external declaration.
      * src/gtkutil.c (xg_frame_set_char_size): Set size hints before
      calling gtk_window_resize.
      (update_frame_tool_bar): Make inhibiting of frame resizing more
      discriminative.  Set tool_bar_resized bit.
      * src/nsfns.m (x_set_tool_bar_lines): Make inhibiting of frame
      resizing more discriminative.  Call adjust_frame_size instead of
      x_set_window_size.
      (Fx_create_frame): Handle x_width and x_height if
      set by x_figure_window_size.
      * src/nsterm.m (x_set_window_size): For GNUSTEP build don't
      subtract 3 from tool bar height.
      (x_set_window_size): Add frame_size_history_add call.
      (x_new_font): Call adjust_frame_size instead of
      x_set_window_size.
      * src/w32fns.c (x_change_tool_bar_height): Reset
      tool_bar_redisplayed and tool_bar_resized bits when adding tool
      bar.  Make inhibiting of frame resizing more discriminative.
      (w32_wnd_proc): Remove dead code in WM_WINDOWPOSCHANGING case.
      (Fx_create_frame): Handle x_width and x_height if set by
      x_figure_window_size.  Set size hints before adjusting frame size.
      (x_create_tip_frame): Adjust x_figure_window_size call.
      * src/w32term.c (x_set_window_size): Add frame_size_history_add
      call.
      * src/widget.c (set_frame_size): Remove dead code.  Add
      frame_size_history_add call.  When frame_resize_pixelwise is t
      use FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT instead of
      pixel_width and pixel_height.
      (update_various_frame_slots): Remove dead code.
      (EmacsFrameResize): Add more information in
      frame_size_history_add call.
      (EmacsFrameQueryGeometry): Round only when frame_resize_pixelwise
      is not set.
      * src/xdisp.c (redisplay_tool_bar): Set tool_bar_redisplayed bits.
      * src/xfns.c (x_set_menu_bar_lines): Change argument name.
      (x_change_tool_bar_height): Reset tool_bar_redisplayed and
      tool_bar_resized bits when adding tool bar.  Make inhibiting of
      frame resizing more discriminative.
      (Fx_create_frame): Handle x_width and x_height if set by
      x_figure_window_size.  Set size hints before adjusting frame size.
      (x_create_tip_frame): Adjust x_figure_window_size call.
      * src/xmenu.c (update_frame_menubar): Don't handle Lucid specially.
      (set_frame_menubar): On Lucid never add core-border-width to
      avoid that adding XtNinternalBorderWidth adds it again.
      (free_frame_menubar): Handle frame_inhibit_resize true for Motif.
      * src/xterm.c (x_new_font): In non-toolkit case handle size
      change of menu bar.
      (x_set_window_size_1): Fix calls to frame_size_history_add.
      (x_wm_set_size_hint): Remove dead code.  Set
      size_hints.min_width and size_hints.min_height to base_width and
      base_height.
      d4fe840d
  3. 11 Oct, 2015 3 commits
    • Ken Raeburn's avatar
      Fix cursor setting for tip frame; re-enable cursor generation. · ec2d9902
      Ken Raeburn authored
      * src/xfns.c (x_create_tip_frame): Include the cursor in the window
      attributes sent when creating the new X window.  Don't skip setting
      the pointerColor parameter.
      ec2d9902
    • Ken Raeburn's avatar
      Rewrite x_set_mouse_color to sync less. · 08e27d29
      Ken Raeburn authored
      We can track serial numbers of X requests and correlate error events
      with the associated requests.  This way we can identify errors for
      specific calls without having to use XSync after every one.
      
      * src/xfns.c (enum mouse_cursor): New type.
      (struct mouse_cursor_types, struct mouse_cursor_data): New types.
      (mouse_cursor_types): New array listing the Lisp variables and default
      cursor appearances for each cursor type.
      (x_set_mouse_color_handler): New function; checks error event serial
      number against submitted requests.
      (x_set_mouse_color): Updated to use the new error handler callback,
      and to be more table-driven, to simplify repetitious code.
      08e27d29
    • Ken Raeburn's avatar
      Introduce x_uncatch_errors_after_check to reduce XSync calls. · 5504ede9
      Ken Raeburn authored
      Both x_had_errors_p and x_check_errors call XSync, so if they're
      immediately followed by x_uncatch_errors, its XSync call will be
      redundant, resulting in a wasted round trip to the X server.
      
      * src/xterm.c (x_uncatch_errors_after_check): New routine; a copy of
      x_uncatch_errors without the XSync call.
      (XTmouse_position, x_wm_supports):
      * src/xfns.c (x_set_mouse_color):
      * src/xmenu.c (Fx_menu_bar_open_internal):
      * src/xselect.c (x_own_selection, x_get_foreign_selection):
      (Fx_get_atom_name): Call it instead of x_uncatch_errors.
      * src/xterm.h (x_uncatch_errors_after_check): Declare.
      5504ede9
  4. 08 Oct, 2015 4 commits
    • Paul Eggert's avatar
      Fix problems caught with --enable-gcc-warnings · 5a3a6aa7
      Paul Eggert authored
      * src/image.c (lookup_rgb_color):
      * src/xfns.c (x_defined_color):
      * src/xterm.c (x_parse_color):
      Remove unused locals.
      5a3a6aa7
    • Ken Raeburn's avatar
      Disable non-working pointerColor setting for X tooltip frame. · 1f37714a
      Ken Raeburn authored
      It generates a bunch of server traffic, but there's some bug wherein
      the new mouse cursor settings don't seem to get used.  In most
      situations the cursor isn't likely to be seen anyway, so it's not
      urgent to fix.
      
      * src/xfns.c (x_create_tip_frame): Don't set pointerColor.
      1f37714a
    • Ken Raeburn's avatar
      Reduce some unnecessary X calls. · ee529429
      Ken Raeburn authored
      * src/xfns.c (x_real_pos_and_offsets): Remove a redundant XGetGeometry
      call.  If border width is wanted, get it from the XGetGeometry call
      instead of calling XGetWindowAttributes on the same window.  Skip some
      X calls if we've already detected an error from the X server.
      * src/xterm.c (x_wm_supports): Delete x_sync before x_had_errors_p.
      (handle_one_xevent): Delete XSync call before x_uncatch_errors.
      ee529429
    • Ken Raeburn's avatar
      Cache XParseColor results in the X display info structure. · b8eea1d7
      Ken Raeburn authored
      With repeated lookups of foreground and background colors for multiple
      faces per frame, we issue a lot of redundant color name lookups to the
      X server, waiting every time for the response.  On a remote network
      with, say, 30ms round-trip time, this can add nearly a full second to
      creation of a new frame.
      
      * src/gtkutil.c (xg_check_special_colors): Call x_parse_color.
      * src/image.c (get_spec_bg_or_alpha_as_argb):
      (xpm_init_color_cache, xpm_lookup_color):
      * src/xfns.c (x_defined_color):
      * src/xterm.c (x_parse_color): New function; caches color names not
      starting with "#" in the display-info structure.
      (x_delete_display): Delete the cache content.
      * src/xterm.h (struct color_name_cache_entry): New type.
      (x_parse_color): Declare.
      (struct x_display_info): Add a new field for the cache.
      b8eea1d7
  5. 30 Sep, 2015 1 commit
    • Stefan Monnier's avatar
      Try to avoid redisplaying all frames when creating a new one · 8b1df960
      Stefan Monnier authored
      * src/xfns.c (x_set_menu_bar_lines, x_change_tool_bar_height):
      * src/xfaces.c (Finternal_make_lisp_face, Finternal_copy_lisp_face)
      (Finternal_set_lisp_face_attribute, update_face_from_frame_parameter):
      * src/frame.c (x_set_screen_gamma): Set the specific frame's
      `redisplay' bit rather than windows_or_buffers_changed.
      
      * src/window.c (apply_window_adjustment): Remove redundant setting of
      windows_or_buffers_changed.
      
      * src/xdisp.c (redisplay_internal): Set the specific frame's
      `redisplay' bit rather than update_mode_lines in response to
      cursor_type_changed.
      (syms_of_xdisp): Use hash-tables for redisplay_*_cause tables.
      (AINC): Adjust accordingly.
      8b1df960
  6. 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
    • Martin Rudalics's avatar
      Remove tool_bar_redisplayed_once and associated code. · 1636e8c7
      Martin Rudalics authored
      * src/frame.h (tool_bar_redisplayed_once): Remove slot.
      * src/frame.c (make_frame, x_set_font): Remove initialization of
      f->tool_bar_redisplayed_once.
      * src/w32fns.c (x_change_tool_bar_height):
      * src/xfns.c (x_change_tool_bar_height): Don't check for
      f->tool_bar_redisplayed_once.
      * src/xdisp.c (redisplay_internal): Remove handling of
      f->tool_bar_redisplayed_once.
      1636e8c7
  7. 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
  8. 18 Aug, 2015 2 commits
    • Paul Eggert's avatar
      Fix file name encodings in diagnostics · 63673686
      Paul Eggert authored
      Also, close some minor races when opening image files, by opening
      them once instead of multiple times.
      * src/gtkutil.c (xg_get_image_for_pixmap):
      * src/image.c (xpm_load, tiff_load, gif_load, imagemagick_load)
      (svg_load):
      * src/nsimage.m (allocInitFromFile:):
      * src/xfns.c (xg_set_icon):
      Encode file name, since x_find_image_file no longer does that.
      * src/image.c (x_find_image_fd): New function.
      (x_find_image_file): Use it.  Do not encode resulting file name,
      since callers sometimes need it decoded.
      (slurp_file): File arg is now a fd, not a file name.
      All callers changed.  This saves us having to open the file twice.
      (xbm_load, xpm_load, pbm_load, png_load_body, jpeg_load_body)
      (svg_load):
      Use x_find_image_fd and fdopen to save a file-open.
      Report file name that failed.
      * src/lread.c (openp): If PREDICATE is t, open the file in binary mode.
      63673686
    • Martin Rudalics's avatar
      Rewrite and add frame geometry related functions. · c29a51df
      Martin Rudalics authored
      * src/frame.c (Fframe_position): New function.
      (Fset_frame_position): Rename parameters and rewrite doc-string.
      (syms_of_frame): Remove Qframe_position, Qframe_outer_size,
      Qtitle_height and Qframe_inner_size.  Add Qouter_edges,
      Qouter_position, Qouter_size, Qnative_edges, Qinner_edges,
      Qtitle_bar_size.
      * src/nsfns.m (frame_geometry): New function.
      (Fx_frame_geometry): Call frame_geometry.
      (Fx_frame_edges): New function.
      * src/w32fns.c (C_CHILDREN_TITLEBAR, TITLEBAR_INFO)
      (GetTitleBarInfo_Proc): Define these so we can use the
      GetTitleBarInfo API.
      (Fw32_frame_menu_bar_size, Fw32_frame_rect): Remove.
      (Fx_frame_geometry): Rewrite.
      (Fx_frame_edges, Fx_mouse_absolute_pixel_position)
      (Fx_set_mouse_absolute_pixel_position): New functions.
      * src/xfns.c (frame_geometry): New function.
      (Fx_frame_geometry): Call frame_geometry.
      (Fx_frame_edges, Fx_mouse_absolute_pixel_position)
      (Fx_set_mouse_absolute_pixel_position): New functions.
      c29a51df
  9. 26 Jul, 2015 1 commit
  10. 07 Jul, 2015 1 commit
  11. 18 Jun, 2015 1 commit
  12. 16 Jun, 2015 1 commit
    • Martin Rudalics's avatar
      Fix handling of image cache refcounts. (Bug#20802) · 93ae9f46
      Martin Rudalics authored
      This backports Eli Zaretskii's solution of this problem for W32
      to X and NS.
      
      * src/nsfns.m (image_cache_refcount): Define unconditionally.
      (unwind_create_frame): If the image cache's reference count
      hasn't been updated yet, do that now.
      (Fx_create_frame): Set image_cache_refcount unconditionally.
      * src/xfns.c (image_cache_refcount): Define unconditionally.
      (unwind_create_frame): If the image cache's reference count
      hasn't been updated yet, do that now.
      (Fx_create_frame, x_create_tip_frame): Set image_cache_refcount
      unconditionally.
      * src/w32fns.c (image_cache_refcount): Make it a ptrdiff_t as on
      X and NS.
      93ae9f46
  13. 01 Jun, 2015 1 commit
    • Paul Eggert's avatar
      Avoid grave accent quoting in stderr diagnostics · 2c656f7d
      Paul Eggert authored
      A few Emacs diagnostics go directly to stderr, and so can't easily
      contain curved quotes (as non-UTF-8 locales might mishandle them).
      Instead of bothering to add support for this rarity, reword the
      diagnostics so that they don't use grave accent to quote.
      * src/alloc.c (mark_memory): Fix comment.
      * src/buffer.c (init_buffer):
      * src/dispnew.c (init_display):
      * src/emacs.c (main, sort_args):
      * src/lread.c (dir_warning):
      * src/term.c (init_tty):
      * src/unexmacosx.c (unexec):
      * src/xfns.c (select_visual):
      * src/xterm.c (cvt_string_to_pixel, x_io_error_quitter):
      Reword stderr diagnostics to avoid quoting `like this'.
      * src/unexmacosx.c: Include errno.h.
      * src/xfns.c (select_visual): Encode value for locale.
      2c656f7d
  14. 29 May, 2015 1 commit
  15. 21 May, 2015 1 commit
  16. 27 Feb, 2015 1 commit
    • Jan D's avatar
      Adjust offset and border calculations for X. · 05379435
      Jan D authored
      * xfns.c (x_real_pos_and_offsets): Take outer_border as arg also.
      Initialize all args.  Get outer_border from window attributes.
      Fix typo for top_offset_y.
      (x_real_positions): Adjust for new arg to x_real_pos_and_offsets.
      (Fx_frame_geometry): Get outer_border also.  Use attrs.width/height.
      
      * xmenu.c (x_menu_show): Adjust for new arg to x_real_pos_and_offsets.
      
      * xterm.h (x_real_pos_and_offsets): Take outer_border as arg also.
      05379435
  17. 26 Feb, 2015 1 commit
  18. 25 Feb, 2015 1 commit
    • Jan D's avatar
      Redo the whole window offsets and coordinate translation for X. · 719fd933
      Jan D authored
      * frame.h (struct frame): Remove x_pixels_diff, y_pixels_diff.
      
      * w32fns.c (x_real_positions): Remove setting of x_pixels_diff,
      y_pixels_diff.
      
      * xfns.c (x_real_pos_and_offsets): New function, basically the code
      from x_real_positions.
      (x_real_positions): Call x_real_pos_and_offsets.
      (x_relative_mouse_position): Use XTranslateCoordinates instead of
      OUTER_TO_INNER_DIFF macros.
      (Fx_frame_geometry): Get offsets with x_real_pos_and_offsets,
      border from window attributes.  Adjust tool bar and menu widths.
      
      * xmenu.c (create_and_show_popup_menu): Use XTranslateCoordinates
      instead of OUTER_TO_INNER_DIFF macros.
      
      * xterm.h (struct x_output): Remove x_pixels_outer_diff,
      y_pixels_outer_diff, FRAME_OUTER_TO_INNER_DIFF_X,
      FRAME_OUTER_TO_INNER_DIFF_Y. Declare x_real_pos_and_offsets.
      719fd933
  19. 21 Feb, 2015 1 commit
    • Paul Eggert's avatar
      Prefer 'Qfoo' to 'intern ("foo")' · 3ebf0630
      Paul Eggert authored
      * buffer.c (syms_of_buffer):
      * bytecode.c (exec_byte_code):
      * callint.c (Fcall_interactively):
      * callproc.c (create_temp_file):
      * charset.c (define_charset_internal):
      * coding.c (syms_of_coding):
      * editfns.c (syms_of_editfns):
      * emacs.c (main):
      * fns.c (syms_of_fns):
      * frame.c (delete_frame, Fframe_parameters):
      * keyboard.c (syms_of_keyboard):
      * keymap.c (syms_of_keymap):
      * minibuf.c (read_minibuf, syms_of_minibuf):
      * nsfns.m (ns_cursor_type_to_lisp):
      * textprop.c (syms_of_textprop):
      * xdisp.c (Fformat_mode_line, syms_of_xdisp):
      * xfns.c (x_create_tip_frame, Fx_select_font):
      * xml.c (parse_region):
      Prefer constants like 'Qfoo' to calls like 'intern ("foo")'.
      * buffer.c (syms_of_buffer): OK to do (put 'erase-buffer 'disabled
      t) here now ...
      (keys_of_buffer): ... instead of here.
      * ftfont.c (syms_of_ftfont): Move DEFSYM of Qmono from here ...
      * xfns.c (syms_of_xfns): ... to here, since ftfont.c is more
      optional than xfns.c.
      3ebf0630
  20. 16 Feb, 2015 1 commit
    • YAMAMOTO Mitsuharu's avatar
      Modernize k&r cairo-related function declarations. · a7930e12
      YAMAMOTO Mitsuharu authored
      * gtkutil.c (xg_page_setup_dialog, xg_get_page_setup, draw_page)
      (xg_print_frames_dialog): Modernize k&r declarations.
      
      * xfns.c (Fx_export_frames, Fx_page_setup_dialog, Fx_get_page_setup)
      (Fx_print_frames_dialog): Modernize k&r declarations.
      
      * xterm.c (x_gc_get_ext_data, x_extension_initialize, x_begin_cr_clip)
      (x_end_cr_clip, x_set_cr_source_with_gc_foreground)
      (x_set_cr_source_with_gc_background, x_cr_define_fringe_bitmap)
      (x_cr_destroy_fringe_bitmap, x_cr_draw_frame, x_cr_accumulate_data)
      (x_cr_destroy, x_cr_export_frames, x_prepare_for_xlibdraw)
      (x_set_clip_rectangles, x_reset_clip_rectangles, x_fill_rectangle)
      (x_draw_rectangle, x_clear_window, x_fill_trapezoid_for_relief)
      (x_clear_area): Modernize k&r declarations.
      a7930e12
  21. 11 Feb, 2015 1 commit
    • Jan D's avatar
      Add cairo drawing. · dddcc0e7
      Jan D authored
      * configure.ac (with-cairo): New option.
      (USE_CAIRO): Default to yes for Gtk+ 3.  Add code to test for cairo,
      set CAIRO_CFLAGS, CAIRO_LIBS.  Add ftcrfonto to FONT_OBJ if cairo.
      Output "Does Emacs use cairo?".
      
      * lisp/version.el (emacs-version): Add cairo version.
      
      * src/Makefile.in (CAIRO_CFLAGS, CAIRO_LIBS): New variables.
      (FONT_OBJ): Add comment about ftcrfont.
      (ALL_CFLAGS): Add CAIRO_CFLAGS.
      (LIBES): Add CAIRO_LIBS.
      
      * src/dispextern.h (struct image): Add cr_data for cairo.
      (x_cr_init_fringe): Declare.
      
      * src/font.c (syms_of_font): Call syms_of_ftcrfont for cairo.
      
      * src/font.h (ftcrfont_driver, syms_of_ftcrfont): Declare
      
      * src/fringe.c (x_cr_init_fringe): New function name that shares code
      with w32_init_fringe.
      
      * src/ftcrfont.c: New font driver for cairo, based on the ftfont driver.
      
      * src/ftfont.c (ftfont_info_size); New global variable.
      (ftfont_open2): New extern function almost the same as old ftfont_open,
      but takes the font_object as argument.
      (ftfont_open): Build font object and call ftfont_open2.
      
      * src/ftfont.h (ftfont_open2, ftfont_info_size): Declare.
      
      * src/gtkutil.c (xg_clear_under_internal_border)
      (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos): Only
      queue_draw if not cairo.  Change args to x_clear_area.
      (xg_get_font): Use Qftcr when using cairo, Qxft otherwise.
      (xg_page_setup_dialog, xg_get_page_setup, draw_page)
      (xg_print_frames_dialog): New functions for printing.
      
      * src/gtkutil.h (xg_page_setup_dialog, xg_get_page_setup)
      (xg_print_frames_dialog): Declare.
      
      * src/image.c: Add defined (USE_CAIRO) for PNG.
      Add !defined USE_CAIRO for W32 PNG code.
      (x_clear_image): If cairo, destroy the surface in cr_data.
      (png_load): Add new cairo compatible implementation.
      (lookup_image_type): Add defined (USE_CAIRO) for define png_type.
      
      * src/xfns.c: New section Printing.
      (x-export-frames, x-page-setup-dialog, x-get-page-setup)
      (x-print-frames-dialog): New printing functions.
      (Fx_create_frame, x_create_tip_frame): Register ftcrfont if
      cairo.
      (syms_of_xfns): Defsym Qorientation, Qtop_margin, Qbottom_margin,
      Qportrait, Qlandscape, Qreverse_portrait, Qreverse_landscape).
      (syms_of_xfns): Provide cairo and defvar cairo-version-string.
      defsubr Sx_page_setup_dialog, Sx_get_page_setup, Sx_print_frames_dialog.
      
      * src/xterm.c (x_clear_area1, x_prepare_for_xlibdraw)
      (x_set_clip_rectangles, x_reset_clip_rectangles, x_fill_rectangle)
      (x_draw_rectangle, x_fill_trapezoid_for_relief, x_clear_window)
      (x_gc_get_ext_data, x_extension_initialize, x_cr_accumulate_data):
      Declare.
      (FRAME_CR_CONTEXT, FRAME_CR_SURFACE): New macros.
      (max_fringe_bmp, fringe_bmp): New variables.
      (x_gc_get_ext_data, x_extension_initialize)
      (x_cr_destroy_surface, x_begin_cr_clip, x_end_cr_clip)
      (x_set_cr_source_with_gc_foreground)
      (x_set_cr_source_with_gc_background, x_cr_define_fringe_bitmap)
      (x_cr_destroy_fringe_bitmap, x_cr_draw_image, x_cr_draw_frame)
      (x_cr_accumulate_data, x_cr_destroy, x_cr_export_frames)
      (x_prepare_for_xlibdraw, x_set_clip_rectangles)
      (x_reset_clip_rectangles, x_fill_rectangle, x_draw_rectangle)
      (x_clear_window, x_fill_trapezoid_for_relief): New functions.
      (x_update_begin): Create cairo surface if needed.
      (x_draw_vertical_window_border): Call x_fill_rectangle for cairo.
      (x_update_end): Paint cairo drawing surface to xlib surface.
      (x_clear_under_internal_border, x_after_update_window_line): Adjust
      arguments to x_clear_area.
      (x_draw_fringe_bitmap): Call x_fill_rectangle.  Get GC values and
      call x_cr_draw_image for cairo.  Call x_reset_clip_rectangles instead
      of XSetClipMask.
      (x_set_glyph_string_clipping)
      (x_set_glyph_string_clipping_exactly): Use x_set_clip_rectangles
      instead of XSetClipRectangles.
      (x_clear_glyph_string_rect, x_draw_glyph_string_background): Use
      x_fill_rectangle instead of XFillRectangle.
      (x_draw_glyph_string_foreground)
      (x_draw_composite_glyph_string_foreground)
      (x_draw_glyphless_glyph_string_foreground): Use x_draw_rectangle instead
      of XDrawRectangle.
      (x_draw_relief_rect): Add code for USE_CAIRO.
      Call x_reset_clip_rectangles instead of XSetClipMask.
      (x_draw_box_rect): x_set_clip_rectangles instead of XSetClipRectangles,
      x_fill_rectangle instead of XFillRectangle, x_reset_clip_rectangles
      instead of XSetClipMask.
      (x_draw_image_foreground, x_draw_image_foreground_1):
      x_draw_rectangle instead of XDrawRectangle.
      (x_draw_glyph_string_bg_rect): x_fill_rectangle instead of
      XFillRectangle.
      (x_draw_image_glyph_string): If img has cr_data, use it as
      a cairo surface.
      (x_draw_stretch_glyph_string): x_set_clip_rectangles instead of
      XSetClipRectangles, x_fill_rectangle instead of XFillRectangle.
      (x_draw_glyph_string): x_fill_rectangle instead of XFillRectangle.,
      x_reset_clip_rectangles instead of XSetClipMask.
      (x_shift_glyphs_for_insert): Call x_prepare_for_xlibdraw.
      (x_clear_area1): New function that calls XClearArea.
      (x_clear_area): Takes frame as parameter, calls x_clear_area1 for
      non-cairo.
      (x_clear_frame): x_clear_window instead of XClearWindow.
      (x_scroll_run): Set frame garbaged if cairo.
      (XTmouse_position): Initialize *part to 0.
      (x_scroll_bar_create): Adjust arguments to x_clear_area.
      (x_scroll_bar_set_handle): x_clear_area1 instead of x_clear_area,
      x_fill_rectangle instead of XFillRectangle.
      (XTset_vertical_scroll_bar, XTset_horizontal_scroll_bar): Adjust
      arguments to x_clear_area.
      (x_scroll_bar_expose): x_draw_rectangle instead of XDrawRectangle.
      (handle_one_xevent): Adjust arguments to x_clear_area.
      Destroy cairo surface for frame if ConfigureNotify.
      (x_clip_to_row): x_set_clip_rectangles instead of XSetClipRectangles.
      (x_draw_hollow_cursor): x_draw_rectangle instead of XDrawRectangle,
      x_reset_clip_rectangles instead of XSetClipMask.
      (x_draw_bar_cursor): x_fill_rectangle instead of XFillRectangle,
      x_reset_clip_rectangles instead of XSetClipMask.
      (x_clear_frame_area): Adjust arguments to x_clear_area.
      (x_free_frame_resources): Call x_prepare_for_xlibdraw.
      (x_term_init): Call x_extension_initialize if cairo.
      (x_redisplay_interface): Add x_cr_define_fringe_bitmap,
      x_cr_destroy_fringe_bitmap for cairo.
      (x_initialize): Call x_cr_init_fringe for cairo.
      
      * src/xterm.h: Add include of cairo header files.
      (x_bitmap_record): Add img if cairo.
      (x_gc_ext_data): New struct for cairo.
      (x_display_info): Add ext_codes for cairo.
      (x_output): Add cr_context and cr_surface for cairo.
      (x_clear_area): Change arguments from Display*/Window to frame pointer.
      (x_query_color, x_begin_cr_clip, x_end_cr_clip)
      (x_set_cr_source_with_gc_foreground, x_set_cr_source_with_gc_background)
      (x_cr_draw_frame, x_cr_export_frames): Declare.
      dddcc0e7
  22. 08 Feb, 2015 1 commit
    • Paul Eggert's avatar
      Minor tweaks to frame_size_history_add · 61320cc9
      Paul Eggert authored
      * frame.c (frame_size_history_add): Don't assume length fits in 'int'.
      Prefer XCAR and XCDR to Fcar and Fcdr when the arg is a cons.
      (Fframe_after_make_frame): Simplify.
      * gtkutil.c: Remove commented-out code.
      * xfns.c (Fx_create_frame): Fix indenting.
      61320cc9
  23. 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
  24. 28 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Use bool, not int, to track face changes · cdee38ab
      Paul Eggert authored
      * xfaces.c (face_change): Rename from face_change_count, and
      change from int to bool.  The var is now true (instead of nonzero)
      if attributes have changed; this is simpler.  All uses changed.
      Fixes: bug#19698
      cdee38ab
  25. 25 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Use bool for boolean in xfns.c · 11a9f377
      Paul Eggert authored
      * xfaces.c (x_update_menu_appearance):
      * xfns.c (x_real_positions, x_defined_color, x_decode_color)
      (xg_set_icon, xg_set_icon_from_xpm_data, x_set_cursor_color)
      (x_set_icon_type, x_set_icon_name, x_set_menu_bar_lines)
      (x_change_tool_bar_height, x_set_internal_border_width)
      (x_encode_text, x_set_name_internal, x_explicitly_set_name)
      (x_implicitly_set_name, x_default_scroll_bar_color_parameter)
      (hack_wm_protocols, xic_create_fontsetname, xic_free_xfontset)
      (x_window, x_icon, Fx_wm_set_size_hint, Fx_create_frame)
      (Fxw_color_defined_p, Fxw_color_values, x_create_tip_frame)
      (Fx_show_tip, clean_up_file_dialog, Fx_file_dialog)
      (clean_up_dialog, syms_of_xfns):
      * xterm.h (xg_set_icon, xg_set_icon_from_xpm_data)
      (xic_create_fontsetname):
      Use bool for boolean.
      * xfns.c: Include bitmaps/gray.xbm unconditionally.
      11a9f377
  26. 20 Jan, 2015 1 commit
  27. 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
  28. 08 Jan, 2015 1 commit
    • Eli Zaretskii's avatar
      Fix fallout from "Qnil is zero" change in the display engine. (Bug#19535) · daa18b5e
      Eli Zaretskii authored
       src/xdisp.c (next_element_from_c_string): Use Lisp integer zero as
       the object.
       (set_cursor_from_row, try_cursor_movement, dump_glyph)
       (insert_left_trunc_glyphs, append_space_for_newline)
       (extend_face_to_end_of_line, highlight_trailing_whitespace)
       (find_row_edges, ROW_GLYPH_NEWLINE_P, Fmove_point_visually)
       (Fbidi_resolved_levels, produce_special_glyphs)
       (rows_from_pos_range, mouse_face_from_buffer_pos)
       (note_mouse_highlight): Use nil as the object for glyphs inserted
       by the display engine, and test with NILP instead of INTEGERP.
       src/w32fns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
       the display engine.
       src/xfns.c (Fx_show_tip): Use NILP to test for glyphs inserted by
       the display engine.
       src/dispextern.h (struct glyph, struct it): Update comments for the
       OBJECT members.
      daa18b5e
  29. 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
  30. 04 Jan, 2015 1 commit
    • Eli Zaretskii's avatar
      More doc fixes for bug#19502 -- make documentation less X-specific. · 5981b4b1
      Eli Zaretskii authored
       doc/lispref/frames.texi (Display Feature Testing): Make the description of
       x-server-version and x-server-vendor less X-specific.
      
       Make doc strings on X and w32 identical.
       src/w32fns.c (Fx_server_version, Fx_server_vendor): Doc fix.
       src/xfns.c (Fx_server_version, Fx_server_vendor): Doc fix.
      5981b4b1
  31. 01 Jan, 2015 2 commits
  32. 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