Paul Eggert [Mon, 7 Nov 2016 06:55:30 +0000 (22:55 -0800)]
Restore file descriptor limit in subprocesses
Problem reported by Philipp Stephani (Bug#24869).
* src/callproc.c (child_setup) [!DOS_NT]:
Call restore_nofile_limit in the child.
* src/process.c (nofile_limit) [HAVE_SETRLIMIT]: New static var.
(restore_nofile_limit): New function.
(init_process_emacs) [HAVE_SETRLIMIT]: Set the new var.
Paul Eggert [Fri, 4 Nov 2016 22:02:03 +0000 (15:02 -0700)]
Merge from origin/emacs-25
acae275 ; Spelling fixes d8fac73 Update README for precompiled windows Emacs. 23570fd Clarify documentation of 'vc-responsible-backend' wrt symlinks f708cb2 Clarify doc string of 'transpose-sexps' cd05b1d Fix docstring of 'browse-url-firefox-new-window-is-tab' bdc89eb Improve documentation of 'font-lock-remove-keywords' 4a0c590 Fix documentation of the command summary key 0221b7a Mark relocation workarounds with REL_ALLOC
Phillip Lord [Fri, 4 Nov 2016 20:50:55 +0000 (20:50 +0000)]
Update README for precompiled windows Emacs.
* nt/README.W32: Describe 64 and 32-bit downloads, optional
dependencies bundle. Remove old material on sourcing dependencies.
Remove references to Windows 95. Update GUI references to recent
Windows. Remove references to Usenet.
Mark Oteiza [Fri, 4 Nov 2016 16:45:51 +0000 (12:45 -0400)]
Fix references to long obsoleted functions/aliases
* doc/lispintro/emacs-list-intro.texi (Miscellaneous):
* doc/misc/cl.texi (Conditionals):
* doc/misc/speedbar.texi (Major Display Modes): Use string-to-number,
not string-to-int.
* lisp/emulation/viper.el (viper-go-away): Use major-mode, not
default-major-mode.
* lisp/textmodes/reftex-toc.el (reftex-toc-visit-location): show-window
here is not a function call, but shorten the binding names anyways.
Also, use pop-to-buffer-same-window instead of switch-to-buffer cf
Bug#22244.
* lisp/textmodes/sgml-mode.el (html-tag-alist): Use read-string, not
read-input.
Katsumi Yamaoka [Fri, 4 Nov 2016 10:33:26 +0000 (10:33 +0000)]
* lisp/net/shr.el (shr-collect-extra-strings-in-table) New function
that gathers extra strings in an invalid html. (bug#24831)
(shr-tag-table): Use it.
Eli Zaretskii [Fri, 4 Nov 2016 09:50:48 +0000 (11:50 +0200)]
Clarify doc string of 'transpose-sexps'
* lisp/simple.el (transpose-sexps): Clarify the conditions for
transposing sexps that are lists or strings. Mention the effect
of the prefix argument. (Bug#24860)
Eli Zaretskii [Fri, 4 Nov 2016 09:16:40 +0000 (11:16 +0200)]
Improve documentation of 'font-lock-remove-keywords'
* doc/lispref/modes.texi (Customizing Keywords): Clarify the
'keywords' argument of 'font-lock-remove-keywords'. Suggested by
Hong Xu <hong@topbug.net>. (Bug#24830)
* src/xterm.c (x_x_to_emacs_modifiers, x_emacs_to_x_modifiers):
Support 'x-ctrl-keysym'.
(syms_of_xterm): DEFSYM "ctrl" and put a proper modifier-value
property on it.
<x-ctrl-keysym>: New DEFVAR_LISP.
<x-alt-keysym, x-hyper-keysym, x-meta-keysym, x-super-keysym>: Doc
fix. (Bug#24822)
* etc/NEWS: Mention the addition of 'x-ctrl-keysym'.
Reuben Thomas [Tue, 25 Oct 2016 22:20:59 +0000 (23:20 +0100)]
Stop force parameter of whitespace-report-region having global effect
* lisp/whitespace.el (whitespace-report-region): Force parameter
previously changed whitespace-style globally. Fix this, and use
whitespace-active-style, to take account of any changes the user may
have made. Simplify the documentation: the force parameter simply
forces all classes of whitespace problem to be considered.
(Bug#24745)
Reuben Thomas [Fri, 21 Oct 2016 14:25:12 +0000 (15:25 +0100)]
Make whitespace-report-region respect current settings
* lisp/whitespace.el (whitespace-report-region): Make it respect
whitespace-style, including any additions made by the force parameter.
This means that the function does not return t unless a whitespace
problem that the user cares about is reported. (Bug#24745)
Reuben Thomas [Fri, 21 Oct 2016 14:23:08 +0000 (15:23 +0100)]
Fix whitespace-space-after-tab-regexp
* lisp/whitespace.el (whitespace-space-after-tab-regexp)
(whitespace-regexp): Match all the spaces after tabs for highlighting,
not just the first tab-width. Fix whitespace-space-after-tab::space
version so that it requires at least tab-width spaces, not just 1.
(Bug#24745)
Reuben Thomas [Fri, 21 Oct 2016 14:20:07 +0000 (15:20 +0100)]
Remove duplicate documentation
* lisp/whitespace.el: Remove duplicate documentation from the Commentary
section which duplicate and in some places contradict (due to being
out of date) the docstrings (Bug#24745).
Reuben Thomas [Thu, 20 Oct 2016 12:17:58 +0000 (13:17 +0100)]
Fix bob/eob checks
* lisp/whitespace.el (whitespace-empty-at-bob-regexp)
(whitespace-empty-at-eob-regexp, whitespace-cleanup): Make `empty' checks
work at beginning & end of buffer in whitespace-report-region, and only
there (i.e. they will never match in regions that don't include the
start or end of the buffer). (Bug#24745)
Tino Calancha [Thu, 3 Nov 2016 11:33:19 +0000 (20:33 +0900)]
(thing-at-point 'list) return nil if no list at point
* lisp/thingatpt.el (thing-at-point-bounds-of-list-at-point):
Check first if we are at the beginning of a top-level sexp (Bug#24627).
If point is inside a comment or string, look for a list out of the
comment/string.
Escape '[' in doc string.
* test/lisp/thingatpt-tests.el (thing-at-point-bug24627): Update
expected test result as pass.
Mark Oteiza [Wed, 2 Nov 2016 20:18:49 +0000 (16:18 -0400)]
Revert change to eww-suggest-uris
The introduced append is ugly and can yield '(nil); doing delq on it
would be hacks on hacks.
* lisp/net/eww.el: Require cl-lib at run time.
(eww-suggest-uris): Restore eww-current-url, reverting previous change.
(eww): Remove erroneous append.
(eww-open-in-new-buffer): Check if the return from eww-suggested-uris is
equal to eww-current-url, which is nil anyways if we are not in an EWW
buffer.
Mark Oteiza [Wed, 2 Nov 2016 19:58:28 +0000 (15:58 -0400)]
Add eww-open-in-new-buffer to EWW
* doc/misc/eww.texi (Basic): Document new command and key.
* etc/NEWS: Mention new key and its purpose.
* lisp/net/eww.el (eww-suggest-uris): Remove eww-current-url.
(eww): Append (eww-current-url) to the prompt defaults.
(eww-open-in-new-buffer): New command.
(eww-mode-map): Bind it and add a menu item.
* src/process.c (finish_after_tls_connection): Check that the
file descriptor is still alive before proceeding (bug#24811).
Also clean up the code slightly.
Mark Oteiza [Tue, 1 Nov 2016 00:19:21 +0000 (20:19 -0400)]
Turn on lexical-binding in some net libs
* lisp/net/dbus.el: Turn on lexical-binding.
(dbus-list-hash-table, dbus-list-known-names):
(dbus-introspect-get-node-names, dbus-introspect-get-interface-names):
(dbus-introspect-get-method-names, dbus-introspect-get-signal-names):
(dbus-introspect-get-property-names):
(dbus-introspect-get-argument-names, dbus-get-all-properties):
(dbus-property-handler, dbus-get-all-managed-objects):
(dbus-managed-object-handler): Replace add-to-list with push. Add
nreverse in some places where the APPEND argument of add-to-list was
used.
* lisp/net/network-stream.el: Turn on lexical-binding.
* lisp/net/newsticker.el: Turn on lexical-binding.
* lisp/net/shr.el: Turn on lexical-binding.
(shr-make-placeholder-image): Remove unused variable binding.
(shr-inspect-table): Replace ignored bindings with underscore.
python.el: Fix detection of native completion in Python 3 (bug #24401)
With Python 3.5, (python-shell-completion-native-get-completions ... "")
would return an empty list, causing python.el to think that native
completion was unavailable (the difference between Python 2 and Python 3
is due to https://bugs.python.org/issue25660).
* lisp/progmodes/python.el (python-shell-completion-native-try): Use "_"
to check whether native completion is available instead of "".
Alan Mackenzie [Sun, 30 Oct 2016 17:29:52 +0000 (17:29 +0000)]
Handle chars of syntax word which are also flagged as comment delimiters
src/syntax.c (scan_sexps_forward): When chars of syntax word are also flagged
as the start/end of two char comment delimiters, recognize a comment delimiter
in preference to a portion of a word. This fixes bug #24767.
José L. Doménech [Sun, 30 Oct 2016 01:18:31 +0000 (21:18 -0400)]
Quote file names in dired compression commands
* lisp/dired-aux.el (dired-do-compress-to): Change the string
used as shell command for compression by quoting the filenames
used for input and output (Bug #24620).
Eli Zaretskii [Sat, 29 Oct 2016 14:39:54 +0000 (17:39 +0300)]
Avoid errors in posn-at-point for large images
* src/keyboard.c (Fposn_at_point): If pos-visible-in-window-p
returns a 6-member list for a partially visible glyph, pass the
sum of Y and RTOP to posn-at-x-y, since that's where the visible
portion of that glyph begins on display. (Bug#24804) (Bug#21832)
(Bug#23809)
Eli Zaretskii [Sat, 29 Oct 2016 07:40:38 +0000 (10:40 +0300)]
Unbreak MS-Windows build
* src/w32term.c (XCreateGC): Second argument is now HWND, and its
name is "wignore".
(x_set_cursor_gc, x_set_mouse_face_gc)
(x_draw_glyph_string_background, x_draw_glyph_string_bg_rect)
(x_draw_image_glyph_string, x_draw_stretch_glyph_string): Don't
use s->window, which doesn't exist anymore.
* src/xterm.h (struct x_display_info): New member supports_xdbe.
(struct x_output): New members draw_desc and need_buffer_flip.
(FRAME_X_DRAWABLE, FRAME_X_RAW_DRAWABLE)
(FRAME_X_DOUBLE_BUFFERED_P)
(FRAME_X_NEED_BUFFER_FLIP): New macros.
(set_up_x_back_buffer, tear_down_x_back_buffer)
(initial_set_up_x_back_buffer): Declare.
* src/xterm.c: Include Xdbe.h.
(x_begin_cr_clip, x_fill_rectangle, x_draw_rectangle)
(x_draw_vertical_window_border, x_update_end)
(x_setup_relief_color, x_draw_relief_rect)
(x_draw_fringe_bitmap, x_shift_glyphs_for_insert)
(x_scroll_run, x_draw_hollow_cursor, x_draw_bar_cursor): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
variables appropriately; substitute calls to XClearArea with
x_clear_area, which DTRT for double buffering.
(x_clear_window, x_clear_area): In double-buffering mode, use
rect-drawing X functions instead of XClearWindow and
XClearArea, which always operate on the front buffer.
(show_back_buffer): New function.
(XTframe_up_to_date): Call show_back_buffer when done.
(x_clear_frame, x_clear_frame_area): Remove obsolete calls to
gtk_widget_queue_draw to refresh scroll bars; scroll bars are
now independent X windows.
(handle_one_xevent): Call font_drop_xrender_surfaces when
XftDraw might need regenerating; perform buffer flip when
responding to Expose events; issue front-buffer clearing
commands as stopgap while we wait for redisplay.
Call flush_dirty_back_buffers.
(x_make_frame_visible): Un-bitrot comment; move XSETFRAME
earlier in function.
(x_free_frame_resources): Call tear_down_x_back_buffer when
destroying frame.
(x_term_init): Attempt to initialize double buffer extension.
(x_flip_and_flush): New function.
(x_redisplay_interface): Point to x_flip_and_flush instead of
x_flip directly.
(flush_dirty_back_buffers): New function.
(x_create_terminal): Register buffer_flipping_unblocked_hook.
* src/xftfont.c (xftfont_drop_xrender_surfaces): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
(xftfont_draw): Call x_mark_frame_dirty.
(xftfont_drop_xrender_surfaces): New function.
(syms_of_xftfont): Register it.
* src/xfont.c (xfont_draw): Use FRAME_X_DRAWABLE instead of
FRAME_X_WINDOW.
* src/xfns.c: Include Xdbe.h.
(x_set_inhibit_double_buffering, set_up_x_back_buffer)
(Fx_double_buffered_p): New functions.
(x_window): Call initial_set_up_x_back_buffer.
(x_make_gc): Use FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
(Fx_create_frame): Configure `inhibit-double-buffering'
frame parameter.
(x_create_tip_frame): Call initial_set_up_x_back_buffer.
(x_frame_parm_handlers): Register
x_set_inhibit_double_buffering.
(syms_of_xfns): Register Sx_double_buffered_p.
(x_mark_frame_dirty): Define.
* src/xfaces.c (x_create_gc): Use FRAME_X_DRAWABLE instead of
FRAME_X_WINDOW.
* src/xdisp.c (remember_mouse_glyph, init_glyph_string): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW.
(redisplay_internal): Restart redisplay if a frame is garbaged
during updating; explain why. Block buffer flips
during redisplay.
(redisplay_preserve_echo_area): Block buffer flip during call
to redisplay_internal.
(buffer_flip_blocked_depth): New variable.
(block_buffer_flips, unblock_buffer_flips)
(buffer_flipping_blocked_p): New functions.
(init_glyph_string): Stop setting window member of struct
glyph_string.
* src/w32fns.c (w32_frame_parm_handlers): Add placeholder for
x_set_inhibit_double_buffering.
* src/nsfns.m (ns_frame_parm_handlers): Add placeholder for
x_set_inhibit_double_buffering.
* src/image.c (x_create_bitmap_from_data)
(x_create_bitmap_from_file, x_create_x_image_and_pixmap)
(Create_Pixmap_From_Bitmap_Data)
(x_create_bitmap_from_xpm_data, xpm_load, gs_load): Use
FRAME_X_DRAWABLE instead of FRAME_X_WINDOW; rename local
variables appropriately.
* src/gtkutil.c: Include Xdbe.h.
(xg_get_widget_from_map): Forward declare.
(xg_clear_under_internal_border): Remove obsolete calls to
refresh scroll bars.
(xg_create_frame_widgets): Call initial_set_up_x_back_buffer.
(xg_free_frame_widgets): Call tear_down_x_back_buffer; reset
FRAME_X_DRAWABLE as well as FRAME_X_WINDOW and for the
same reason.
(xg_set_background_color): Set scroll bar background colors.
(xg_finish_scroll_bar_creation): New function with common
logic of xg_create_scroll_bar, xg_create_horizontal_scroll_bar. Force
scroll bars to be real X11 windows.
(xg_create_scroll_bar, xg_create_horizontal_scroll_bar): Call
xg_finish_scroll_bar_creation.
(xg_update_scrollbar_pos, xg_update_horizontal_scrollbar_pos):
Remove obsolete calls to refresh scroll bars; fix comments.
* src/ftxfont.c (ftxfont_get_gcs, ftxfont_draw_bitmap,
(ftxfont_draw_background): Use FRAME_X_DRAWABLE instead of
FRAME_X_WINDOW.
* src/frame.c (frame_parms): Add table entry for new
`inhibit-double-buffering' frame parameter
(syms_of_frame): Register Qinhibit_double_buffering.
* src/font.h (struct font_driver): Add new `flush_frame_caches' hook.
(font_drop_xrender_surfaces): Declare.
* src/font.c (font_drop_xrender_surfaces): New function.
Paul Eggert [Thu, 27 Oct 2016 15:27:13 +0000 (08:27 -0700)]
Update from gnulib
This incorporates:
2016-10-16 qsort_r: Fix macrology for platforms that lack the function.
2016-10-13 stdint: port SIZE_MAX to glibc s390
2016-10-11 maint: remove stray space after "." in AC_DEFINE comment.
* lib/gnulib.mk: Regenerate.
* lib/stdlib.in.h, m4/st_dm_mode.m4, m4/stdint.m4, m4/stdlib_h.m4:
* m4/utimes.m4: Copy from gnulib.
Göktuğ Kayaalp [Thu, 27 Oct 2016 15:05:24 +0000 (08:05 -0700)]
New user variable 'electric-quote-chars'
* doc/emacs/text.texi (Quotation Marks), etc/NEWS: Document this.
* lisp/electric.el (electric-quote-chars): New defcustom.
(electric-quote-post-self-insert-function): Use it.
Ricardo Wurmus [Wed, 26 Oct 2016 06:00:35 +0000 (23:00 -0700)]
xwidget: Bind "beginning-of-buffer" and "end-of-buffer"
* lisp/xwidget.el: Rebind "beginning-of-buffer" and "end-of-buffer" to
"xwidget-webkit-scroll-top" and "xwidget-webkit-scroll-bottom",
respectively.
(xwidget-webkit-scroll-top,
xwidget-webkit-scroll-bottom): New procedures.
Ricardo Wurmus [Wed, 26 Oct 2016 06:00:35 +0000 (23:00 -0700)]
Implement zoom for WebKit widget.
* src/xwidget.c (xwidget-webkit-zoom): New procedure.
* lisp/xwidget.el: Bind "+" and "-" to zoom in and out, respectively.
(xwidget-webkit-zoom): Declare procedure.
(xwidget-webkit-zoom-in, xwidget-webkit-zoom-out): New procedures.
Ricardo Wurmus [Wed, 26 Oct 2016 06:00:35 +0000 (23:00 -0700)]
Dynamically resize WebKit widget.
* lisp/xwidget.el (xwidget-webkit-auto-adjust-size,
xwidget-webkit-adjust-size-in-frame): New procedures.
(xwidget-webkit-new-session): Remove hint to resize widget with `a'.
(xwidget-webkit-adjust-size-dispatch): Resize current webkit widget.
(xwidget-webkit-adjust-size-to-window): Make non-interactive,
add widget and window as arguments.
(xwidget-webkit-callback): Use xwidget-webkit-adjust-size-to-window.
Ricardo Wurmus [Wed, 26 Oct 2016 06:00:35 +0000 (23:00 -0700)]
xwidget: Get selection with asynchronous JavaScript
* lisp/xwidget.el (xwidget-webkit-get-selection): Add PROC argument to
process selection.
(xwidget-webkit-copy-selection-as-kill): Kill selection in callback.
Ricardo Wurmus [Wed, 26 Oct 2016 06:00:35 +0000 (23:00 -0700)]
xwidget: Use WebKit2 API
* configure.ac: Check for webkit2gtk-4.0.
* src/xwidget.c: Adjust to use WebKit2 API.
* lisp/xwidget.el (xwidget-webkit-callback): Adjust matches for
`xwidget-event-type'.
Noam Postavsky [Tue, 25 Oct 2016 01:22:07 +0000 (21:22 -0400)]
Inhibit buffer relocation during regex searches
* src/search.c (looking_at_1, fast_looking_at, search_buffer): Prevent
relocation of buffer contents during calls to re_search_2. This ensures
the pointers into buffer text won't be invalidated by
r_alloc_sbrk (called from malloc with configurations where
REL_ALLOC=yes).
Paul Eggert [Tue, 25 Oct 2016 19:50:30 +0000 (12:50 -0700)]
Merge from origin/emacs-25
ee04aed Fix handling of buffer relocation in regex.c functions 71ca4f6 Avoid relocating buffers while libxml2 reads its text 1b3fc8a ; Remove redundant code in gmalloc.c 9afea93 Attempt to catch reads from a buffer that is relocated
Paul Eggert [Tue, 25 Oct 2016 19:13:20 +0000 (12:13 -0700)]
Default REL_ALLOC to 'no'
This should make ralloc-related bugs less likely on GNU/Linux
systems with bleeding-edge glibc. See the email thread containing:
http://lists.gnu.org/archive/html/emacs-devel/2016-10/msg00801.html
Do not merge to master.
* configure.ac (REL_ALLOC): Default to 'no' on all platforms, not
merely on platforms with Doug Lea malloc. Although bleeding-edge
glibc no longer exports __malloc_initialize_hook and so longer
passes the configure-time test for Doug Lea malloc, ralloc tickles
longstanding bugs like Bug#24358 and Bug#24764 and Emacs is likely
to be more reliable without it. This patch is not needed on
master, which uses hybrid malloc in this situation.