1. 19 Feb, 2017 1 commit
  2. 01 Jan, 2017 1 commit
  3. 06 Nov, 2016 1 commit
    • Paul Eggert's avatar
      Modernize usage of 'macOS' in doc and comments · dc152c54
      Paul Eggert authored
      Apple changed the spelling of its operating system again, to "macOS",
      effective with macOS 10.12 Sierra (2016-09-20).  Change Emacs
      documentation and comments to match this.  Stick with older OS
      spellings ("OS X", "Mac OS X") when talking about older releases where
      the older names are more correct.
  4. 29 Oct, 2016 1 commit
    • Daniel Colascione's avatar
      Add double-buffering support to reduce flicker · c2907158
      Daniel Colascione authored
      * src/dispextern.h (struct glyph_string): Remove window member
      (block_buffer_flips, unblock_buffer_flips)
      (buffer_flipping_blocked_p): Declare.
      * src/xterm.h (struct x_display_info): New member supports_xdbe.
      (struct x_output): New members draw_desc and need_buffer_flip.
      (FRAME_X_NEED_BUFFER_FLIP): New macros.
      (set_up_x_back_buffer, tear_down_x_back_buffer)
      (initial_set_up_x_back_buffer): Declare.
      * src/xterm.c: Include Xdbe.h.
      (x_begin_cr_clip, x_fill_rectangle, x_draw_rectangle)
      (x_draw_vertical_window_border, x_update_end)
      (x_setup_relief_color, x_draw_relief_rect)
      (x_draw_fringe_bitmap, x_shift_glyphs_for_insert)
      (x_scroll_run, x_draw_hollow_cursor, x_draw_bar_cursor): Use
      FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
      variables appropriately; substitute calls to XClearArea with
      x_clear_area, which DTRT for double buffering.
      (x_clear_window, x_clear_area): In double-buffering mode, use
      rect-drawing X functions instead of XClearWindow and
      XClearArea, which always operate on the front buffer.
      (show_back_buffer): New function.
      (XTframe_up_to_date): Call show_back_buffer when done.
      (x_clear_frame, x_clear_frame_area): Remove obsolete calls to
      gtk_widget_queue_draw to refresh scroll bars; scroll bars are
      now independent X windows.
      (handle_one_xevent): Call font_drop_xrender_surfaces when
      XftDraw might need regenerating; perform buffer flip when
      responding to Expose events; issue front-buffer clearing
      commands as stopgap while we wait for redisplay.
      Call flush_dirty_back_buffers.
      (x_make_frame_visible): Un-bitrot comment; move XSETFRAME
      earlier in function.
      (x_free_frame_resources): Call tear_down_x_back_buffer when
      destroying frame.
      (x_term_init): Attempt to initialize double buffer extension.
      (x_flip_and_flush): New function.
      (x_redisplay_interface): Point to x_flip_and_flush instead of
      x_flip directly.
      (flush_dirty_back_buffers): New function.
      (x_create_terminal): Register buffer_flipping_unblocked_hook.
      * src/xftfont.c (xftfont_drop_xrender_surfaces): Use
      (xftfont_draw): Call x_mark_frame_dirty.
      (xftfont_drop_xrender_surfaces): New function.
      (syms_of_xftfont): Register it.
      * src/xfont.c (xfont_draw): Use FRAME_X_DRAWABLE instead of
      * src/xfns.c: Include Xdbe.h.
      (x_set_inhibit_double_buffering, set_up_x_back_buffer)
      (Fx_double_buffered_p): New functions.
      (x_window): Call initial_set_up_x_back_buffer.
      (x_make_gc): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
      (Fx_create_frame): Configure `inhibit-double-buffering'
      frame parameter.
      (x_create_tip_frame): Call initial_set_up_x_back_buffer.
      (x_frame_parm_handlers): Register
      (syms_of_xfns): Register Sx_double_buffered_p.
      (x_mark_frame_dirty): Define.
      * src/xfaces.c (x_create_gc): Use FRAME_X_DRAWABLE instead of
      * src/xdisp.c (remember_mouse_glyph, init_glyph_string): Use
      (redisplay_internal): Restart redisplay if a frame is garbaged
      during updating; explain why. Block buffer flips
      during redisplay.
      (redisplay_preserve_echo_area): Block buffer flip during call
      to redisplay_internal.
      (buffer_flip_blocked_depth): New variable.
      (block_buffer_flips, unblock_buffer_flips)
      (buffer_flipping_blocked_p): New functions.
      (init_glyph_string): Stop setting window member of struct
      * src/w32fns.c (w32_frame_parm_handlers): Add placeholder for
      * src/termhooks.h (struct terminal): Add
      * src/nsfns.m (ns_frame_parm_handlers): Add placeholder for
      * src/image.c (x_create_bitmap_from_data)
      (x_create_bitmap_from_file, x_create_x_image_and_pixmap)
      (x_create_bitmap_from_xpm_data, xpm_load, gs_load): Use
      FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
      variables appropriately.
      * src/gtkutil.c: Include Xdbe.h.
      (xg_get_widget_from_map): Forward declare.
      (xg_clear_under_internal_border): Remove obsolete calls to
      refresh scroll bars.
      (xg_create_frame_widgets): Call initial_set_up_x_back_buffer.
      (xg_free_frame_widgets): Call tear_down_x_back_buffer; reset
      FRAME_X_DRAWABLE as well as FRAME_X_WINDOW and for the
      same reason.
      (xg_set_background_color): Set scroll bar background colors.
      (xg_finish_scroll_bar_creation): New function with common
      logic of xg_create_scroll_bar, xg_create_horizontal_scroll_bar. Force
      scroll bars to be real X11 windows.
      (xg_create_scroll_bar, xg_create_horizontal_scroll_bar): Call
      (xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos):
      Remove obsolete calls to refresh scroll bars; fix comments.
      * src/ftxfont.c (ftxfont_get_gcs, ftxfont_draw_bitmap,
      (ftxfont_draw_background): Use FRAME_X_DRAWABLE instead of
      * src/frame.c (frame_parms): Add table entry for new
      `inhibit-double-buffering' frame parameter
      (syms_of_frame): Register Qinhibit_double_buffering.
      * src/font.h (struct font_driver): Add new `flush_frame_caches' hook.
      (font_drop_xrender_surfaces): Declare.
      * src/font.c (font_drop_xrender_surfaces): New function.
      * src/Makefile.in (XDBE_LIBS, XDBE_CFLAGS): Substitute.
      * etc/NEWS: Mention use of double buffering
      * doc/lispref/frames.texi (Management Parameters): Document
      `inhibit-double-buffering' frame parameters.
      (Visibility of Frames): Document `x-double-buffered-p'.
      * configure.ac: Check for the X double buffer extension
  5. 30 Sep, 2016 1 commit
    • Paul Eggert's avatar
      Fix problems found by static checking --with-ns · 3c2c5026
      Paul Eggert authored
      This is for Fedora 24 when configured with --enable-gcc-warnings.
      Although it does not fix all the problems, it fixes many of them.
      * src/frame.c (XParseGeometry):
      * src/nsterm.m (mouseDown:):
      Mark locals with UNINIT to pacify --enable-gcc-warnings.
      * src/image.c (PIX_MASK_DRAW, DefaultDepthOfScreen):
      Remove unused macros.
      (slurp_file xbm_scan, xbm_read_bitmap_data, xbm_load_image)
      (xbm_file_p, xbm_load, xpm_scan, xpm_make_color_table_v)
      (xpm_put_color_table_v, xpm_get_color_table_v)
      (xpm_make_color_table_h, xpm_put_color_table_h)
      (xpm_get_color_table_h, xpm_load_image, xpm_load)
      (pbm_next_char, pbm_scan_number, pbm_load, svg_load)
      * src/nsfns.m (x_get_string_resource):
      * src/nsimage.m (ns_image_from_XBM):
      Fix pointer signedness problems.
      * src/image.c (xpm_load_image, x_build_heuristic_mask, pbm_load)
      (imagemagick_load_image): Omit unused locals.
      * src/nsfns.m (ns_send_types, ns_return_types, ns_drag_types)
      * src/nsfont.m (ns_antialias_threshold):
      Move extern decl to nsterm.h so it can be checked.
      * src/nsmenu.m (svcsMenu, dockMenu):
      Move to the only file that uses them, so they can be static.
      * src/nsterm.h (find_and_call_menu_selection):
      * src/nsterm.m (x_set_frame_alpha):
      Omit duplicate decls.
      * src/nsterm.h (ns_dump_glyphstring): Mark as EXTERNALLY_VISIBLE.
      * src/nsfns.m (ns_tooltip, ns_display_info_for_name)
      (ns_set_name_as_filename, x_set_menu_bar_lines)
      (x_set_tool_bar_lines, x_set_internal_border_width):
      * src/nsterm.m (ns_drag_types, ns_draw_text_decoration):
      Now static.
      * src/nsfns.m (ns_lisp_to_cursor_type, ns_cursor_type_to_lisp):
      * src/nsterm.m (ns_free_indexed_color, ns_color_to_lisp):
      Remove; unused.
      * src/nsfont.m (ns_dump_glyphstring):
      * src/nsterm.m (hide_bell, ns_get_color, ns_color_to_lisp)
      (ns_clear_frame, keyDown:):
      Fix signedness problem with printf arg.
      * src/nsterm.h (ns_input_events, ns_finish_events):
      * src/nsterm.m (ns_finish_events, hide_bell):
      Prototype the decls.
      * src/nsterm.m (NSMenuDidBeginTrackingNotification):
      Omit unnecessary decl.
      (mainMenu) [NS_IMPL_COCOA]: Now static, and in this file.
      (ns_dumpglyphs_box_or_relief, changeFont:, initFrameFromEmacs:)
      (toggleFullScreen:): Use FACE_FROM_ID instead of
      FACE_FROM_ID_OR_NULL in contexts where the caller expects the
      result to be non-null.
      (applicationShouldTerminate:): Fix misleading indentation.
  6. 24 Aug, 2016 1 commit
    • Alan Third's avatar
      Fix macOS 12 deprecation notices · 53328576
      Alan Third authored
      * src/nsterm.h: Add #defines to allow older versions of macOS to use the
      new constant names.
      * src/nsmenu.m: Replace old constant names with
      (fillWithWidgetValue): Remove calls to deprecated
      * src/nsterm.m: Replace old constant names with new.
      * src/nsfns.m: Replace old constant names with new.
  7. 12 Jul, 2016 2 commits
    • John Wiegley's avatar
      Revert "Cleanup tooltips" · 54b7eb0d
      John Wiegley authored
      This reverts commit 20038f8a.
      I am reverting this change because it was applied without prior discussion
      on emacs-devel, and has been found to break the NS port.  It needs more
      testing and review before it should be applied here.
    • Dmitry Antipov's avatar
      Cleanup tooltips · 20038f8a
      Dmitry Antipov authored
      * src/dispextern.h (toplevel): Remove 'tip_frame' and 'tip_window' decls.
      * src/frame.h (struct frame): New bitfield to indicate tooltip frame.
      (FRAME_TOOLTIP_P): New macro.
      * src/frame.c (make_frame): Mark new frame as regular frame by default.
      (Fframe_list, delete_frame): Redesign to use FRAME_TOOLTIP_P.
      (syms_of_frame): Don't DEFSYM 'Qtooltip' but use 'Qtooltip_timer'
      and 'Qtooltip_parameters' instead.
      * src/gtkutil.h (toplevel): Add 'xg_hide_tip' decl.
      * src/gtkutil.c (xg_hide_tip): New function.
      (xg_hide_tooltip): Adjust to cancel GTK event loop timeout if needed.
      * src/menu.c (Fx_popup_menu): Adjust call to Fx_hide_tip.
      * src/nsfns.c (toplevel): Remove 'tip_frame' leftover.
      * src/w32fns.c (unwind_create_tip_frame): Remove.
      (w32_display_monitor_attributes_list_fallback): Use FRAME_TOOLTIP_P.
      (toplevel): Remove 'tip_frame', 'tip_window' and 'last_show_tip_args'.
      (x_create_tip_frame): Use do_unwind_create_frame.  Mark new frame
      as a tooltip frame and record it using appropriate display info.
      (x_hide_tooltip): Add frame arg.
      (Fx_show_tip): Adjust to avoid globals, store tooltip parameters among
      base frame parameters, store tooltip hide timer among tooltip frame
      (Fx_hide_tip): Add frame arg, hide tooltips on all displays by default.
      (syms_of_w32fns): Don't DEFSYM 'Qtip_frame', don't initialize
      and GC-protect 'tip_timer', 'tip_frame' and 'last_show_tip_args'.
      * src/w32term.c (w32_read_socket): Extract tooltip window id from
      per-display data.  Use FRAME_TOOLTIP_P where appropriate.
      (x_new_font): Use FRAME_TOOLTIP_P.
      (x_free_frame_resources): Reset pointer to tooltip frame.
      * src/w32term.h (struct w32_display_info): New member 'w32_tooltip_frame'.
      * src/xdisp.c (init_iterator, x_consider_frame_title, prepare_menu_bars):
      * src/xfns.c (x_make_monitor_attribute_list)
      (Fx_display_monitor_attributes_list): Likewise.
      (unwind_create_tip_frame): Remove.
      (toplevel): Remove 'tip_frame', 'tip_window' and 'last_show_tip_args'.
      (x_create_tip_frame): Use do_unwind_create_frame.  Mark new frame
      as a tooltip frame and record it using appropriate display info.
      (x_hide_tooltip): Add frame arg.
      (Fx_show_tip): Adjust to avoid globals, store tooltip parameters among
      base frame parameters, store tooltip hide timer among tooltip frame
      parameters.  To hide GTK system tooltip, use timeout hooked into GTK
      event loop.
      (Fx_hide_tip): Add frame arg, hide tooltips on all displays by default.
      (syms_of_xfns): Don't DEFSYM 'Qtip_frame', don't initialize
      and GC-protect 'tip_timer', 'tip_frame' and 'last_show_tip_args'.
      * src/xterm.c (handle_one_xevent): Extract tooltip window id from
      per-display data.  Use FRAME_TOOLTIP_P where appropriate.
      (x_new_font, x_set_window_size): Use FRAME_TOOLTIP_P.
      (x_free_frame_resources): Reset pointer to tooltip frame.
      * src/xterm.h (struct x_display_info): New member 'x_tooltip_frame'.
      (struct x_output) [USE_GTK_TOOLTIP]: New member 'ttip_timeout'.
  8. 27 Jun, 2016 1 commit
    • Alan Third's avatar
      Enable dividers in NS (bug#22973) · cfb3c61f
      Alan Third authored
      src/nsfns.m: Add colour settings functions to ns_frame_park_handlers.
      src/nsterm.m (ns_draw_window_divider): ns_focus has to go before the
      attempt to set the colour.
      src/nsterm.m (ns_draw_vertical_window_border): This had the same bug as
      above, although I didn't see any errors.
  9. 26 Jun, 2016 1 commit
  10. 06 Jun, 2016 1 commit
    • Stephen Berman's avatar
      Fix doc string quoting · 9d5ccebe
      Stephen Berman authored
      * lisp/files.el (shell-quote-wildcard-pattern):
      * lisp/progmodes/vhdl-mode.el (vhdl-mode):
      * lisp/subr.el (replace-regexp-in-string):
      * lisp/view.el (view-mode):
      * src/nsfns.m (syms_of_nsfns):
      * src/syntax.c (Fbackward_prefix_chars):
      Fix quoting problems in doc strings (Bug#23696).
  11. 10 Mar, 2016 1 commit
    • Paul Eggert's avatar
      Rework C source files to avoid ^( · 7352c6c6
      Paul Eggert authored
      Work around Bug#22884 by rewording comments and strings to avoid ‘(’
      at the start of a line unless it starts a function.  This change
      is a short-term hack; in the longer run we plan to fix cc-mode’s
      performance for C files that have ‘(’ at the start of a line in a
      comment or string.
  12. 01 Jan, 2016 1 commit
  13. 25 Dec, 2015 1 commit
  14. 24 Dec, 2015 1 commit
  15. 23 Dec, 2015 1 commit
    • Anders Lindgren's avatar
      File-name completion of non-ASCII characters on OS X (bug#22169) · 09053075
      Anders Lindgren authored
      The coding system `utf-8-nfd', locally defined in ns-win.el,
      didn't provide a :pre-write-conversion method, causing file name
      completion of non-ASCII characters to fail.  Solved by using the
      `utf-8-hfs' coding system provided by `ucs-normalize'.
      * lisp/loadup.el: Load international/ucs-normalize (when building
      for ns).
      * lisp/term/ns-win.el (utf-8-nfd): Made `utf-8-nfd' as alias for
      `utf-8-hfs' and removed the old implementation.  Set `utf-8-hfs'
      as the file name coding system.
      * src/nsfns.c (ns-convert-utf8-nfd-to-nfc): Removed.
  16. 01 Dec, 2015 1 commit
  17. 15 Nov, 2015 2 commits
    • Anders Lindgren's avatar
      Enhance NSTRACE (trace output for NextStep). · ae16894d
      Anders Lindgren authored
      Trace can be disabled for groups of functions. By default, event
      functions and functions that generate lots of output are disabled.
      Trace output of Objective-C functions now use the "[ClassName
      parameter:]" form.
      controlling in which function groups trace should be active.
      (NSTRACE_WHEN): Support for silencing a function, this also
      silencing all called functions.
      (NSTRACE_UNSILENCE): New macro, used to re-enable trace.
      (NSTRACE_FMT_FSTYPE, NSTRACE_ARG_FSTYPE): New macros, used to
      print the full screen state in NSTRACE functions.
      * src/nsterm.m (nstrace_depth, nstrace_num): Made volatile as they
      can be accessed from multiple threads.
      (nstrace_enabled_global): New variable, when FALSE, trace is
      (nstrace_restore_global_trace_state): New function, used to
      restore `nstrace_enabled_global' at end of block.
      ([EmacsView setFrame:], [EmacsWindow setFrame:display:])
      ([EmacsWindow setFrame:display:animation:])
      ([EmacsWindow setFrameTopLeftPoint:]): New functions, print trace
      and call corresponding super function.
      (Many functions): Add or enhance trace output.
      * src/nsimage.m (ns_image_from_file): Enhanced trace output.
      * src/nsfns.m (x_set_tool_bar_lines): Add trace output.
      * src/nsmenu.m ([EmacsToolbar setVisible:]): New function, print trace
      and call corresponding super function.
    • Anders Lindgren's avatar
      Fixed a toolbar related issue on OS X. · b36ba568
      Anders Lindgren authored
      Earlier, when toggling the tool-bar in a maximized frame, the
      frame size didn't match the number of text lines, leaving an
      unused area at the bottom of the frame.
      * nsfns.m (x_set_tool_bar_lines): Exit maximized and full height
      fullscreen modes when tool bar is disabled.
  18. 28 Oct, 2015 1 commit
    • Anders Lindgren's avatar
      Fix incorrect NextStep tool-bar-mode -- wrong number of rows in frame. · 590449f3
      Anders Lindgren authored
      * nsterm.h (struct ns_output): New flag, in_animation.
      * nsfns.m (Fx_create_frame): Initialize in_animation flag.
      * nsmenu.m (free_frame_tool_bar, update_frame_tool_bar): Set
      in_animation flag around call to "setVisible". Set new tool bar
      height before call to setVisible.
      * nsterm.m (x_set_window_size): Don't call [view setRow:
      andColumns:] as this fools the subsequent call to updateFrameSize
      from performing the real resize.
      (windowDidResize): Don't update anything when in_animation is
      Trace output.
      * nsmenu.m (free_frame_tool_bar, update_frame_tool_bar)
      * nsterm.m (x_set_window_size, updateFrameSize)
      ([EmacsView setRows: andColumns:])
  19. 23 Oct, 2015 1 commit
    • Anders Lindgren's avatar
      NextSten maximization and NSTRACE rewrite. · ba24d35a
      Anders Lindgren authored
      Full-height, full-width, and maximized windows now cover the
      entire screen (except the menu bar), including the part where the
      system dock is placed.  The system zoom animation is no longer
      Made NonMaximized->FullWidth->FullHeight->NonMaximized restore the
      original size.
      * nsterm.m (ns_menu_bar_height): New function, return height of
      the menu bar, or 0 when it's hidden.
      * nsterm.m (constrain_frame_rect): New function for constraining a
      * nsterm.m (ns_constrain_all_frames): Set frame size explicitly
      rather than relying on the system doing it for us by writing back
      the current frame size.
      * nsterm.m (windowWillUseStandardFrame): Register non-maximized
      width or height as new user size.  When entering full width or
      height, the other size component is taken from the user size.
      * nsterm.m (fullscreenState): New method for accessing the
      fullscreen state.
      * nsterm.m (constrainFrameRect): Restrict frame to be placed under
      the menu bar, if present.  The old version, sometimes, restricted
      the height of a frame to the screen, this version never does this.
      * nsterm.m (zoom): Perform zoom by setting the frame to the full
      size of the screen (minus the menu bar).  The default system
      function, with the zoom animation, is no longer used, as the final
      frame size doesn't cover the entire screen.
      Rework how to constrain resizing to the character grid.  The old
      system used "resizeIncrements" in NSWindows.  However, once a frame
      was resized so that it was not aligned to the text grid, it
      remained unaligned even after a resize.  In addition, it conflicted
      when resizing a fullheight window.
      * nsterm.m (windowWillResize): Restrict frame size to text grid,
      unless when pixelwise frame resizing is enabled.
      * nsterm.m (updateFrameSize, initFrameFromEmacs)
      (toggleFullScreen, handleFS): Don't set resizeIncrements.
      Redesign the NS trace system.  The call structure is represented
      using indentations and vertical lines.  The NSTRACE macro accepts
      printf-style arguments.  New macros for printing various
      * nsterm.h (NSTRACE_ENABLED): Macro to enable trace system.
      * nsterm.h (NSTRACE, NSTRACE_WHEN, NSTRACE_UNLESS): Macros to
      start a new block (typically a function), accept printf-style
      * nsterm.h (NSTRACE_MSG): Macro for extra information, accepts
      printf-style arguments.
      * nsterm.h (NSTRACE_what): Macros for printing various types.
      * nsterm.h (NSTRACE_FMT_what): Macro with printf format string
      * nsterm.h (NSTRACE_ARG_what): Macros for passing printf-style
      arguments, corresponds to NSTRACE_FMT_what.
      * nsterm.h (NSTRACE_RETURN): Macro to print return value, accept
      printf-style arguments.
      * nsterm.h (NSTRACE_RETURN_what): Macros to print return value for
      various types.
      * nsterm.m: Remove old NSTRACE macro.
      * nsterm.m (nstrace_num): Trace counter.
      * nsterm.m (nstrace_depth): Current call depth.
      * nsterm.m (nstrace_leave): NSTRACE support function, called when
      the local variable "nstrace_enabled" goes out of scope using the
      "cleanup" extension.
      * nsterm.m (ns_print_fullscreen_type_name): NSTRACE_FSTYPE support
      * nsterm.m (constrain_frame_rect, ns_constrain_all_frames)
      (ns_update_auto_hide_menu_bar, ns_update_begin)
      (ns_update_window_begin, update_window_end, ns_update_end)
      (ns_focus, ns_unfocus, ns_ring_bell, ns_frame_raise_lower)
      (ns_frame_rehighlight, x_make_frame_visible)
      (x_make_frame_invisible, x_iconify_frame, x_free_frame_resources)
      (x_destroy_window, x_set_offset, x_set_window_size)
      (ns_fullscreen_hook, ns_lisp_to_color, ns_color_to_lisp)
      (ns_defined_color, frame_set_mouse_pixel_position)
      (note_mouse_movement, ns_mouse_position, ns_frame_up_to_date)
      (ns_define_frame_cursor, x_get_keysym_name, ns_redraw_scroll_bars)
      (ns_clear_frame, ns_clear_frame_area, ns_scroll_run)
      (ns_after_update_window_line, ns_shift_glyphs_for_insert)
      (dumpcursor, ns_draw_vertical_window_border)
      (ns_draw_window_divider, ns_draw_relief)
      (ns_dumpglyphs_box_or_relief, ns_maybe_dumpglyphs_background)
      (ns_dumpglyphs_image, ns_draw_glyph_string, ns_send_appdefined)
      (ns_read_socket, ns_select, ns_set_vertical_scroll_bar)
      (ns_set_horizontal_scroll_bar, ns_condemn_scroll_bars)
      (ns_redeem_scroll_bar, ns_judge_scroll_bars, ns_delete_terminal)
      (ns_create_terminal, ns_term_init, sendEvent)
      (applicationDidFinishLaunching, applicationDidBecomeActive)
      (timeout_handler, fd_handler, EmacsView_dealloc, changeFont)
      (acceptsFirstResponder, resetCursorRects, keyDown, mouseDown)
      (deltaIsZero, rightMouseDown, otherMouseDown, mouseUp)
      (rightMouseUp, otherMouseUp, scrollWheel, mouseMoved)
      (mouse_autoselect_window, in_window, mouseDragged)
      (rightMouseDragged, otherMouseDragged, windowShouldClose)
      (updateFrameSize, windowWillResize, windowDidResize)
      (windowDidBecomeKey, windowDidResignKey, windowWillMiniaturize)
      (initFrameFromEmacs, windowDidMove, windowDidDeminiaturize)
      (windowDidExpose, windowDidMiniaturize, windowWillEnterFullScreen)
      (windowDidEnterFullScreen, windowWillExitFullScreen)
      (windowDidExitFullScreen, toggleFullScreen, handleFS, setFSValue)
      (mouseEntered, mouseExited, menuDown, toolbarClicked, drawRect)
      (draggingEntered, performDragOperation, validRequestorForSendType)
      (setMiniwindowImage, constrainFrameRect, performZoom, zoom)
      (EmacsScroller_initFrame, EmacsScroller_setFrame)
      (EmacsScroller_dealloc, condemn, reprieve, judge)
      (resetCursorRects, setPosition, EmacsScroller_mouseDown)
      (EmacsScroller_mouseDragged, syms_of_nsterm): Use new trace system.
      * nsfns.m: Remove old NSTRACE macro.
      * nsfns.m (x_set_icon_name, ns_set_name, x_explicitly_set_name)
      (x_implicitly_set_name, x_set_title, ns_set_name_as_filename)
      (ns_implicitly_set_icon_type, x_set_icon_type): Use new trace system.
      * nsimage.m: Remove old NSTRACE macro.
      * nsimage.m (ns_image_from_XBM, ns_image_for_XPM)
      (ns_image_from_bitmap_file, ns_load_image): Use new trace system.
      * nsmenu.m: Remove old NSTRACE macro.
      * nsmenu.m (ns_update_menubar, ns_menu_show, ns_popup_dialog):
      Use new trace system.
  20. 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
      (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
      (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
      (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
      * 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
      * src/widget.c (set_frame_size): Remove dead code.  Add
      frame_size_history_add call.  When frame_resize_pixelwise is t
      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
  21. 16 Sep, 2015 1 commit
    • 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 ).
  22. 11 Sep, 2015 1 commit
  23. 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:
      * 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)
      Remove.  All uses removed.  The code now assumes
      * 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)
      * test/automated/generator-tests.el (cps-test-iter-close-finalizer):
      Remove tests, as they depend on gc-precise.
  24. 21 Aug, 2015 1 commit
    • Martin Rudalics's avatar
      Sanitize frame geometry related functions · df9b29ed
      Martin Rudalics authored
      * src/nsfns.m (Fx_frame_geometry): Rename to Fns_frame_geometry.
      (Fx_frame_edges): Rename to Fns_frame_edges.
      * src/w32fns.c (Fx_frame_geometry): Rename to Fw32_frame_geometry.
      (Fx_frame_edges): Rename to Fw32_frame_edges.
      (Fx_mouse_absolute_pixel_position): Rename to
      (Fx_set_mouse_absolute_pixel_position): Rename to
      * lisp/frame.el (x-frame-geometry, w32-frame-geometry)
      (ns-frame-geometry, x-frame-edges, w32-frame-edges)
      (ns-frame-edges, w32-mouse-absolute-pixel-position)
      (x-set-mouse-absolute-pixel-position): Declare.
      (frame-geometry, mouse-absolute-pixel-position)
      (set-mouse-absolute-pixel-position): New functions.
      (frame-edges): Rewrite in terms of x-/w32-/ns-frame-edges.
  25. 18 Aug, 2015 1 commit
    • 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,
      * src/nsfns.m (frame_geometry): New function.
      (Fx_frame_geometry): Call frame_geometry.
      (Fx_frame_edges): New function.
      (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.
  26. 26 Jul, 2015 1 commit
  27. 07 Jul, 2015 1 commit
  28. 18 Jun, 2015 2 commits
  29. 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
      * src/w32fns.c (image_cache_refcount): Make it a ptrdiff_t as on
      X and NS.
  30. 21 May, 2015 1 commit
  31. 15 May, 2015 2 commits
    • Jan D's avatar
      Fix NS warnings. · b00168e8
      Jan D authored
      * nsmenu.m (ns_popup_dialog)
      * nsimage.m (initFromXBM:width:height:fg:bg:)
      * nsfns.m (Fx_create_frame): Remove unused variables.
      (Fns_read_file_name): Initialize fname, remove ret.
      * nsterm.m (ns_draw_window_cursor): Handle DEFAULT_CURSOR in switch.
      (ns_get_color, ns_set_horizontal_scroll_bar, keyDown): Remove unused
      (init): Add parantesis in if.
      (ns_create_terminal): Assign set_horizontal_scroll_bar_hook.
    • Jan Djärv's avatar
      Fix warnings on OSX 10.10. · e0e07535
      Jan Djärv authored
      * nsfns.m (MODAL_OK_RESPONSE): New define for different OSX versions.
      (Fns_read_file_name): Check against MODAL_OK_RESPONSE.
      (compute_tip_xy): Use convertRectToScreen for OSX >= 10.7
      * nsmenu.m (initWithContentRect:styleMask:backing:defer:)
      * nsimage.m (allocInitFromFile, setPixmapData): Only call
      setScalesWhenResized for OSX < 10.6.
      * nsterm.h (EmacsScroller): Declare scrollerWidth.
      * nsterm.m (ns_copy_bits): New function that does not use deprecated
      (ns_scroll_run, ns_shift_glyphs_for_insert): Call ns_copy_bits.
      (runAlertPanel): New function.
      (applicationShouldTerminate:): Call runAlertPanel.
      (initFrameFromEmacs, toggleFullScreen:): Only call useOptimizedDrawing
      for OSX < 10.10.
      (initFrameFromEmacs:): Only call allocateGState for OSX < 10.10.
      (windowWillUseStandardFrame:defaultFrame:): Cast arg to abs to int.
      (draggingEntered:): Returns NSDragOperation.
      (scrollerWidth): Use scrollerWidthForControlSize for OSX >= 10.7.
  32. 22 Feb, 2015 1 commit
  33. 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.
  34. 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
      * frame.c (frame_default_tool_bar_height): New variable.
      (adjust_frame_size): Possibly add requested adjustment to
      (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
      (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
      (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
      * window.c (Fset_window_configuration): Pass
      Qset_window_configuration to adjust_frame_size.
      * xdisp.c (redisplay_tool_bar): Assign new height to
      (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.
  35. 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.
      (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.
      New macros.
      (LISP_INITIALLY_ZERO): Use it.
      (enum symbol_interned, enum symbol_redirect, struct Lisp_Symbol)
      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
  36. 01 Jan, 2015 1 commit