Fabián Ezequiel Gallina [Mon, 28 Jul 2014 03:35:37 +0000 (00:35 -0300)]
* lisp/progmodes/python.el
(python-shell-with-shell-buffer): New macro.
(python-shell-font-lock-get-or-create-buffer)
(python-shell-font-lock-kill-buffer)
(python-shell-font-lock-with-font-lock-buffer)
(python-shell-font-lock-cleanup-buffer)
(python-shell-font-lock-toggle): Use it.
(python-shell-font-lock-turn-on)
(python-shell-font-lock-turn-off): Use it. Make command.
Fabián Ezequiel Gallina [Mon, 28 Jul 2014 02:47:29 +0000 (23:47 -0300)]
Grab all Python process output before inferior-python-mode hooks.
* lisp/progmodes/python.el (inferior-python-mode): Call
accept-process-output and sit-for to ensure all output for process
has been received before running hooks.
(python-shell-internal-get-or-create-process): Cleanup
accept-process-output and sit-for calls.
Paul Eggert [Mon, 28 Jul 2014 02:13:11 +0000 (19:13 -0700)]
* frame.c (x_set_frame_parameters): Don't use uninitialized locals.
Fabián Ezequiel Gallina [Mon, 28 Jul 2014 01:41:29 +0000 (22:41 -0300)]
More robust shell startup and code setup.
* lisp/progmodes/python.el (python-shell-make-comint): Remove
accept-process-output call.
(python-shell-get-buffer): Return current buffer if major-mode is
inferior-python-mode.
(python-shell-get-or-create-process): Use it.
(python-shell-send-setup-code): Send all setup code in one string,
output success message and accept-process-output.
Eli Zaretskii [Sun, 27 Jul 2014 18:05:37 +0000 (21:05 +0300)]
Support horizontal scrolling of bidirectional text.
lisp/scroll-bar.el (scroll-bar-toolkit-horizontal-scroll): Add
rudimentary support for bidirectional text.
Jan Djärv [Sun, 27 Jul 2014 14:45:26 +0000 (16:45 +0200)]
Reinstate removed code.
* nsterm.m (applicationDidFinishLaunching antialiasThresholdDidChange):
Reinstate code removed by the prevoius commit to this file.
Martin Rudalics [Sun, 27 Jul 2014 13:21:30 +0000 (15:21 +0200)]
Complete pixelwise frame/window resizing, add horizontal scrollbar support.
* 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.
Thien-Thi Nguyen [Sun, 27 Jul 2014 09:41:59 +0000 (11:41 +0200)]
Use `defvar-local' more.
* lisp/progmodes/hideshow.el
(hs-c-start-regexp, hs-block-start-regexp)
(hs-block-start-mdata-select, hs-block-end-regexp)
(hs-forward-sexp-func, hs-adjust-block-beginning): ...here;
remove corresponding `make-variable-buffer-local' top-level calls.
Fabián Ezequiel Gallina [Sun, 27 Jul 2014 07:05:13 +0000 (04:05 -0300)]
Cleanup error signals.
* lisp/progmodes/python.el
(python-indent-shift-left): Use user-error instead.
(python-shell-prompt-detect): Use lwarn with python group.
(python-completion-complete-at-point)
(python-eldoc--get-doc-at-point): Don't signal error.
Fixes: debbugs:18067
Fabián Ezequiel Gallina [Sun, 27 Jul 2014 06:39:17 +0000 (03:39 -0300)]
Support for packages in Python shell.
* lisp/progmodes/python.el (python-shell--package-depth): New var.
(python-shell-package-enable): New command.
(python-util-list-directories, python-util-list-files)
(python-util-list-packages): New functions.
Fixes: debbugs:13570
Glenn Morris [Sun, 27 Jul 2014 02:59:49 +0000 (22:59 -0400)]
* python.el (python-shell-enable-font-lock): Fix typo in earlier change.
Fabián Ezequiel Gallina [Sun, 27 Jul 2014 02:02:38 +0000 (23:02 -0300)]
Faster comint output.
* lisp/progmodes/python.el:
(python-comint-output-filter-function): Make obsolete.
(python-comint-postoutput-scroll-to-bottom): New function.
(inferior-python-mode): Set comint-output-filter-functions to a
minimum.
Fixes: debbugs:16875
Fabián Ezequiel Gallina [Sun, 27 Jul 2014 01:00:26 +0000 (22:00 -0300)]
* lisp/progmodes/python.el (python-shell-font-lock-post-command-hook):
Safeguard current point and undo history.
Fabián Ezequiel Gallina [Sat, 26 Jul 2014 23:43:51 +0000 (20:43 -0300)]
Robust shell syntax highlighting. (Bug#18084, Bug#16875)
* lisp/progmodes/python.el:
(python-shell-prompt-input-regexps): Add iPython block prompt.
(python-shell-output-syntax-table): Delete var.
(python-shell-font-lock-with-font-lock-buffer): New macro.
(python-shell-font-lock-get-or-create-buffer)
(python-shell-font-lock-kill-buffer)
(python-shell-font-lock-cleanup-buffer)
(python-shell-font-lock-post-command-hook)
(python-shell-font-lock-turn-off): New functions.
(python-shell-font-lock-turn-on): New function.
(inferior-python-mode): Use it.
(python-shell-font-lock-toggle): New command.
(python-shell-font-lock-enable): Rename from
python-shell-enable-font-lock.
(run-python-internal): Use it.
(python-shell-font-lock-comint-output-filter-function): New function.
(python-shell-comint-end-of-output-p): New function.
(python-shell-output-filter): Use it.
(python-util-comint-last-prompt): New function.
(python-util-text-properties-replace-name): New function.
Paul Eggert [Sat, 26 Jul 2014 13:17:25 +0000 (06:17 -0700)]
Revert previous change.
There is certainly nothing wrong with writing code like 'lo <= i
&& i <= hi', even if LO happens to a constant. There isn't even
anything wrong in general with writing 'a <= b' if A happens to
be a constant. At any rate stylistic changes shouldn't
be done like this without discussion.
Ulf Jasper [Sat, 26 Jul 2014 12:53:36 +0000 (14:53 +0200)]
Work around the failures in icalendar-tests which occasionally occur
on hydra.nixos.org.
* automated/icalendar-tests.el (icalendar-tests--do-test-import):
Work around the failures in icalendar-tests which occasionally occur on
hydra.nixos.org.
Andreas Schwab [Sat, 26 Jul 2014 12:14:42 +0000 (14:14 +0200)]
Reorder conditions that are written backwards
* alloc.c (xnmalloc, xnrealloc, xpalloc, make_save_value)
(Fgarbage_collect): Reorder conditions that are written backwards.
* data.c (cons_to_unsigned): Likewise.
* dispnew.c (update_frame_1, sit_for): Likewise.
* fileio.c (file_offset): Likewise.
* filelock.c (read_lock_data, lock_file): Likewise.
* fns.c (larger_vector, make_hash_table, Fmake_hash_table):
Likewise.
* font.c (font_intern_prop, font_style_symbolic): Likewise.
* lisp.h (FIXNUM_OVERFLOW_P): Likewise.
* lread.c (read1): Likewise.
* minibuf.c (read_minibuf_noninteractive): Likewise.
* nsterm.m (x_set_frame_alpha): Likewise.
* process.c (wait_reading_process_output): Likewise.
* region-cache.c (delete_cache_boundaries): Likewise.
* xterm.c (x_set_frame_alpha): Likewise.
Andreas Schwab [Sat, 26 Jul 2014 11:58:24 +0000 (13:58 +0200)]
Reorder conditions that are written backwards
* alloc.c (xnmalloc, xnrealloc, xpalloc, make_save_value)
(Fgarbage_collect): Reorder conditions that are written backwards.
* data.c (cons_to_unsigned): Likewise.
* dispnew.c (update_frame_1, sit_for): Likewise.
* fileio.c (file_offset): Likewise.
* filelock.c (read_lock_data, lock_file): Likewise.
* fns.c (larger_vector, make_hash_table, Fmake_hash_table):
Likewise.
* font.c (font_intern_prop, font_style_symbolic): Likewise.
* lisp.h (FIXNUM_OVERFLOW_P): Likewise.
* lread.c (read1): Likewise.
* minibuf.c (read_minibuf_noninteractive): Likewise.
* nsterm.m (x_set_frame_alpha): Likewise.
* process.c (wait_reading_process_output): Likewise.
* region-cache.c (delete_cache_boundaries): Likewise.
* xterm.c (x_set_frame_alpha): Likewise.
Paul Eggert [Fri, 25 Jul 2014 21:51:29 +0000 (14:51 -0700)]
* dispextern.h, xdisp.c (hourglass_shown_p, hourglass_atimer):
Now static.
Dmitry Antipov [Fri, 25 Jul 2014 17:14:01 +0000 (21:14 +0400)]
* atimer.c (set_alarm) [HAVE_ITIMERSPEC]: Use TIMER_ABSTIME
because atimer expiration is absolute rather than relative.
Eli Zaretskii [Fri, 25 Jul 2014 11:58:36 +0000 (14:58 +0300)]
Fix last commit in w32term.c.
src/w32term.h (current_popup_menu, menubar_in_use): Move
declarations from w32term.c.
Glenn Morris [Fri, 25 Jul 2014 09:37:07 +0000 (05:37 -0400)]
ediff: Replace obsolete toggle-read-only with read-only-mode
* lisp/vc/ediff-init.el (ediff-toggle-read-only-function):
* lisp/vc/ediff-util.el (ediff-toggle-read-only):
Replace obsolete toggle-read-only with read-only-mode.
Martin Rudalics [Fri, 25 Jul 2014 09:29:23 +0000 (11:29 +0200)]
Provisionally fix Windows build broken by last commit.
* w32fns.c (menubar_in_use): No more static.
* w32term.c (current_popup_menu, menubar_in_use): Declare.
Dmitry Antipov [Fri, 25 Jul 2014 06:07:14 +0000 (10:07 +0400)]
Fix ChangeLog typo.
Dmitry Antipov [Fri, 25 Jul 2014 06:01:39 +0000 (10:01 +0400)]
Move hourglass machinery to RIF.
* dispextern.h (struct redisplay_interface): New members
show_hourglass and hide_hourglass. Indent comments.
(show_hourglass, hide_hourglass): Remove prototypes.
* nsterm.m (show_hourgass, hide_hourglass): Refactor to ...
(ns_show_hourglass, ns_hide_hourglass): ... new no-ops.
(ns_redisplay_interface): Add them.
* w32fns.c (show_hourglass, hide_hourglass): Refactor to ...
* w32term.c (w32_show_hourglass, w32_hide_hourglass): ... these.
(w32_arrow_cursor): New function to hack around non-GUI frames.
(w32_redisplay_interface): Add new functions.
* w32term.h (w32_arror_cursor): Add prototype.
* xdisp.c (show_hourglass): New function, refactored out from
platform-dependend code.
(cancel_hourglass): Now call to RIF function.
* xfns.c (show_hourglass, hide_hourglass): Refactor to ...
* xterm.c (x_show_hourglass, x_hide_hourglass): ... these.
(x_redisplay_interface): Add new functions.
Michael Albinus [Thu, 24 Jul 2014 07:30:36 +0000 (09:30 +0200)]
* net/tramp-cache.el (tramp-flush-file-function): Wrap the code
with `save-match-data'.
Fixes: debbugs:18095
Dmitry Antipov [Thu, 24 Jul 2014 05:49:14 +0000 (09:49 +0400)]
Fix error reported by Angelo Graziosi <angelo.graziosi@alice.it> in
<http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00274.html>
and complete previous change.
* frame.c (adjust_frame_height): New function.
(Fset_frame_height, Fset_frame_size): Use it.
(x_set_frame_parameters): Take frame top margin into account.
Dmitry Antipov [Wed, 23 Jul 2014 16:09:34 +0000 (20:09 +0400)]
* frame.c (Fset_frame_height): Take frame top margin into account.
Incorrect behavior was reported by Martin Rudalics <rudalics@gmx.at> in
<http://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00258.html>
Dmitry Antipov [Tue, 22 Jul 2014 13:55:04 +0000 (17:55 +0400)]
* xterm.h (struct x_output) [USE_LUCID && USE_TOOLKIT_SCROLL_BARS]:
Define scroll_bar_top_shadow_pixel and scroll_bar_bottom_shadow_pixel
as such. All related users changed.
Dmitry Antipov [Tue, 22 Jul 2014 10:34:05 +0000 (14:34 +0400)]
* xterm.h (struct x_output) [USE_X_TOOLKIT || USE_GTK]: Define
menubar_height as such. Tweak comment.
(FRAME_MENUBAR_HEIGHT) [!USE_X_TOOLKIT && !USE_GTK]: No-op.
* xterm.c (handle_one_xevent):
* gtkutil.c (xg_event_is_for_menubar):
* xfns.c (x_window) [USE_X_TOOLKIT]:
* xmenu.c (set_frame_menubar, free_frame_menubar): Prefer
to use FRAME_MENUBAR_HEIGHT.
Katsumi Yamaoka [Tue, 22 Jul 2014 06:37:31 +0000 (06:37 +0000)]
gnus-utils.el (gnus-recursive-directory-files): Unify hard or symbolic links (bug#18063)
Vincent Belaïche [Mon, 21 Jul 2014 17:53:38 +0000 (19:53 +0200)]
Correct ses-truncate-cell bug implied by setting ses.el in lexical binding: row and col had been erronously made unbound.
Dmitry Antipov [Mon, 21 Jul 2014 16:58:12 +0000 (20:58 +0400)]
* src/frame.c (Fframe_parameters): Always report frame height without
menu and tool bar lines.
* etc/TODO: remove frame height remark.
Glenn Morris [Mon, 21 Jul 2014 06:03:08 +0000 (02:03 -0400)]
Merge from emacs-24; up to 2014-06-25T10:17:41Z!rgm@gnu.org
Glenn Morris [Mon, 21 Jul 2014 05:58:27 +0000 (01:58 -0400)]
NEWS tweaks
Glenn Morris [Mon, 21 Jul 2014 05:38:17 +0000 (01:38 -0400)]
Small fixes re toggle-read-only, mainly doc
* progmodes/hideif.el (hide-ifdef-mode-submap): Also substitute read-only-mode.
* bindings.el (mode-line-toggle-read-only):
* bs.el (bs-toggle-readonly):
* buff-menu.el (Buffer-menu-toggle-read-only):
* dired.el (dired-toggle-read-only):
* files.el (view-read-only, find-file-read-only)
(find-file-read-only-other-window)
(find-file-read-only-other-frame):
* progmodes/hideif.el (hide-ifdef-toggle-outside-read-only):
Doc fixes re toggle-read-only.
* view.el: Comment updates.
Glenn Morris [Mon, 21 Jul 2014 03:31:36 +0000 (23:31 -0400)]
* doc/emacs/emacs.texi (Intro): Workaround makeinfo 4 @acronym bug.
Fixes: debbugs:18040
Stefan Monnier [Mon, 21 Jul 2014 01:58:43 +0000 (21:58 -0400)]
* emacs-lisp/smie.el (smie-config--guess-1): Split from smie-config--guess.
(smie-config--guess): Use it.
Stefan Monnier [Mon, 21 Jul 2014 01:56:54 +0000 (21:56 -0400)]
* lisp/emacs-lisp/edebug.el: Use nadvice.
(edebug-original-read): Remove.
(edebug--read): Rename from edebug-read and add `orig' arg.
(edebug-uninstall-read-eval-functions)
(edebug-install-read-eval-functions): Use nadvice.
(edebug-read-sexp, edebug-read-storing-offsets, edebug-read-symbol)
(edebug-read-and-maybe-wrap-form1, edebug-instrument-callee)
(edebug-read-string, edebug-read-function): Use just `read'.
(edebug-original-debug-on-entry): Remove.
(edebug--debug-on-entry): Rename from edebug-debug-on-entry and add
`orig' arg.
(debug-on-entry): Override with nadvice.
Stefan Monnier [Mon, 21 Jul 2014 01:41:59 +0000 (21:41 -0400)]
Indentation, punctuation, and other nitpicks.
Stefan Monnier [Mon, 21 Jul 2014 01:38:21 +0000 (21:38 -0400)]
* lisp/mouse.el (tear-off-window): Rename from mouse-tear-off-window since
it also makes sense to bind it to a non-mouse event.
Stefan Monnier [Mon, 21 Jul 2014 01:34:03 +0000 (21:34 -0400)]
* test/automated/advice-tests.el (advice-test-call-interactively): Make sure
the function's definition is fully restored at the end.
Stefan Monnier [Mon, 21 Jul 2014 01:25:59 +0000 (21:25 -0400)]
* lisp/vc/vc-bzr.el (vc-bzr-shelve): Make it operate on fileset.
Fabián Ezequiel Gallina [Sun, 20 Jul 2014 19:51:16 +0000 (16:51 -0300)]
* lisp/progmodes/python.el: Add comment about pipe buffering and
solutions for missing/delayed output in inferior Python shells.
Fixes: debbugs:17304
Fabián Ezequiel Gallina [Sun, 20 Jul 2014 18:28:50 +0000 (15:28 -0300)]
* lisp/progmodes/python.el (python-mode): Don't set
mode-require-final-newline.
Fixes: debbugs:17990
Fabián Ezequiel Gallina [Sun, 20 Jul 2014 18:12:30 +0000 (15:12 -0300)]
Make python.el work with IPython automatically.
* lisp/progmodes/python.el:
(python-shell-completion-setup-code): New value supporting iPython.
(python-shell-completion-string-code): New value supporting iPython.
(python-shell-completion-get-completions): Use them.
(python-shell-completion-module-string-code): Make obsolete.
(python-shell-prompt-input-regexps)
(python-shell-prompt-output-regexps): Add safeguard for ipdb.
(python-shell-output-filter): Fix comment typo.
* test/automated/python-tests.el:
(python-util-clone-local-variables-1): Fix test.
Fixes: debbugs:15510
Dmitry Antipov [Sun, 20 Jul 2014 16:14:58 +0000 (20:14 +0400)]
* frame.h (struct frame) [USE_X_TOOLKIT]: New member shell_position.
* xfns.c (x_window): Use it to allow xfree later.
(x_encode_text): Drop 3rd arg; unused. Tweak comment and adjust users
where appropriate. Use bool for booleans and remove redundant checks.
(Fx_backspace_delete_keys_p): Use XkbFreeKeyboard; explain why.
* xterm.c (x_free_frame_resources): Free shell_position.
Jan Djärv [Sun, 20 Jul 2014 13:18:47 +0000 (15:18 +0200)]
* macfont.h (macfont_update_antialias_threshold): Declare.
* macfont.m (macfont_update_antialias_threshold): Remove static.
* nsterm.h (EmacsApp): Add antialiasThresholdDidChange.
* nsterm.m (applicationDidFinishLaunching:): Call
antialiasThresholdDidChange, register for antialias changes.
(antialiasThresholdDidChange:): New method for EmacsApp.
Fixes: debbugs:17534
Fabián Ezequiel Gallina [Sat, 19 Jul 2014 19:19:47 +0000 (16:19 -0300)]
Fix Python shell prompts detection for remote hosts.
* lisp/progmodes/python.el (python-shell-prompt-detect): Replace
call-process with process-file and make it more robust.
Stefan Monnier [Sat, 19 Jul 2014 16:56:40 +0000 (12:56 -0400)]
* lisp/xt-mouse.el (xterm-mouse-event): Don't assume last-click is non-nil.
Fixes: debbugs:18015
Kenichi Handa [Sat, 19 Jul 2014 15:18:23 +0000 (00:18 +0900)]
2014-07-19 Kenichi Handa <handa@gnu.org>
* xfaces.c (realize_x_face): Call font_load_for_lface with no
mandatory font spec (Bug#17973).
2014-07-19 Stefan Monnier <monnier@iro.umontreal.ca>
* font.c (font_score): Return the worst score if the size of
ENTITY is wrong by more than a factor 2 (Bug#17973).
Fabián Ezequiel Gallina [Sat, 19 Jul 2014 13:13:07 +0000 (10:13 -0300)]
Autodetect Python shell prompts.
* lisp/progmodes/python.el:
(python-shell-interpreter-interactive-arg)
(python-shell-prompt-detect-enabled)
(python-shell-prompt-detect-failure-warning)
(python-shell-prompt-input-regexps)
(python-shell-prompt-output-regexps): New vars.
(python-shell-prompt-calculated-input-regexp)
(python-shell-prompt-calculated-output-regexp): New vars.
(python-shell-get-process-name)
(python-shell-internal-get-process-name)
(python-shell-output-filter)
(python-shell-completion-get-completions): Use them.
(python-shell-prompt-detect)
(python-shell-prompt-validate-regexps): New functions.
(python-shell-prompt-set-calculated-regexps): New function.
(inferior-python-mode): Use it. Also honor overriden
python-shell-interpreter and python-shell-interpreter-args.
(python-shell-make-comint): Honor overriden
python-shell-interpreter and python-shell-interpreter-args.
(python-shell-get-or-create-process): Make it testable by allowing
to call run-python non-interactively.
(python-util-valid-regexp-p): New function.
(python-shell-prompt-regexp, python-shell-prompt-block-regexp)
(python-shell-prompt-output-regexp)
(python-shell-prompt-pdb-regexp): Use it as defcustom :safe.
* test/automated/python-tests.el (python-shell-make-comint-1):
(python-shell-make-comint-2): Fix indentation.
(python-shell-make-comint-3)
(python-shell-make-comint-4): New tests.
(python-shell-get-or-create-process-1): Fix test.
(python-shell-get-or-create-process-2)
(python-shell-get-or-create-process-3): New tests.
(python-shell-internal-get-or-create-process-1): Fix test.
(python-shell-prompt-detect-1): New test.
(python-shell-prompt-detect-2): New test. (Bug#17370)
(python-shell-prompt-detect-3)
(python-shell-prompt-detect-4)
(python-shell-prompt-detect-5)
(python-shell-prompt-detect-6)
(python-shell-prompt-validate-regexps-1)
(python-shell-prompt-validate-regexps-2)
(python-shell-prompt-validate-regexps-3)
(python-shell-prompt-validate-regexps-4)
(python-shell-prompt-validate-regexps-5)
(python-shell-prompt-validate-regexps-6)
(python-shell-prompt-validate-regexps-7)
(python-shell-prompt-set-calculated-regexps-1)
(python-shell-prompt-set-calculated-regexps-2)
(python-shell-prompt-set-calculated-regexps-3)
(python-shell-prompt-set-calculated-regexps-4)
(python-shell-prompt-set-calculated-regexps-5)
(python-shell-prompt-set-calculated-regexps-6)
(python-util-valid-regexp-p-1): New tests.
Stefan Monnier [Sat, 19 Jul 2014 01:43:29 +0000 (21:43 -0400)]
* lisp/rect.el (rectangle--string-preview): Don't assume there
a non-nil default.
Fixes: debbugs:17984
Dmitry Antipov [Fri, 18 Jul 2014 11:04:37 +0000 (15:04 +0400)]
Prefer 'x_display_info *' to 'Display *' in X selection code.
This helps to avoid unneeded calls to x_display_info_for_display.
* xterm.h (struct selection_input_event): Record 'x_display_info *'
instead of 'Display *'.
(SELECTION_EVENT_DPYINFO): New macro.
(SELECTION_EVENT_DISPLAY): Now inline function to prohibit using
it as an lvalue. Mention this in comment.
* xterm.c (handle_one_xevent): Use SELECTION_EVENT_DPYINFO.
* xselect.c (x_get_window_property_as_lisp_data, x_atom_to_symbol)
(selection_data_to_lisp_data, receive_incremental_selection):
Convert to use 'x_display_info *'. Adjust users where appropriate.
(lisp_data_to_selection_data): Likewise. Also pass 'struct
selection data *' as last arg to not return values in args.
(unexpect_property_change): Use common removal technique.
Albert Krewinkel [Fri, 18 Jul 2014 08:23:49 +0000 (08:23 +0000)]
* lisp/gnus/gnus-msg.el (gnus-configure-posting-style):
Allow string replacements in values when matching against a header.
* doc/misc/gnus.texi (Posting Styles): Document the possibility to
perform string replacements when matching against headers.
Dmitry Antipov [Fri, 18 Jul 2014 06:02:19 +0000 (10:02 +0400)]
* frame.c (frame_unspecified_color): New function
refactored out from ...
(Fframe_parameters, Fframe_parameter): ... adjusted users.
(x_fullscreen_adjust, set_frame_param): Move Windows-specific
function to ...
* w32term.c (x_fullscreen_adjust, set_frame_param): ... static here.
* frame.h (x_fullscreen_adjust) [HAVE_NTGUI]:
* lisp.h (set_frame_param): Remove prototype.
* xterm.c (x_display_pixel_width, x_display_pixel_height): Now ...
* xterm.h (x_display_pixel_width, x_display_pixel_height): ...
inlined from here.
Eli Zaretskii [Thu, 17 Jul 2014 15:40:18 +0000 (18:40 +0300)]
Fix last commit of src/w16select.c.
Eli Zaretskii [Thu, 17 Jul 2014 15:39:07 +0000 (18:39 +0300)]
Fix src/ChangeLog entry of last commit.
Eli Zaretskii [Thu, 17 Jul 2014 15:37:48 +0000 (18:37 +0300)]
Fix setting up coding-systems for clipboard access on MS-Windows and MS-DOS.
src/w32select.c (setup_windows_coding_system): Apply
CODING_ANNOTATION_MASK to the common_flags member of struct
coding_system. Reported by Martin Rudalics <rudalics@gmx.at>.
src/w16select.c (Fw16_get_clipboard_data): Apply
CODING_ANNOTATION_MASK to the common_flags member of struct
coding_system.
Eli Zaretskii [Thu, 17 Jul 2014 15:25:21 +0000 (18:25 +0300)]
Fix assertion violation when restoring hscrolled window configurations.
src/xdisp.c (hscroll_window_tree): Don't try hscrolling windows whose cursor
row has zero buffer position as their start position. Reported by
Martin Rudalics <rudalics@gmx.at>.
Eli Zaretskii [Thu, 17 Jul 2014 15:17:52 +0000 (18:17 +0300)]
Fix part of bug #18035 with overlay strings on invisible text.
src/xdisp.c (init_iterator): Initialize it->stop_charpos to the
buffer position where we are to start the iteration.
(handle_invisible_prop): Record in it->stop_charpos the position
where the invisible text ends.
Dmitry Antipov [Thu, 17 Jul 2014 10:18:19 +0000 (14:18 +0400)]
* data.c (wrong_choice): Not static any more.
* lisp.h (wrong_choice): Add prototype.
* frame.h (struct frame) [USE_X_TOOLKIT || HAVE_NTGUI]:
Declare namebuf as such. Tweak comment.
[USE_GTK]: Likewise for tool_bar_position.
(fset_tool_bar_position) [USE_GTK]: Ditto.
(FRAME_TOOL_BAR_POSITION): New macro.
* frame.c (x_report_frame_params):
* gtkutil.c (update_frame_tool_bar):
* xfns.c (Fx_create_frame): Use it.
(x_set_tool_bar_position): Add meaningful diagnostic messages.
Dmitry Antipov [Thu, 17 Jul 2014 09:12:51 +0000 (13:12 +0400)]
* print.c (print_preprocess): Adjust to match changed
sub char-table structure and avoid crash (Bug#18038).
Eli Zaretskii [Wed, 16 Jul 2014 18:39:35 +0000 (21:39 +0300)]
Fix bug #18036 with infloop in redisplay with huge fringes.
src/xdisp.c (move_it_vertically_backward, move_it_by_lines): Prevent
infinite looping in redisplay when display lines don't have enough
space to display even a single character.
Glenn Morris [Wed, 16 Jul 2014 17:06:12 +0000 (13:06 -0400)]
Merge from emacs-24; up to 2014-06-23T06:25:47Z!rgm@gnu.org
Dmitry Antipov [Wed, 16 Jul 2014 15:39:15 +0000 (19:39 +0400)]
* frame.h (enum fullscreen_type) [HAVE_WINDOW_SYSTEM]: Use more natural
values. Add comment.
(struct frame): Re-arrange layout to avoid extra padding and use bit
fields for output_method, want_fullscreen and vertical_scroll_bar_type.
(FRAME_VERTICAL_SCROLL_BAR_TYPE, FRAME_HAS_VERTICAL_SCROLL_BARS)
(FRAME_HAS_VERTICAL_SCROLL_BARS_ON_LEFT)
(FRAME_HAS_VERTICAL_SCROLL_BARS_ON_RIGHT) [!HAVE_WINDOW_SYSTEM]:
Define as no-ops because there are no scroll bars anyway.
* frame.c (make_frame, make_terminal_frame, make_initial_frame):
Adjust users.
* font.c (fset_font_data) [HAVE_XFT || HAVE_FREETYPE]:
Add convenient setter.
(font_put_frame_data, font_get_frame_data): Use it.
Dmitry Antipov [Wed, 16 Jul 2014 08:45:22 +0000 (12:45 +0400)]
More precise control over values of some buffer-local variables.
* keyboard.c (Qvertical_scroll_bar):
* frame.c (Qleft, Qright): Move to ...
* buffer.c (Qleft, Qright, Qvertical_scroll_bar): ... here.
* buffer.c (Qchoice, Qrange, Qoverwrite_mode, Qfraction): New symbols.
(syms_of_buffer): DEFSYM all of the above, attach special properties.
Use special symbols to DEFVAR_PER_BUFFER overwrite-mode,
vertical-scroll-bar, scroll-up-aggressively
and scroll-down-aggressively.
* buffer.h (Qchoice, Qrange, Qleft, Qright, Qvertical_scroll_bar):
Add declarations.
* nsfns.m, frame.h (Qleft, Qright):
* nsterm.m (Qleft): Remove declarations.
* gtkutil.c (toplevel): Include buffer.h.
* data.c (wrong_choice, wrong_range): New functions.
(store_symval_forwarding): Handle special properties of buffer-local
variables and use functions from the above to signal error, if any.
Daiki Ueno [Wed, 16 Jul 2014 05:44:05 +0000 (14:44 +0900)]
Revert 2014-07-16T04:11:08Z!ueno@gnu.org and fix XCHAR2B_BYTE[12] in nsgui.h only
* nsgui.h (XCHAR2B_BYTE1): Add missing parentheses around
pointer argument, before dereferencing.
(XCHAR2B_BYTE2): Likewise.
Daiki Ueno [Wed, 16 Jul 2014 04:40:43 +0000 (13:40 +0900)]
Remove unnecessary ifdef from nsgui.h, introduced by my last commit
Daiki Ueno [Wed, 16 Jul 2014 04:31:31 +0000 (13:31 +0900)]
Move back the XChar2b definition to w32gui.h and nsgui.h
Fix the last change. XChar2b still needs to be defined platform dependently,
to match with the argument types of drawing functions.
Glenn Morris [Wed, 16 Jul 2014 04:28:42 +0000 (21:28 -0700)]
* lisp/desktop.el (after-init-hook): Disable startup frame restoration
in non-graphical situations.
Fixes: debbugs:17693
Daiki Ueno [Wed, 16 Jul 2014 04:11:08 +0000 (13:11 +0900)]
Consolidate XChar2b macros for the X, W32, and NS
Suggested by Jan Djärv in:
https://lists.gnu.org/archive/html/emacs-devel/2014-07/msg00203.html
* w32gui.h (XChar2b, STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2):
Move the fallback definitions to dispextern.h.
* nsgui.h (XChar2b, STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2):
Likewise. Share the same definition with W32.
* xterm.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2): Move to ...
* dispextern.h (STORE_XCHAR2B, XCHAR2B_BYTE1, XCHAR2B_BYTE2):
... here for the consistency with W32 and NS.
Paul Eggert [Tue, 15 Jul 2014 19:28:25 +0000 (12:28 -0700)]
Use "b" flag more consistently; avoid "t".
* make-docfile.c (READ_TEXT): Remove; all uses replaced by "r".
(READ_BINARY): Remove; all uses replaced by "rb".
Fixes: debbugs:18006
Eli Zaretskii [Tue, 15 Jul 2014 16:11:33 +0000 (19:11 +0300)]
etc/TODO: Minor updates.
Alvar Jesus Ibeas Martin [Tue, 15 Jul 2014 16:06:49 +0000 (19:06 +0300)]
Fix bug #18025 with typos in Emacs Lisp Introduction manual.
doc/lispintro/emacs-lisp-intro.texi (Variables, Buffer Names, if & or)
(Symbols as Chest, fwd-para while): Fix typos.
Dmitry Antipov [Tue, 15 Jul 2014 14:04:06 +0000 (18:04 +0400)]
* regex.c (re_search_2): Use ssize_t to avoid integer overflow.
Dmitry Antipov [Tue, 15 Jul 2014 09:59:05 +0000 (13:59 +0400)]
* lwlib/lwlib.h (toplevel): Use unsigned int for LWLIB_ID.
* src/xmenu.c (toplevel): Use LWLIB_ID for next_menubar_widget_id.
(pop_down_menu) [USE_X_TOOLKIT]: Accept integer arg.
(create_and_show_popup_menu, create_and_show_dialog) [USE_X_TOOLKIT]:
Use record_unwind_protect_int and avoid consing.
(syms_of_xmenu) [USE_X_TOOLKIT]: Declare WIDGET_ID_TICK_START.
Daniel Colascione [Mon, 14 Jul 2014 23:58:52 +0000 (16:58 -0700)]
Unbreak compilation of derived cc-mode modes
* lisp/progmodes/cc-defs.el (c-lang-defconst-eval-immediately):
Use `macroexpand-all' instead of `cl-macroexpand-all'.
* lisp/progmodes/cc-langs.el: Change comments from `cl-macroexpand-all'
to `macroexpand-all'
Glenn Morris [Mon, 14 Jul 2014 19:29:29 +0000 (15:29 -0400)]
Tweak earlier vc-log-edit change
* lisp/vc/vc-dispatcher.el (vc-log-edit): Do set up the log buffer
if it was "empty", or used for a different set of files.
Fixes: debbugs:17884
Paul Eggert [Mon, 14 Jul 2014 19:23:18 +0000 (12:23 -0700)]
Use binary-io module, O_BINARY, and "b" flag.
* admin/merge-gnulib (GNULIB_MODULES): Add binary-io. It was already
present implicitly; this just makes the dependence explicit.
* lib-src/etags.c, lib-src/hexl.c, lib-src/make-docfile.c:
Include binary-io.h instead of fcntl.h and/or io.h.
(main): Use set_binary_mode or SET_BINARY
in place of handcrafted code.
* lib-src/etags.c (main) [DOS_NT]:
* lib-src/movemail.c (main) [WINDOWSNT]:
Don't mess with _fmode.
* lib-src/etags.c (main, process_file_name, analyse_regex):
Use fopen/popen's "b" flag instead.
* lib-src/movemail.c (main, popmail): Use open/lk_open/mkostemp's O_BINARY
instead.
* src/callproc.c (create_temp_file): Use mkostemp's O_BINARY flag.
* src/emacs.c [MSDOS]:
* src/emacs.c (main) [DOS_NT]: Don't mess with _fmode.
(main) [MSDOS]: Use SET_BINARY instead of setmode.
* src/minibuf.c: Include binary-io.h instead of fcntl.h.
(read_minibuf_noninteractive):
Use set_binary_mode instead of handcrafted code.
Don't call emacs_set_tty if emacs_get_tty failed.
* src/sysdep.c, src/systty.h (emacs_get_tty): Return int, not void.
* src/sysdep.c (emacs_open, emacs_pipe): Use O_BINARY.
* src/w32.c (pipe2): Adjust eassert to include O_BINARY.
Fixes: debbugs:18006
Paul Eggert [Mon, 14 Jul 2014 19:07:54 +0000 (12:07 -0700)]
* macros.c (Fstart_kbd_macro): Avoid need for overflow check.
Paul Eggert [Mon, 14 Jul 2014 18:56:35 +0000 (11:56 -0700)]
* macros.c (Fstart_kbd_macro): Simplify.
This works around a GCC compiler bug when Emacs is configured with
--enable-gcc-warnings.
Eli Zaretskii [Mon, 14 Jul 2014 15:10:20 +0000 (18:10 +0300)]
src/ChangeLog: Fix a typo in a recently added entry.
Dmitry Antipov [Mon, 14 Jul 2014 15:06:52 +0000 (19:06 +0400)]
* term.c (tty_menu_add_pane, tty_menu_add_selection):
Use menu_item_width.
(tty_menu_show): Simplify because ty_menu_create never return NULL.
Dmitry Antipov [Mon, 14 Jul 2014 04:44:01 +0000 (08:44 +0400)]
* lisp.h (CHECK_VECTOR_OR_STRING): Return number of elements
or characters in string, respectively. Add comment.
* fringe.c (Fdefine_fringe_bitmap):
* fns.c (Fsubstring, substring_both): Use it.
* keymap.c (Fdefine_key, Flookup_key):
* macros.c (Fstart_kbd_macro): Likewise. Avoid call to Flength.
Paul Eggert [Mon, 14 Jul 2014 00:45:19 +0000 (17:45 -0700)]
* make-docfile.c: Simplify a bit, to simplify further refactoring.
(outfile): Remove static var. All uses changed to use stdout,
since it's always stdout anyway. While we're at it, prefer
putchar/puts/fputs to printf when there are no format strings.
(main): Use freopen rather than fopen, so that stdout is reused.
Move O_BINARY stuff after the freopen, so it affects the
reopened file.
(write_c_args): Omit first arg, since it's always stdout now.
All uses changed.
Paul Eggert [Sun, 13 Jul 2014 15:50:35 +0000 (08:50 -0700)]
Improve behavior of 'bzr up; cd src; make -k'.
* Makefile.in (ACLOCAL_INPUTS): Add all m4/*.m4 files.
* src/Makefile.in (top_srcdir): New var.
(ntsource, lispsource, ALL_CFLAGS, gl-stamp, emacs.res):
Use '$(top_srcdir)' instead of '$(srcdir)/..';
its expansion is a bit shorter.
(../config.status): Actually build config.status instead of
just complaining.
(ACLOCAL_INPUTS, AUTOCONF_INPUTS):
New macros, copied and relocated from ../Makefile.in.
($(top_srcdir)/aclocal.m4, $(top_srcdir)/configure, config.in)
(../config.status, Makefile): New dependencies and rules,
copied with relocation from ../Makefile.in. This should be more
likely to rebuild the build machinery properly if you do a 'make'
in the src directory.
Eli Zaretskii [Sun, 13 Jul 2014 14:49:59 +0000 (17:49 +0300)]
Fix bug #17986 with infloop in redisplay when default-directory is nil.
src/xdisp.c (decode_mode_spec): Call file-remote-p on the current
buffer's default-directory only if it is a string.
lisp/bindings.el (mode-line-remote): If default-directory is not a
string, don't call file-remote-p on it; instead state in the
help-echo that it is nil.
Paul Eggert [Sat, 12 Jul 2014 20:02:44 +0000 (13:02 -0700)]
Merge from gnulib, incorporating:
2014-06-27 mktime: merge #if/#ifdef usage from glibc
* lib/mktime.c: Update from gnulib.
Glenn Morris [Sat, 12 Jul 2014 17:53:29 +0000 (10:53 -0700)]
Merge from emacs-24; up to 2014-06-22T05:00:14Z!dmantipov@yandex.ru
Paul Eggert [Sat, 12 Jul 2014 16:26:54 +0000 (09:26 -0700)]
* etags.c (Lisp_functions): Also record cl-defun etc.
Fixes: debbugs:17965
Eli Zaretskii [Sat, 12 Jul 2014 10:29:13 +0000 (13:29 +0300)]
Attempt to fix bug #17962 with SIGSEGV in display_line.
src/xdisp.c (display_line): Don't call FETCH_BYTE with argument less than 1.
Eli Zaretskii [Sat, 12 Jul 2014 09:25:29 +0000 (12:25 +0300)]
Document the behavior of file selection dialogs on Windows 7 (bug #17950).
etc/PROBLEMS: Mention the problem from bug #17950.
src/w32fns.c (Fx_file_dialog): Mention in the doc string the
behavior on Windows 7 and later when the function is repeatedly
invoked with the same value of DIR.
src/xfns.c (Fx_file_dialog) [USE_MOTIF, USE_GTK]: Update the doc
string to match the one in w32fns.c.
Eli Zaretskii [Sat, 12 Jul 2014 09:08:41 +0000 (12:08 +0300)]
etc/PROBLEMS: Update problems specific to MS-Windows.
Eli Zaretskii [Sat, 12 Jul 2014 07:47:40 +0000 (10:47 +0300)]
Minor fix for read_minibuf_noninteractive on MS-Windows.
src/minibuf.c (read_minibuf_noninteractive) [WINDOWSNT]: Switch
stdin to binary mode only if it is connected to a terminal.
Fixes: debbugs:17839
Dmitry Antipov [Sat, 12 Jul 2014 04:06:32 +0000 (08:06 +0400)]
* XMenuInt.h (XDeleteAssoc): Remove duplicated prototype to
pacify -Wredundant-decls.
Paul Eggert [Sat, 12 Jul 2014 02:24:02 +0000 (19:24 -0700)]
Fix bug: C-x v v discarded existing log message.
* lisp/vc/vc-dispatcher.el (vc-log-edit):
Don't clobber an already-existing log message.
Fixes: debbugs:17884
Paul Eggert [Fri, 11 Jul 2014 17:55:24 +0000 (10:55 -0700)]
Coalesce extern decls.
* minibuf.c (emacs_get_tty, emacs_set_tty, suppress_echo_on_tty):
* sysdep.c (emacs_get_tty, emacs_set_tty):
Move duplicate extern decls from here ...
* systty.h: ... to here, so that there's just one copy.
Paul Eggert [Fri, 11 Jul 2014 17:28:53 +0000 (10:28 -0700)]
* Makefile.in (install-arch-indep): Avoid readdir race.
Fixes: debbugs:17971
Jan Djärv [Fri, 11 Jul 2014 16:33:17 +0000 (18:33 +0200)]
Add ifdef NS_IMPL_COCOA aound OSX version check (for clang)
* nsfns.m (Fns_popup_font_panel): Ditto.
* nsterm.m (changeFont:): Add ifdef NS_IMPL_COCOA.