1. 12 Apr, 2015 1 commit
    • Paul Eggert's avatar
      Use bool for boolean in window.c · 30379713
      Paul Eggert authored
      * src/window.c:	Omit unnecessary static function decls.
      (adjust_window_count, select_window, Fselect_window)
      (window_body_width, Fwindow_body_height, Fwindow_body_width)
      (set_window_hscroll, check_window_containing, Fwindow_at)
      (Fwindow_end, Fset_window_start, Fpos_visible_in_window_p)
      (unshow_buffer, replace_window, recombine_windows)
      (add_window_to_list, candidate_window_p, next_window)
      (Fnext_window, Fprevious_window, window_loop, check_all_windows)
      (Fget_buffer_window, Fdelete_other_windows_internal)
      (replace_buffer_in_windows_safely, set_window_buffer)
      (Fset_window_buffer, Fforce_window_update)
      (temp_output_buffer_show, make_parent_window)
      (window_resize_check, window_resize_apply, Fwindow_resize_apply)
      (resize_frame_windows, Fsplit_window_internal)
      (Fdelete_window_internal, grow_mini_window, shrink_mini_window)
      (Fresize_mini_window_internal, mark_window_cursors_off)
      (window_scroll, window_scroll_pixel_based)
      (window_scroll_line_based, scroll_command, Fscroll_other_window)
      (Fscroll_left, Fscroll_right, displayed_window_lines, Frecenter)
      (Fmove_to_window_line, Fset_window_configuration)
      (delete_all_child_windows, apply_window_adjustment)
      (set_window_fringes, set_window_scroll_bars)
      (Fset_window_vscroll, foreach_window, foreach_window_1)
      (compare_window_configurations, Fcompare_window_configurations):
      Prefer 'bool', 'true', and 'false' for booleans.
      * src/window.h (WINDOW_MODE_LINE_LINES)
      (WINDOW_HEADER_LINE_LINES): Omit unnecessary "!!" on bool value.
      30379713
  2. 10 Apr, 2015 1 commit
  3. 09 Feb, 2015 1 commit
    • Eli Zaretskii's avatar
      Speed up vertical-motion when screen coordinates are known · 403cb178
      Eli Zaretskii authored
       src/indent.c (Fvertical_motion): Accept an additional argument
       CUR-COL and use it as the starting screen coordinate.
       src/window.c (window_scroll_line_based, Fmove_to_window_line): All
       callers of vertical-motion changed.
      
       doc/lispref/positions.texi (Screen Lines): Update the documentation of
       vertical-motion to document the new additional argument.
      403cb178
  4. 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
  5. 01 Feb, 2015 1 commit
  6. 25 Jan, 2015 1 commit
    • Paul Eggert's avatar
      Count MANY function args more reliably · a3689d3c
      Paul Eggert authored
      * alloc.c (Fgc_status, purecopy, unbind_to, garbage_collect_1):
      * buffer.c (Fbuffer_list, Fkill_buffer):
      * callint.c (read_file_name, Fcall_interactively):
      * charset.c (Fset_charset_priority, syms_of_charset):
      * chartab.c (uniprop_encode_value_numeric):
      * coding.c (syms_of_coding):
      * composite.c (syms_of_composite):
      * data.c (wrong_range):
      * dbusbind.c (syms_of_dbusbind):
      * dired.c (file_attributes):
      * editfns.c (Fdecode_time, update_buffer_properties, format2):
      * eval.c (run_hook_with_args_2, apply1, call1, call2, call3)
      (call4, call5, call6, call7):
      * fileio.c (Finsert_file_contents, choose_write_coding_system)
      (Fcar_less_than_car, build_annotations, auto_save_error):
      * filelock.c (get_boot_time):
      * fns.c (internal_equal, nconc2, Fyes_or_no_p, Fwidget_apply):
      (maybe_resize_hash_table, secure_hash):
      * font.c (font_style_to_value, font_open_by_name, Flist_fonts):
      * fontset.c (fontset_add, Fset_fontset_font):
      * ftfont.c (ftfont_lookup_cache):
      * gtkutil.c (xg_get_font):
      * insdel.c (signal_before_change, signal_after_change):
      * keymap.c (append_key):
      * lread.c (load_warn_old_style_backquotes, Fload, init_lread):
      * minibuf.c (Fread_buffer):
      * print.c (print_preprocess):
      * process.c (Fformat_network_address, Fmake_network_process)
      (server_accept_connection):
      * sound.c (Fplay_sound_internal):
      * term.c (Fsuspend_tty, Fresume_tty):
      * window.c (window_list):
      * xdisp.c (run_redisplay_end_trigger_hook, add_to_log)
      (message_with_string):
      * xfaces.c (Fx_list_fonts):
      * xfont.c (syms_of_xfont):
      * xselect.c (x_handle_selection_request)
      (x_handle_selection_clear, x_clear_frame_selections)
      (x_clipboard_manager_error_1):
      Prefer CALLMANY and CALLN to counting args by hand.
      * doc.c (reread_doc_file): Remove unused code.
      * fns.c (concat2, concat3): Redo to avoid need for local-var vector.
      (cmpfn_user_defined, hashfn_user_defined, Fmaphash):
      Prefer call1 and call2 to Ffuncall.
      * keyboard.c (safe_run_hook_funcall, safe_run_hooks):
      Use struct literal rather than a local var, for simplicity.
      * keymap.c (where_is_internal): Use NULL rather than a pointer
      to unused args.
      * lisp.h (CALLMANY, CALLN): New macros.
      * sound.c (Fplay_sound_internal): Coalesce duplicate code.
      Fixes: bug#19634
      a3689d3c
  7. 16 Jan, 2015 1 commit
    • Dmitry Antipov's avatar
      Tune pseudovector allocation assuming Qnil == 0 · 3b48f995
      Dmitry Antipov authored
      * alloc.c (allocate_pseudovector): Use memset for both
      Lisp_Objects and regular slots.  Add zerolen arg.
      * lisp.h (allocate_pseudovector): Adjust prototype.
      (ALLOCATE_PSEUDOVECTOR): Adjust user.
      (ALLOCATE_ZEROED_PSEUDOVECTOR): New macro.
      (allocate_hash_table, allocate_window, allocate_frame)
      (allocate_process, allocate_terminal): Remove prototypes.
      * fns.c (allocate_hash_table): Now static here.
      * frame.c (allocate_frame):
      * process.c (allocate_process):
      * terminal.c (allocate_terminal):
      * window.c (allocate_window): Now static here.
      Use ALLOCATE_ZEROED_PSEUDOVECTOR.  Add comment.
      3b48f995
  8. 13 Jan, 2015 1 commit
    • Dmitry Antipov's avatar
      Support const and noreturn DEFUN attributes. · ad9c4a40
      Dmitry Antipov authored
      * lib-src/make-docfile.c (struct global): New field 'flags'.
      (DEFUN_noreturn, DEFUN_const): New enum bitfields.
      (add_global): Now return pointer to global.
      (write_globals): Add _Noreturn and ATTRIBUTE_CONST attributes
      if requested by global's flags.
      (stream_match): New function.
      (scan_c_stream): Recognize 'attributes:' of DEFUN.
      
      * src/callint.c (Finteractive):
      * src/character.c (Fcharacterp, Fmax_char):
      * src.data.c (Feq, Fnull, Fconsp, Fatom, Flistp, Fnlistp, Fsymbolp)
      (Fstringp, Fchar_or_string_p, Fintegerp, Fnatnump, Fnumberp)
      (Ffloatp, Fbyteorder):
      * src/decompress.c (Fzlib_available_p):
      * src/fns.c (Fidentity):
      * src/frame.c (Fframe_windows_min_size):
      * src/gnutls.c (Fgnutls_error_p, Fgnutls_available_p):
      * src/window.c (Fwindow__sanitize_window_sizes):
      * src/xdisp.c (Ftool_bar_height):
      * src/xfaces.c (Fface_attribute_relative_p): Add const attribute.
      * src/emacs.c (Fkill_emacs):
      * src/eval.c (Fthrow):
      * src/keyboard.c (Ftop_level, Fexit_recursive_edit)
      (Fabor_recursive_edit): Add noreturn attribute.
      ad9c4a40
  9. 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
  10. 07 Jan, 2015 1 commit
  11. 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
  12. 04 Jan, 2015 2 commits
    • Paul Eggert's avatar
      'temacs -nw' should not call missing functions · bf90e9ac
      Paul Eggert authored
      Without this patch, "temacs -nw" fails with the diagnostic
      "emacs: Symbol's function definition is void: frame-windows-min-size"
      and messes up the tty's state.
      * lib-src/make-docfile.c (write_globals):
      Declare Fframe_windows_min_size with ATTRIBUTE_CONST, too.  Sort.
      * src/frame.c (Fframe_windows_min_size): New placeholder function.
      (syms_of_frame): Define it.
      * src/window.c (Fwindow__sanitize_window_sizes): New placeholder.
      (syms_of_window): Define it.
      bf90e9ac
    • jave's avatar
      cleanups · 78f196e3
      jave authored
      78f196e3
  13. 01 Jan, 2015 2 commits
  14. 18 Dec, 2014 2 commits
    • Eli Zaretskii's avatar
      811aceea
    • Martin Rudalics's avatar
      Add code for "preserving" window sizes. · 47f730e3
      Martin Rudalics authored
      * frame.c (frame_windows_min_size): New argument IGNORE.
      (adjust_frame_size): When called from change_frame_size call
      frame_windows_min_size with IGNORE Qt so we can ignore size
      restrictions.
      
      * dired.el (dired-pop-to-buffer): Call fit-window-to-buffer with
      `preserve-size' t.
      (dired-mark-pop-up): Preserve size of window showing marked
      files.
      * electric.el (Electric-pop-up-window):
      * help.el (resize-temp-buffer-window): Call fit-window-to-buffer
      with `preserve-size' t.
      * minibuffer.el (minibuffer-completion-help): Use
      `resize-temp-buffer-window' instead of `fit-window-to-buffer'
      (Bug#19355).  Preserve size of completions window.
      * register.el (register-preview): Preserve size of register
      preview window.
      * tmm.el (tmm-add-prompt): Call fit-window-to-buffer
      with `preserve-size' t (Bug#1291).
      * window.el (with-displayed-buffer-window): Add calls to
      `window-preserve-size'.
      (window-min-pixel-size, window--preservable-size)
      (window-preserve-size, window-preserved-size)
      (window--preserve-size, window--min-size-ignore-p): New
      functions.
      (window-min-size, window-min-delta, window--resizable)
      (window--resize-this-window, split-window-below)
      (split-window-right): Amend doc-string.
      (adjust-window-trailing-edge): Handle preserving window
      sizes.  Signal user-error instead of an error when there's no
      window above or below.
      (window--min-size-1, window-sizable, window--size-fixed-1)
      (window-size-fixed-p, window--min-delta-1)
      (frame-windows-min-size, window--max-delta-1, window-resize)
      (window--resize-child-windows, window--resize-siblings)
      (enlarge-window, shrink-window, split-window): Handle preserving
      window sizes.
      (window--state-put-2): Handle horizontal scroll bars.
      (window--display-buffer): Call `preserve-size' if asked for.
      (display-buffer): Mention `preserve-size' alist member in
      doc-string.
      (fit-window-to-buffer): New argument PRESERVE-SIZE.
      47f730e3
  15. 15 Dec, 2014 1 commit
  16. 14 Dec, 2014 1 commit
    • Alan Mackenzie's avatar
      New feature optionally to accelerate auto-repeated scrolling. · 37139317
      Alan Mackenzie authored
      src/xdisp.c: Remove "static" from declaration of
      Qfontification_functions.
      
      src/window.c (window_scroll): bind fontification-functions to nil when
      scrolling by whole screens and fast-but-imprecise-scrolling is non-nil.
      (syms_of_window): New DEFVAR_BOOL fast-but-imprecise-scrolling.
      
      src/lisp.h (bool): Declare Qfontification_functions extern.
      
      lisp/cus-start.el (all): Add fast-but-imprecise-scrolling.
      
      doc/emacs/display.texi (Scrolling): fast-but-imprecise-scrolling.
      Describe new variable.
      
      etc/NEWS: Add entry for fast-but-imprecise-scrolling.
      37139317
  17. 15 Nov, 2014 1 commit
  18. 08 Nov, 2014 1 commit
    • Martin Rudalics's avatar
      Run `window-configuration-change-hook' only after all faces have been realized. · c936cbbc
      Martin Rudalics authored
      * frame.c (adjust_frame_size): Call x_set_window_size only if
      f->can_x_set_window_size is set.
      (make_frame): Initialize f->can_x_set_window_size and
      f->can_run_window_configuration_change_hook.
      (Fcan_run_window_configuration_change_hook): New function.
      * frame.h (frame): Split `official' into `can_x_set_window_size'
      and `can_run_window_configuration_change_hook'.
      * nsfns.m (Fx_create_frame): Set f->can_x_set_window_size.
      * w32fns.c (Fx_create_frame, x_create_tip_frame): Set
      f->can_x_set_window_size.
      * window.c (run_window_configuration_change_hook): Return
      immediately if either f->can_x_set_window_size or
      f->can_run_window_configuration_change_hook are false.
      (Fset_window_configuration): Instead of f->official set
      f->can_x_set_window_size.
      * xfns.c (Fx_create_frame, x_create_tip_frame): Set
      f->can_x_set_window_size.
      * faces.el (face-set-after-frame-default): Enable running
      `window-configuration-change-hook'.
      c936cbbc
  19. 07 Nov, 2014 1 commit
    • Martin Rudalics's avatar
      Improve inhibiting of implied frame resizes. · 1c50b3ad
      Martin Rudalics authored
      * frames.texi (Size and Position): Rewrite description of
      `frame-inhibit-implied-resize'.
      * cus-start.el (frame-resize-pixelwise): Fix group.
      (frame-inhibit-implied-resize): Add entry.
      * dispnew.c (change_frame_size_1): Fix call of
      adjust_frame_size.
      * frame.c (Qsize, Qframe_position, Qframe_outer_size)
      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
      (Qtool_bar_size): New constants.
      (frame_inhibit_resize, adjust_frame_size): New argument to
      handle case where frame_inhibit_implied_resize is a list.
      (Fmake_terminal_frame, Fset_frame_height, Fset_frame_width)
      (Fset_frame_size, x_set_left_fringe, x_set_right_fringe)
      (x_set_right_divider_width, x_set_bottom_divider_width)
      (x_set_vertical_scroll_bars, x_set_horizontal_scroll_bars)
      (x_set_scroll_bar_width, x_set_scroll_bar_height): Update
      callers.
      (frame-inhibit-implied-resize): Rewrite doc-string.
      * frame.h (frame_inhibit_resize, adjust_frame_size): Fix
      external declarations.
      (Qframe_position, Qframe_outer_size)
      (Qframe_inner_size, Qexternal_border_size, Qtitle_height)
      (Qmenu_bar_external, Qmenu_bar_size, Qtool_bar_external)
      (Qtool_bar_size): Extern them.
      * gtkutil.c (FRAME_TOTAL_PIXEL_HEIGHT, FRAME_TOTAL_PIXEL_WIDTH)
      (xg_height_or_width_changed): Remove.
      (xg_frame_set_char_size): Adjust adjust_frame_size calls.
      (menubar_map_cb, xg_update_frame_menubar, free_frame_menubar)
      (tb_size_cb, update_frame_tool_bar, free_frame_tool_bar)
      (xg_change_toolbar_position): Call adjust_frame_size directly.
      * nsfns.m (x_set_internal_border_width, Fx_create_frame): Fix
      calls of adjust_frame_size.
      * w32fns.c (x_set_internal_border_width, x_set_menu_bar_lines)
      (Fx_create_frame, x_create_tip_frame): Adjust adjust_frame_size
      calls.
      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
      frame can get resized when tool-bar-lines parameter changes from
      or to zero.
      (Fw32_frame_menu_bar_size): Return fourth value.
      (Fw32_frame_rect): Block input around system calls
      (Fx_frame_geometry): New function.
      * w32menu.c (set_frame_menubar): Adjust adjust_frame_size call.
      * w32term.c (x_new_font): Adjust adjust_frame_size call.
      * widget.c (EmacsFrameSetCharSize): Adjust frame_inhibit_resize
      call.
      * window.c (Fset_window_configuration): Adjust adjust_frame_size
      call.
      * xfns.c (x_set_menu_bar_lines, x_set_internal_border_width)
      (Fx_create_frame): Adjust adjust_frame_size calls.
      (x_set_tool_bar_lines, x_change_tool_bar_height): Make sure that
      frame can get resized when tool-bar-lines parameter changes from
      or to zero.
      (Fx_frame_geometry): New function.
      * xmenu.c (update_frame_menubar): On Lucid call
      adjust_frame_size with one pixel less height to avoid that
      repeatedly adding/removing the menu bar grows the frame.
      (free_frame_menubar): On Motif arrange to optionally preserve
      the old frame height when removing the menu bar.
      * xterm.c (x_new_font): Adjust adjust_frame_size call.
      1c50b3ad
  20. 03 Nov, 2014 1 commit
  21. 04 Oct, 2014 1 commit
    • Martin Rudalics's avatar
      Add documentation for horizontal scroll bars and fix some minor issues. · 3c6ba8b4
      Martin Rudalics authored
      * buffer.c (scroll_bar_width, scroll_bar_height): Fix
      doc-strings.
      * window.c (Fset_window_scroll_bars): Fix doc-string.
      (Fwindow_scroll_bars): Have it return what the doc-string says.
      
      * window.el (window-full-height-p): Make it behave correctly for
      minibuffer window.
      (window-current-scroll-bars): Fix code.
      (fit-frame-to-buffer): Use window-scroll-bar-height instead of
      window-scroll-bars.
      * frame.el (frame-current-scroll-bars): Fix doc-string.
      * scroll-bar.el (toggle-horizontal-scroll-bar): New command.
      
      * frames.texi (Scroll Bars): Describe use of horizontal scroll
      bars.
      
      * display.texi (Scroll Bars): Add description of horizontal scroll
      bars and associated functions.
      * frames.texi (Layout Parameters): Add horizontal scroll bar
      entries.  Remove paragraph on "combined fringe widths".
      * windows.texi (Window Sizes): Describe affects of horizontal
      scroll bars on window layout and sizes.  Fix description of
      window-full-height-p.
      (Resizing Windows): Mention horizontal scroll bar.
      3c6ba8b4
  22. 29 Sep, 2014 1 commit
    • Eli Zaretskii's avatar
      Fix bug #18545 with lack of scrolling a window when point goes out of view. · 5bb6d037
      Eli Zaretskii authored
       src/xdisp.c (cursor_row_fully_visible_p): Update commentary.
       (redisplay_window): Treat the frame's frozen_window_starts flag
       the same way as the optional_new_start flag for the window: only
       obey it if the glyph row showing point will be fully visible.
       Likewise when the window start is in a continuation line.  If,
       after trying everything under the 'force_start' label, point is
       still not fully visible, give up and scroll the window.  Add
       debugging traces.
       src/window.c (Frecenter): Set the window's redisplay flag.
      5bb6d037
  23. 25 Sep, 2014 1 commit
    • Martin Rudalics's avatar
      Remove code left dead after 2014-07-27 changes. · 340e4cce
      Martin Rudalics authored
      * frame.c (frame_inhibit_resize):
      * widget.c (EmacsFrameResize):
      * window.c (resize_frame_windows, Fset_window_configuration):
      * xdisp.c (expose_frame):
      * xfns.c (x_change_tool_bar_height):
      * xmenu.c (update_frame_menubar):
      * xterm.c (handle_one_xevent, x_new_font, x_set_window_size_1):
      Remove code left dead after 2014-07-27 changes.
      340e4cce
  24. 11 Sep, 2014 2 commits
    • Martin Rudalics's avatar
      In Fresize_mini_window_internal set w->total_lines from w->pixel_height (Bug#18422). · 6e49a66a
      Martin Rudalics authored
      * window.c (Fresize_mini_window_internal): Set w->total_lines
      from w->pixel_height (Bug#18422).
      6e49a66a
    • Paul Eggert's avatar
      Pacify --enable-gcc-warnings when no window system is used. · b3ed13e8
      Paul Eggert authored
      These warnings found that subscript error, so they seem worthwhile.
      * composite.c (char_composable_p): Simplify a bit.
      * frame.c (x_set_frame_parameters): Add an IF_LINT.
      * frame.c (x_set_horizontal_scroll_bars, x_set_scroll_bar_height):
      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS):
      * window.c (set_window_scroll_bars):
      Use USE_HORIZONTAL_SCROLL_BARS for simplicity.
      * frame.h [! USE_HORIZONTAL_SCROLL_BARS]:
      Ignore -Wsuggest-attribute=const.
      * window.h (USE_HORIZONTAL_SCROLL_BARS): New macro.
      (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Use it.
      b3ed13e8
  25. 07 Sep, 2014 1 commit
    • Paul Eggert's avatar
      Use SAFE_ALLOCA etc. to avoid unbounded stack allocation. · b3bf18b3
      Paul Eggert authored
      This follows up on the recent thread in emacs-devel on alloca; see:
      http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00042.html
      This patch also cleans up alloca-related glitches noted while
      examining the code looking for unbounded alloca.
      * alloc.c (listn):
      * callproc.c (init_callproc):
      Rewrite to avoid need for alloca.
      * buffer.c (mouse_face_overlay_overlaps)
      (report_overlay_modification):
      * buffer.h (GET_OVERLAYS_AT):
      * coding.c (make_subsidiaries):
      * doc.c (Fsnarf_documentation):
      * editfns.c (Fuser_full_name):
      * fileio.c (Ffile_name_directory, Fexpand_file_name)
      (search_embedded_absfilename, Fsubstitute_in_file_name):
      * fns.c (Fmake_hash_table):
      * font.c (font_vconcat_entity_vectors, font_update_drivers):
      * fontset.c (fontset_pattern_regexp, Ffontset_info):
      * frame.c (Fmake_terminal_frame, x_set_frame_parameters)
      (xrdb_get_resource, x_get_resource_string):
      * ftfont.c (ftfont_get_charset, ftfont_check_otf, ftfont_drive_otf):
      * ftxfont.c (ftxfont_draw):
      * image.c (xbm_load, xpm_load, jpeg_load_body):
      * keyboard.c (echo_add_key, menu_bar_items, tool_bar_items):
      * keymap.c (Fdescribe_buffer_bindings, describe_map):
      * lread.c (openp):
      * menu.c (digest_single_submenu, find_and_call_menu_selection)
      (find_and_return_menu_selection):
      * print.c (PRINTFINISH):
      * process.c (Fformat_network_address):
      * scroll.c (do_scrolling, do_direct_scrolling, scrolling_1):
      * search.c (search_buffer, Fmatch_data, Fregexp_quote):
      * sound.c (wav_play, au_play):
      * syntax.c (skip_chars):
      * term.c (tty_menu_activate, tty_menu_show):
      * textprop.c (get_char_property_and_overlay):
      * window.c (Fset_window_configuration):
      * xdisp.c (safe__call, next_overlay_change, vmessage)
      (compute_overhangs_and_x, draw_glyphs, note_mouse_highlight):
      * xfaces.c (face_at_buffer_position):
      * xmenu.c (x_menu_show):
      Use SAFE_ALLOCA etc. instead of plain alloca, since the
      allocation size isn't bounded.
      * callint.c (Fcall_interactively): Redo memory_full check
      so that it can be done at compile-time on some platforms.
      * coding.c (MAX_LOOKUP_MAX): New constant.
      (get_translation_table): Use it.
      * callproc.c (call_process): Use SAFE_NALLOCA instead of
      SAFE_ALLOCA, to catch integer overflows on size calculation.
      (exec_failed) [!DOS_NT]: New function.
      (child_setup) [!DOS_NT]: Use it.
      * editfns.c (Ftranspose_regions):
      Hoist USE_SAFE_ALLOC + SAFE_FREE out of 'if'.
      * editfns.c (check_translation):
      Allocate larger buffers on the heap.
      * eval.c (internal_lisp_condition_case):
      Check for MAX_ALLOCA overflow.
      * fns.c (sort_vector): Use SAFE_ALLOCA_LISP rather than Fmake_vector.
      (Fbase64_encode_region, Fbase64_decode_region):
      Avoid unnecessary calls to SAFE_FREE before 'error'.
      * buffer.c (mouse_face_overlay_overlaps):
      * editfns.c (Fget_pos_property, check_translation):
      * eval.c (Ffuncall):
      * font.c (font_unparse_xlfd, font_find_for_lface):
      * ftfont.c (ftfont_drive_otf):
      * keyboard.c (echo_add_key, read_decoded_event_from_main_queue)
      (menu_bar_items, tool_bar_items):
      * sound.c (Fplay_sound_internal):
      * xdisp.c (load_overlay_strings, dump_glyph_row):
      Use an ordinary auto buffer rather than alloca, since the
      allocation size is fixed and small.
      * ftfont.c: Include <c-strcase.h>.
      (matching_prefix): New function.
      (get_adstyle_property): Use it, to avoid need for alloca.
      * keyboard.c (echo_add_key):
      * keymap.c (describe_map): Use ptrdiff_t, not int.
      * keyboard.c (echo_add_key): Prefer sizeof to strlen.
      * keymap.c (Fdescribe_buffer_bindings): Use SBYTES, not SCHARS,
      when counting bytes.
      * lisp.h (xlispstrdupa): Remove, replacing with ...
      (SAFE_ALLOCA_STRING): ... new macro with different API.
      This fixes a portability problem, namely, alloca result
      passed to another function.  All uses changed.
      (SAFE_ALLOCA, SAFE_ALLOCA_LISP): Check for MAX_ALLOCA,
      not MAX_ALLOCA - 1.
      * regex.c (REGEX_USE_SAFE_ALLOCA, REGEX_SAFE_FREE)
      (REGEX_ALLOCATE): New macros.
      (REGEX_REALLOCATE, REGEX_ALLOCATE_STACK, REGEX_REALLOCATE_STACK)
      (REGEX_FREE_STACK, FREE_VARIABLES, re_match_2_internal):
      Use them.
      * xdisp.c (message3): Use SAFE_ALLOCA_STRING rather than doing it
      by hand.
      (decode_mode_spec_coding): Store directly into buf rather than
      into an alloca temporary and copying the temporary to the buf.
      
      Fixes: debbugs:18410
      b3bf18b3
  26. 09 Aug, 2014 1 commit
  27. 08 Aug, 2014 1 commit
    • Martin Rudalics's avatar
      Fix some doc-strings in window.c (Bug#18112) (Bug#18194). · 8faa5ee7
      Martin Rudalics authored
      * window.c (Fwindow_valid_p): Fix doc-string (Bug#18194).
      (Fwindow_new_total, Fwindow_normal_size, Fwindow_new_normal)
      (Fwindow_new_pixel, Fset_window_new_pixel)
      (Fset_window_new_total, Fset_window_new_normal)
      (Fwindow_resize_apply): Fix doc-strings (see Bug#18112).
      8faa5ee7
  28. 04 Aug, 2014 1 commit
    • Martin Rudalics's avatar
      Fix scroll bar handling for non-toolkit builds. · 4a75c94d
      Martin Rudalics authored
      * frame.h (FRAME_HAS_HORIZONTAL_SCROLL_BARS): Condition
      correctly according to toolkit used.
      * frame.c (make_initial_frame, make_terminal_frame)
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height)
      (Vdefault_frame_horizontal_scroll_bars): Correctly condition
      assignments according to presence of toolkit scrollbars.
      * window.h (WINDOW_HAS_HORIZONTAL_SCROLL_BAR): Condition
      correctly according to toolkit used.
      * window.c (set_window_scroll_bars): Set horizontal scroll bar
      only if toolkit supports it.
      * w32term.c (w32_redeem_scroll_bar): Always redeem scroll bar if
      present.
      * xterm.c (x_scroll_bar_create): Initialize horizontal slot for
      non-toolkit builds.
      (XTredeem_scroll_bar): Always redeem scroll bar if present.
      4a75c94d
  29. 27 Jul, 2014 2 commits
    • Martin Rudalics's avatar
      Complete pixelwise frame/window resizing, add horizontal scrollbar support. · 3477e270
      Martin Rudalics authored
      * frame.el (frame-notice-user-settings): Rewrite using
      frame-initial-frame-tool-bar-height.
      * menu-bar.el (menu-bar-horizontal-scroll-bar)
      (menu-bar-no-horizontal-scroll-bar): New functions.
      (menu-bar-showhide-scroll-bar-menu): Add bindings for horizontal
      scroll bars.
      * scroll-bar.el (scroll-bar-lines)
      (set-horizontal-scroll-bar-mode)
      (get-horizontal-scroll-bar-mode, horizontal-scroll-bar-mode)
      (scroll-bar-horizontal-drag-1, scroll-bar-horizontal-drag)
      (scroll-bar-toolkit-horizontal-scroll): New functions.
      (horizontal-scroll-bar-mode)
      (previous-horizontal-scroll-bar-mode)
      (horizontal-scroll-bar-mode-explicit): New variables.
      (horizontal-scroll-bar-mode): New option.
      (toggle-horizontal-scroll-bar): Do something.
      (top-level): Bind horizontal-scroll-bar mouse-1.
      * startup.el (tool-bar-originally-present): Remove variable.
      (command-line): Don't set tool-bar-originally-present.
      * window.el (window-min-height): Update doc-string.
      (window--dump-frame): Dump horizontal scroll bar values.
      (window--min-size-1): Handle minibuffer window separately.
      Count in margins and horizontal scroll bar.  Return safe value
      iff IGNORE equals 'safe.
      (frame-windows-min-size): New function (used by frame resizing
      routines).
      (fit-frame-to-buffer, fit-window-to-buffer): Count in horizontal
      scroll bars.
      (window--sanitize-window-sizes): New function.
      (window-split-min-size): Remove.
      (split-window): Count divider-width.  Don't use
      `window-split-min-size' any more.  Reword error messages.
      Sanitize windows sizes after splitting.
      * buffer.h (struct buffer): New fields scroll_bar_height and
      horizontal_scroll_bar_type.
      * buffer.c (bset_scroll_bar_height)
      (bset_horizontal_scroll_bar_type): New functions.
      (Fbuffer_swap_text): Handle old_pointm field.
      (init_buffer_once): Set defaults for scroll_bar_height and
      horizontal_scroll_bar_type.
      (syms_of_buffer): New variables scroll_bar_height and
      horizontal_scroll_bar_type.
      * dispextern.h (window_part): Rename ON_SCROLL_BAR to
      ON_VERTICAL_SCROLL_BAR.  Add ON_HORIZONTAL_SCROLL_BAR.
      (set_vertical_scroll_bar): Remove prototype.
      (x_change_tool_bar_height): Add prototype.
      * dispnew.c (adjust_frame_glyphs_for_frame_redisplay)
      (window_to_frame_vpos, update_frame_1, scrolling, init_display):
      Use FRAME_TOTAL_COLS and FRAME_TOTAL_LINES instead of FRAME_COLS
      and FRAME_LINES.
      (adjust_frame_glyphs_for_window_redisplay): Rearrange lines.
      (update_window): Start mode_line_row->y after horizontal scroll
      bar.
      (change_frame_size_1): Call adjust_frame_size.
      (init_display): When changing the size of a tty frame do not
      pass height of menu bar.
      (Qframe_windows_min_size): New symbol.
      * frame.h (struct frame): List tool bar fields after menu bar
      fields.  Add official, total_lines, horizontal_scroll_bars,
      config_scroll_bar_height and config_scroll_bar_lines fields.
      (FRAME_HAS_HORIZONTAL_SCROLL_BARS)
      (FRAME_CONFIG_SCROLL_BAR_HEIGHT, FRAME_CONFIG_SCROLL_BAR_LINES)
      (FRAME_SCROLL_BAR_AREA_HEIGHT, FRAME_SCROLL_BAR_COLS)
      (FRAME_SCROLL_BAR_LINES, FRAME_TOTAL_LINES, SET_FRAME_LINES)
      (FRAME_WINDOWS_HEIGHT): New macros.
      (SET_FRAME_HEIGHT, FRAME_TEXT_LINES_TO_PIXEL_HEIGHT)
      (FRAME_PIXEL_Y_TO_LINE, FRAME_PIXEL_HEIGHT_TO_TEXT_LINES)
      (FRAME_TEXT_TO_PIXEL_HEIGHT): Separately count top margin and
      horizontal scroll bar.
      (frame_inhibit_resize, adjust_frame_size)
      (frame_windows_min_size): Add declarations.
      (Qscroll_bar_height, Qhorizontal_scroll_bars)
      (x_set_scroll_bar_default_height, x_set_left_fringe)
      (x_set_right_fringe, x_set_vertical_scroll_bars)
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_width)
      (x_set_scroll_bar_height): Add external declarations.
      * frame.c: (frame_inhibit_resize, frame_windows_min_size)
      (adjust_frame_size): New functions.
      (make_frame): Initial horizontal_scroll_bars field.  Use
      SET_FRAME_LINES.  Don't allow horizontal scroll bar in
      minibuffer window.
      (make_initial_frame, make_terminal_frame): No horizontal scroll
      bar in initial and terminal frames.  Use adjust_frame_size.
      (Fframe_total_cols): Fix doc-string.
      (Fframe_total_lines, Fscroll_bar_height): New Lisp functions.
      (Fset_frame_height, Fset_frame_width, Fset_frame_size): Rewrite
      using adjust_frame_size.
      (Qscroll_bar_height, Qhorizontal_scroll_bars)
      (Qframe_windows_min_size): New symbols.
      (x_set_frame_parameters): Remove call of check_frame_size.
      (x_report_frame_params): Return scroll_bar_height value.
      (x_set_left_fringe, x_set_right_fringe): New functions.
      (adjust_frame_height, x_set_internal_border_width)
      (x_set_fringe_width): Remove.
      (x_set_internal_border_width, x_set_vertical_scroll_bars)
      (x_set_scroll_bar_width, x_set_right_divider_width)
      (x_set_bottom_divider_width): Rewrite using adjust_frame_size.
      (x_set_horizontal_scroll_bars, x_set_scroll_bar_height): New
      functions.
      (x_figure_window_size): Rewrite to make frame display the
      expected number of lines.
      (Vdefault_frame_scroll_bars): Rewrite doc-string.
      (Vdefault_frame_horizontal_scroll_bars)
      (Vframe_initial_frame_tool_bar_height)
      (frame_inhibit_implied_resize): New variables.
      * fringe.c (compute_fringe_widths): Remove.
      * gtkutil.h (YG_SB_MIN, YG_SB_MAX, YG_SB_RANGE): Define.
      (xg_create_horizontal_scroll_bar)
      (xg_update_horizontal_scrollbar_pos)
      (xg_set_toolkit_horizontal_scroll_bar_thumb)
      (xg_get_default_scrollbar_height)
      (xg_clear_under_internal_border): Extern.
      * gtkutil.c (xg_frame_resized): Don't call
      do_pending_window_change.
      (xg_frame_set_char_size): Use adjust_frame_size.
      (style_changed_cb): Call update_theme_scrollbar_height and
      x_set_scroll_bar_default_height.
      (x_wm_set_size_hint): Don't call check_frame_size.
      (update_theme_scrollbar_height)
      (xg_get_default_scrollbar_height)
      (xg_create_horizontal_scroll_bar)
      (xg_update_horizontal_scrollbar_pos)
      (xg_set_toolkit_horizontal_scroll_bar_thumb): New functions.
      (xg_create_scroll_bar): Set horizontal slot of bar.
      (xg_initialize): Call update_theme_scrollbar_height.
      (xg_clear_under_internal_border): No more static.
      * insdel.c (adjust_suspend_auto_hscroll): New function.
      (adjust_markers_for_delete, adjust_markers_for_insert)
      (adjust_markers_for_replace): Call adjust_suspend_auto_hscroll.
      * keyboard.c (readable_events, discard_mouse_events)
      (make_lispy_event): Handle horizontal scroll bar click events.
      (Fsuspend_emacs): When changing the size of a tty frame do not
      pass height of menu bar.
      (Qbefore_handle, Qhorizontal_handle, Qafter_handle, Qleft)
      (Qright, Qleftmost, Qrightmost): New symbols.
      * menu.c (Fx_popup_dialog): Use FRAME_TOTAL_LINES instead of
      FRAME_LINES.
      * minibuf.c (read_minibuf): Initialize suspend_auto_hscroll.
      * nsfns.m (x_set_internal_border_width): New function.
      * nsterm.m (ns_draw_fringe_bitmap, ns_set_vertical_scroll_bar):
      Remove extended fringe code.
      (x_set_window_size, x_new_font): Don't call
      compute_fringe_widths.
      * term.c (Fresume_tty): When changing the size of a tty frame do
      not pass height of menu bar.
      (clear_tty_hooks, set_tty_hooks): Clear
      horizontal_scroll_bar_hook.
      (init_tty): Frame has no horizontal scroll bars.
      * termhooks.h (enum scroll_bar_part): Add scroll_bar_move_ratio,
      scroll_bar_before_handle, scroll_bar_horizontal_handle,
      scroll_bar_after_handle, scroll_bar_left_arrow,
      scroll_bar_right_arrow, scroll_bar_to_leftmost and
      scroll_bar_to_rightmost entries.
      (enum event_kind): Add HORIZONTAL_SCROLL_BAR_CLICK_EVENT
      (struct terminal): Add set_horizontal_scroll_bar_hook.
      * w32console.c (initialize_w32_display): Clear
      horizontal_scroll_bar_hook.
      * w32fns.c (x_set_mouse_color): Use FRAME_W32_DISPLAY instead of
      FRAME_X_DISPLAY.
      (x_clear_under_internal_border, x_set_internal_border_width):
      New functions.
      (x_set_menu_bar_lines): Rewrite using frame_inhibit_resize.  Set
      windows_or_buffers_changed when adding the menu bar.
      (x_set_tool_bar_lines): Rewrite using adjust_frame_size.
      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
      (w32_createhscrollbar): New functions.
      (w32_createscrollbar): Rename to w32_createvscrollbar.
      (w32_createwindow): Init WND_HSCROLLBAR_INDEX.
      (w32_name_of_message): Replace WM_EMACS_CREATESCROLLBAR by
      WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR.  Add
      WM_EMACS_SHOWCURSOR.
      (w32_wnd_proc): Handle WM_HSCROLL case.  In WM_WINDOWPOSCHANGING
      case do not artificially impose WM size hints.  Handle
      WM_EMACS_SHOWCURSOR case.  Replace WM_EMACS_CREATESCROLLBAR case
      by WM_EMACS_CREATEVSCROLLBAR and WM_EMACS_CREATEHSCROLLBAR
      cases.
      (my_create_tip_window): Replace WND_SCROLLBAR_INDEX by
      WND_VSCROLLBAR_INDEX and WND_HSCROLLBAR_INDEX.
      (unwind_create_frame_1): Remove.
      (Fx_create_frame): Make both scrollbars the system standard
      width and height.  Use official field of frame structure to
      inhibit running window-configuration-change-hook.
      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
      pixelwise.  Handle frame's official field.
      (w32_frame_parm_handlers): Remove x_set_fringe_width
      entries. Add x_set_scroll_bar_height,
      x_set_horizontal_scroll_bars, x_set_left_fringe and
      x_set_right_fringe.
      * w32inevt.c (resize_event, maybe_generate_resize_event): Do not
      pass height of menu bar to change_frame_size.
      * w32menu.c (set_frame_menubar): Rewrite using
      frame_inhibit_resize.
      * w32term.h (struct w32_display_info): Add
      horizontal_scroll_bar_cursor and cursor_display_counter.
      (struct scroll_bar): Add horizontal.
      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH)
      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): New macros.
      (WM_EMACS_CREATEVSCROLLBAR, WM_EMACS_CREATEHSCROLLBAR): Define
      instead of WM_EMACS_CREATESCROLLBAR.
      (WND_VSCROLLBAR_INDEX, WND_HSCROLLBAR_INDEX): Define instead of
      WND_SCROLLBAR_INDEX.
      * w32term.c (horizontal_scroll_bar_min_handle)
      (horizontal_scroll_bar_left_border)
      (horizontal_scroll_bar_right_border): New integers.
      (x_set_frame_alpha): Replace x_highlight_frame by
      w32_focus_frame.
      (x_window_to_scroll_bar): New argument "type".  Update callers
      accordingly.
      (w32_set_horizontal_scroll_bar_thumb)
      (x_horizontal_scroll_bar_report_motion)
      (w32_set_horizontal_scroll_bar)
      (w32_horizontal_scroll_bar_handle_click)
      (x_horizontal_scroll_bar_report_motion): New functions.
      (w32_mouse_position): Discriminate horizontal and vertical
      scrollbar cases.
      (my_create_scrollbar): Replace with two new functions
      my_create_vscrollbar and my_create_hscrollbar.
      (x_scroll_bar_create): New argument "horizontal".  Update
      callers accordingly.
      (x_scroll_bar_remove, w32_condemn_scroll_bars)
      (w32_redeem_scroll_bar, x_scroll_bar_clear): Handle horizontal
      scroll bar case.
      (w32_read_socket): Handle WM_HSCROLL cae.
      (x_new_font): Don't recompute fringe widths.  Use
      frame_inhibit_resize.  Calculate new menu bar height iff we
      build without toolkit.  Always clear under internal border.
      (x_set_window_size): Don't check frame size or recompute
      fringes.  Reset fullscreen status before applying sizes.  Always
      resize as requested by pixelwise argument.  Don't call
      do_pending_window_change.
      (x_wm_set_size_hint): Add call for FRAME_SCROLL_BAR_AREA_HEIGHT.
      (w32_initialize_display_info): Initialize dpyinfo's
      horizontal_scroll_bar_cursor entry.
      (w32_create_terminal): Add set_horizontal_scroll_bar_hook.
      (w32_initialize): Init horizontal_scroll_bar_min_handle and
      horizontal_scroll_bar_left_border.
      (w32fullscreen_hook): Intermittently resize window to normal
      when switching from fullscreen to maximized state.
      (run_window_configuration_change_hook): Don't run it if frame is
      not official yet.
      (unwind_change_frame): Remove.
      (Fset_window_configuration): Rewrite using frame's official field.
      * widget.c (set_frame_size): Don't call compute_fringe_widths.
      (EmacsFrameSetCharSize): Obey frame_inhibit_resize.
      * window.h (struct window): New fields old_pointm,
      horizontal_scroll_bar, horizontal_scroll_bar_type, hscroll_whole,
      scroll_bar_height and suspend_auto_hscroll.
      (wset_horizontal_scroll_bar, wset_horizontal_scroll_bar_type):
      New functions.
      (sanitize_window_sizes): Extern.
      (MINI_NON_ONLY_WINDOW_P, MINI_ONLY_WINDOW_P, WINDOW_PSEUDO_P)
      (WINDOW_TOPMOST_P, WINDOW_HAS_HORIZONTAL_SCROLL_BAR)
      (WINDOW_CONFIG_SCROLL_BAR_HEIGHT)
      (WINDOW_CONFIG_SCROLL_BAR_LINES)
      (WINDOW_SCROLL_BAR_LINES, WINDOW_SCROLL_BAR_AREA_HEIGHT): New
      macros.
      (WINDOW_LEFT_FRINGE_COLS, WINDOW_RIGHT_FRINGE_COLS)
      (WINDOW_FRINGE_COLS, WINDOW_FRINGE_EXTENDED_P): Remove macros.
      (WINDOW_VERTICAL_SCROLL_BAR_TYPE)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT)
      (WINDOW_HAS_VERTICAL_SCROLL_BAR): Minor rewrite.
      (WINDOW_BOX_HEIGHT_NO_MODE_LINE, WINDOW_BOX_TEXT_HEIGHT)
      (WINDOW_SCROLL_BAR_AREA_Y): Count in scroll bar height.
      * window.c (wset_old_pointm, Fwindow_scroll_bar_height)
      (Fwindow_old_point, sanitize_window_sizes): New functions.
      (Qwindow_sanitize_window_sizes): New symbol.
      (window_body_height): Count in horizontal scroll bar.
      (set_window_hscroll, Fscroll_left, Fscroll_right): Set
      suspend_auto_hscroll slot.
      (Fwindow_inside_edges): Count fringes pixelwise.
      (coordinates_in_window, Fcoordinates_in_window_p): Consider
      horizontal scroll bar.
      (check_frame_size, adjust_window_margins): Remove functions and
      corresponding calls.
      (set_window_buffer): Initialize old_pointm and horizontal scroll
      bars.
      (temp_output_buffer_show): Reset hscroll related fields.
      Initialize old_pointm.
      (make_parent_window): Initialize old_pointm.
      (make_window): Initialize old_pointm, horizontal scroll bar type,
      and scroll bar height.
      (resize_frame_windows): Don't count top margin in new sizes.
      Don't use safe sizes when shrinking a frame; let the window
      manager do the clipping.
      (Fsplit_window_internal): Inherit horizontal scroll bar type and
      height.
      (Fdelete_window_internal): Unchain old_pointm marker.
      (window_scroll_pixel_based, Fscroll_other_window): Adjust
      old_pointm.
      (Fwindow_text_width, Fwindow_text_height): New argument
      "pixelwise".
      (struct saved_window): New fields, old_pointm, hscroll_whole,
      suspend_auto_hscroll, scroll_bar_height and
      horizontal_scroll_bar_type.
      (Fset_window_configuration, save_window_save): Set new fields of
      saved_window.
      (apply_window_adjustment): Don't call adjust_window_margins.
      (set_window_margins): Don't change margins if new sizes don't
      fit into window.
      (set_window_scroll_bars): New argument "horizontal_type".
      Handle horizontal scroll bars.  Don't change scroll bars if they
      don't fit into window.
      (Fset_window_scroll_bars): New argument "horizontal_type".
      (Fwindow_scroll_bars): Return values for horizontal scroll bars.
      (compare_window_configurations): Compare horizontal scroll bar
      settings.
      * xdisp.c (window_text_bottom_y, window_box_height): Count in
      horizontal scroll bar height.
      (pixel_to_glyph_coords, init_xdisp): Use FRAME_TOTAL_LINES
      instead of FRAME_LINES.
      (remember_mouse_glyph): Case ON_SCROLL_BAR changed to
      ON_VERTICAL_SCROLL_BAR.
      (with_echo_area_buffer): Initialize old_pointm.
      (with_echo_area_buffer_unwind_data): Store old_pointm values in
      vector.
      (unwind_with_echo_area_buffer): Handle old_pointm.
      (update_tool_bar): Set do_update when the tool bar window has at
      least one line (since this is what the user sets).
      (MAX_FRAME_TOOL_BAR_HEIGHT): Remove macro.
      (redisplay_tool_bar): Return early when toolbar has zero lines.
      Call x_change_tool_bar_height.  Don't use max_tool_bar_height.
      (hscroll_window_tree): Handle suspension of auto_hscroll and
      old_pointm.
      (set_horizontal_scroll_bar): New function.
      (redisplay_window): Set ignore_mouse_drag_p when tool bar has
      more than one line.  Handle horizontal scroll bars.
      (note_mouse_highlight): Handle horizontal scrol bars.
      (expose_frame): Set dimensions of XRectangle from frame's text
      sizes.
      (Vvoid_text_area_pointer): Update doc-string.
      * xfns.c (x_set_menu_bar_lines): Use adjust_frame_size.
      (x_change_tool_bar_height, x_set_scroll_bar_default_height)
      (x_set_internal_border_width): New functions.
      (x_set_tool_bar_lines): Call x_change_tool_bar_height.
      (unwind_create_frame_1): Remove.
      (Fx_create_frame): Handle horizontal scroll bars.  Use official
      field of frame structure to inhibit running
      window-configuration-change-hook.
      (x_create_tip_frame): Call SET_FRAME_LINES and change_frame_size
      pixelwise.  Handle frame's official field.
      (x_frame_parm_handlers): Add x_set_scroll_bar_height,
      x_set_horizontal_scroll_bars, x_set_left_fringe,
      x_set_right_fringe.
      * xmenu.c (update_frame_menubar, free_frame_menubar): Use
      adjust_frame_size.
      * xterm.h (struct x_display_info): Add
      horizontal_scroll_bar_cursor and Xatom_Horizontal_Scrollbar
      slots.
      (struct scroll_bar): Add horizontal slot.
      (HORIZONTAL_SCROLL_BAR_INSIDE_HEIGHT)
      (HORIZONTAL_SCROLL_BAR_LEFT_RANGE)
      (HORIZONTAL_SCROLL_BAR_INSIDE_WIDTH): New macros.
      (HORIZONTAL_SCROLL_BAR_LEFT_BORDER)
      (HORIZONTAL_SCROLL_BAR_RIGHT_BORDER)
      (HORIZONTAL_SCROLL_BAR_TOP_BORDER)
      (HORIZONTAL_SCROLL_BAR_BOTTOM_BORDER)
      (HORIZONTAL_SCROLL_BAR_MIN_HANDLE): Define.
      (x_clear_under_internal_border): Remove.
      * xterm.c (XTmouse_position): Handle horizontal scroll bars.
      (x_window_to_scroll_bar): New argument TYPE.  Update callers.
      (x_send_scroll_bar_event, x_scroll_bar_create): New arguments
      HORIZONTAL.  Update callers.
      (horizontal_action_hook_id): New action hook id.
      (x_horizontal_scroll_bar_to_input_event)
      (x_create_horizontal_toolkit_scroll_bar)
      (xt_horizontal_action_hook)
      (x_set_toolkit_horizontal_scroll_bar_thumb)
      (XTset_horizontal_scroll_bar, x_net_wm_state)
      (x_horizontal_scroll_bar_report_motion): New functions.
      (xg_scroll_callback, x_scroll_bar_handle_click): Handle
      horizontal scroll bars.
      (SCROLL_BAR_HORIZONTAL_NAME): Define.
      (XTset_vertical_scroll_bar): Attempt to clear areas not covered
      by scroll bar.
      (XTcondemn_scroll_bars, XTredeem_scroll_bar): Rewrite.  Handle
      horizontal scroll bars.
      (handle_one_xevent): Handle horizontal scroll bar events.  Call
      x_net_wm_state.
      (x_set_window_size_1, x_wm_set_size_hint): Don't call
      check_frame_size.
      (x_set_window_size): Don't call check_frame_size and
      do_pending_window_change.
      (x_term_init): Init horizontal_scroll_bar_cursor display info.
      (x_create_terminal): Add set_horizontal_scroll_bar_hook.
      (x_scroll_bar_set_handle): Add some checks when calling
      x_clear_area.
      3477e270
    • Eli Zaretskii's avatar
  30. 04 Jul, 2014 1 commit
    • Eli Zaretskii's avatar
      Fix bug #17905 with display of point in partially visible line at end of window. · 5b5953c0
      Eli Zaretskii authored
       src/xdisp.c (redisplay_window): If redisplay of a window ends up
       with point in a partially visible line at end of the window, make
       sure the amended position of point actually has smaller Y
       coordinate; if not, give up and scroll the display.
       src/window.c (window_scroll_pixel_based): When point ends up at the
       last fully visible line, don't let move_it_to stop at the left
       edge of the line and dupe us into thinking point is inside the
       scroll margin.
      5b5953c0
  31. 17 Jun, 2014 1 commit
    • Paul Eggert's avatar
      Omit redundant extern decls. · 73bfe891
      Paul Eggert authored
      Most of this patch is from Dmitry Antipov, in:
      http://lists.gnu.org/archive/html/emacs-devel/2014-06/msg00263.html
      * configure.ac (WERROR_CFLAGS): Add -Wredundant-decls.
      * lib-src/emacsclient.c (getenv): Remove decl.
      * lib-src/make-docfile.c (write_globals): Add ATTRIBUTE_CONST for
      Fbyteorder, Ftool_bar_height, Fmax_char, Fidentity.
      * lwlib/lwlib-Xm.c (lw_motif_widget_p, xm_update_one_value)
      (xm_create_dialog, xm_destroy_instance, xm_popup_menu)
      (xm_set_keyboard_focus, xm_set_main_areas): Remove decls.
      * src/commands.h (update_mode_lines):
      * src/frame.h (Qbackground_color, Qforeground_color)
      (x_set_menu_bar_lines):
      * src/ftfont.c (ftfont_font_format):
      * src/intervals.h (Qkeymap, Qfont):
      * src/keyboard.c (timer_check, safe_run_hooks, Qregion_extract_function):
      * src/lisp.h (Ffboundp, Qnil, Qt, Qlambda, Qintegerp, Qwholenump)
      (Qsymbolp, Qlisp, Qconsp, Qstringp, Qarrayp, Qbufferp, Qmarkerp)
      (Qvectorp, Qbuffer_or_string_p, Qchar_table_p, Qvector_or_char_table_p)
      (Qfloatp, Qnumberp, Qfont_spec, Qfont_entity, Qfont_object)
      (Fbyteorder, wrong_type_argument, Fmax_char, syms_of_composite)
      (Fidentity, extract_float, init_display, syms_of_display, Qdisplay):
      (Qimage, Qbox, redisplay_preserve_echo_area, char_table_ref)
      (char_table_set, char_table_translate, Qautoload, Qbottom, Qtop)
      (Qvisible, Qfont, Qfront_sticky, Qrear_nonsticky, init_sigio)
      (Qtool_bar, Qheader_line):
      * src/macros.c (Fexecute_kbd_macro):
      * src/xdisp.c (Ftool_bar_height, Ftool_bar_height):
      * src/xterm.c (x_delete_terminal, XSetIMValues):
      * src/xterm.h (x_set_window_size, x_query_color, x_get_focus_frame)
      (x_implicitly_set_name, popup_activated)
      (widget_store_internal_border):
      Remove redundant decls.
      * src/frame.c [USE_X_TOOLKIT]: Include widget.h.
      * src/keyboard.c (Fexit_recursive_edit, Fabort_recursive_edit):
      Remove _Noreturn, as make-docfile now does that for us.
      * src/lisp.h (DEFUN): Don't declare fnname here; rely on make-docfile.
      (Qregion_extract_function): New decl.
      * src/window.c, src/xfns.c: Include menu.h.
      73bfe891
  32. 06 Jun, 2014 1 commit
  33. 29 Apr, 2014 1 commit
    • Stefan Monnier's avatar
      * src/window.c (struct saved_window): Remove mark. · 4d89ee37
      Stefan Monnier authored
      (Fset_window_configuration, save_window_save)
      (compare_window_configurations): Don't touch marks any more.
      * doc/lispref/windows.texi (Window Configurations, Window Configurations):
      Window configs don't store marks any more.
      4d89ee37
  34. 24 Apr, 2014 1 commit
  35. 16 Apr, 2014 1 commit