Dmitry Antipov [Fri, 29 Aug 2014 11:02:56 +0000 (15:02 +0400)]
* doc/lispref/lists.texi (Functions that Rearrange Lists): Remove
description of sort ...
* doc/lispref/sequences.texi (Sequence Functions): ... and generalize
it for sequences. Add an example.
* src/fns.c (Fsort): Use more natural Qsequencep error.
* test/automated/fns-tests.el (fns-tests-sort): Minor style rewrite.
Martin Rudalics [Fri, 29 Aug 2014 10:39:17 +0000 (12:39 +0200)]
Adjust display-buffer-at-bottom.
* window.el (display-buffer-at-bottom): Prefer bottom-left
window to other bottom windows. Reuse a bottom window if it
shows the buffer already. Suggested by Juri Linkov
<juri@jurta.org> in discussion of (Bug#18181).
Dmitry Antipov [Fri, 29 Aug 2014 07:29:47 +0000 (11:29 +0400)]
Add vectors support to Fsort.
* configure.ac (AC_CHECK_FUNCS): Check for qsort_r.
* src/fns.c (sort_vector, sort_vector_compare): New functions.
(sort_list): Likewise, refactored out of ...
(Fsort): ... adjusted user. Mention vectors in docstring.
(sort_vector_predicate) [!HAVE_QSORT_R]: New variable.
* src/alloc.c (make_save_int_obj): New function.
* src/lisp.h (enum Lisp_Save_Type): New member SAVE_TYPE_INT_OBJ.
(make_save_int_obj): Add prototype.
* test/automated/fns-tests.el (fns-tests-sort): New test.
Stefan Monnier [Thu, 28 Aug 2014 20:37:13 +0000 (16:37 -0400)]
* lisp/progmodes/cc-defs.el: Expose c-lanf-defconst's expressions to the
byte-compiler.
(lookup-syntax-properties): Silence byte-compiler.
(c-lang-defconst): Quote the code with `lambda' rather than with
`quote'.
(c-lang-const): Avoid unneeded setq.
(c-lang-constants-under-evaluation): Add docstring.
(c-lang--novalue): New constant.
(c-find-assignment-for-mode): Use it instead of c-lang-constants.
(c-get-lang-constant): Same here.
Get the mode's value using `funcall' now that the code is quoted
with `lambda'.
Ken Brown [Thu, 28 Aug 2014 14:48:02 +0000 (10:48 -0400)]
Add support for HYBRID_MALLOC, allowing the use of gmalloc before
dumping and the system malloc after dumping. (Bug#18222)
* configure.ac (HYBRID_MALLOC): New macro; define to use gmalloc
before dumping and the system malloc after dumping. Define on Cygwin.
* src/conf_post.h (malloc, realloc, calloc, free) [HYBRID_MALLOC]:
Define as macros, expanding to hybrid_malloc, etc.
(HYBRID_GET_CURRENT_DIR_NAME): New macro.
(get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Define as
macro.
* src/gmalloc.c: Set up the infrastructure for HYBRID_MALLOC, with a
full implementation on Cygwin. Remove Cygwin-specific code that
is no longer needed.
(malloc, realloc, calloc, free, aligned_alloc) [HYBRID_MALLOC]:
Redefine as macros expanding to gmalloc, grealloc, etc.
(DUMPED, ALLOCATED_BEFORE_DUMPING) [CYGWIN]: New macros.
(get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Undefine.
(USE_PTHREAD, posix_memalign) [HYBRID_MALLOC]: Don't define.
(hybrid_malloc, hybrid_calloc, hybrid_free, hybrid_realloc)
[HYBRID_MALLOC]:
(hybrid_get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]:
(hybrid_aligned_alloc) [HYBRID_MALLOC && (HAVE_ALIGNED_ALLOC ||
HAVE_POSIX_MEMALIGN)]: New functions.
* src/alloc.c (aligned_alloc) [HYBRID_MALLOC && (ALIGNED_ALLOC ||
HAVE_POSIX_MEMALIGN)]: Define as macro expanding to
hybrid_aligned_alloc; declare.
(USE_ALIGNED_ALLOC) [HYBRID_MALLOC && (ALIGNED_ALLOC ||
HAVE_POSIX_MEMALIGN)]: Define.
(refill_memory_reserve) [HYBRID_MALLOC]: Do nothing.
* src/sysdep.c (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]:
Define as macro, expanding to gget_current_dir_name, and define
the latter.
* src/emacs.c (main) [HYBRID_MALLOC]: Don't call memory_warnings() or
malloc_enable_thread(). Don't initialize malloc.
* src/lisp.h (NONPOINTER_BITS) [CYGWIN]: Define (because GNU_MALLOC is
no longer defined on Cygwin).
(refill_memory_reserve) [HYBRID_MALLOC]: Don't declare.
* src/sheap.c (bss_sbrk_buffer_end): New variable.
* src/unexcw.c (__malloc_initialized): Remove variable.
* src/ralloc.c: Throughout, treat HYBRID_MALLOC the same as
SYSTEM_MALLOC.
* src/xdisp.c (decode_mode_spec) [HYBRID_MALLOC]: Don't check
Vmemory_full.
Martin Rudalics [Thu, 28 Aug 2014 06:46:58 +0000 (08:46 +0200)]
Some fixes for scroll bar code.
* w32term.c (w32_horizontal_scroll_bar_handle_click): In
`event->y' return entire range (the size of the scroll bar minus
that of the thumb).
* xterm.c (xm_scroll_callback, xaw_jump_callback): In `whole'
return entire range (the scaled size of the scroll bar minus
that of the slider). In `portion' return the scaled position of
the slider.
(xaw_jump_callback): Restore part of code for vertical scroll
bar broken in change from 2014-07-27.
(xaw_scroll_callback): Provide incremental scrolling with
horizontal scroll bars.
(x_scroll_bar_handle_click): Fix typo introduced in change from
2014-07-27.
* scroll-bar.el (scroll-bar-horizontal-drag-1): Handle new
interpretation of `portion-whole'.
Paul Eggert [Wed, 27 Aug 2014 18:56:47 +0000 (11:56 -0700)]
Improve robustness of new string-collation code.
* configure.ac (newlocale): Check for this, not for uselocale.
* src/sysdep.c (LC_COLLATE, LC_COLLATE_MASK, freelocale, locale_t)
(newlocale, wcscoll_l): Define substitutes for platforms that
lack them, so as to simplify the mainline code.
(str_collate): Simplify the code by assuming the above definitions.
Use wcscoll_l, not uselocale, as uselocale is too fragile. For
example, the old version left the Emacs in the wrong locale if
wcscoll reported an error. Use 'int', not ptrdiff_t, for the int
result. Report an error if newlocale fails.
Dmitry Antipov [Wed, 27 Aug 2014 10:51:21 +0000 (14:51 +0400)]
* src/keyboard.c (Vtop_level_message): Rename to
Vinternal__top_level_message, as suggested by Stefan Monnier in
http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00493.html
All related users changed.
* lisp/startup.el (normal-top-level): Now use internal--top-level-message.
* doc/lispref/eval.texi (Eval): Mention possible recovery from stack overflow.
Dmitry Antipov [Wed, 27 Aug 2014 04:15:20 +0000 (08:15 +0400)]
Fix some glitches in previous change.
* sysdep.c (stack_direction): Replace stack_grows_down
to simplify calculation of stack boundaries.
(handle_sigsegv): Check whether we really crash somewhere near
to stack boundary, and handle fatal signal as usual if not.
(init_sigsegv): Adjust accordingly.
Dmitry Antipov [Tue, 26 Aug 2014 06:25:59 +0000 (10:25 +0400)]
Handle C stack overflow caused by too nested Lisp evaluation.
* configure.ac: Check for sigaltstack and related sigaction
support. Unconditionally check for sigsetjmp and siglongjmp.
(HAVE_STACK_OVERFLOW_HANDLING): Define if we can support it.
* src/lisp.h (toplevel) [HAVE_STACK_OVERFLOW_HANDLING]: Declare
siglongjmp point to transfer control from SIGSEGV handler.
* src/keyboard.c (return_to_command_loop, recover_top_level_message)
[HAVE_STACK_OVERFLOW_HANDLING]: New variables.
(regular_top_level_message): New variable.
(command_loop) [HAVE_STACK_OVERFLOW_HANDLING]: Handle non-local
exit from SIGSEGV handler and adjust message displayed by Vtop_level
if appropriate.
(syms_of_keyboard): DEFVAR Vtop_level_message and initialize
new variables described above.
* src/sysdep.c [HAVE_SYS_RESOURCE_H]: Include sys/resource.h as such.
(stack_grows_down, sigsegv_stack, handle_sigsegv)
[HAVE_STACK_OVERFLOW_HANDLING]: New variables and function.
(init_sigsegv): New function.
(init_signals): Use it.
* lisp/startup.el (normal-top-level): Use top-level-message.
Dmitry Antipov [Mon, 25 Aug 2014 07:00:42 +0000 (11:00 +0400)]
One more minor cleanup of font subsystem.
* font.h (struct font_driver): Convert text_extents to
return void because returned value is never actually used.
* macfont.c (macfont_text_extents):
* w32font.c (w32font_text_extents):
* xftfont.c (xftfont_text_extents): Adjust to return void
and assume that 'metrics' argument is always non-NULL.
* ftfont.c (ftfont_text_extents):
* xfont.c (xfont_text_extents): Likewise. Avoid redundant memset.
Paul Eggert [Mon, 25 Aug 2014 05:44:57 +0000 (22:44 -0700)]
Minor cleanups of str_collate fix.
* fns.c (str_collate): Move decl from here ...
* lisp.h (str_collate): ... to here.
* sysdep.c (str_collate): Prune away some of the forest of ifdefs.
Remove unnecessary casts. Use SAFE_NALLOCA to avoid
potential problems with integer overflow. Don't assume
setlocale succeeds. Remove unnecessary test before restoring
locale via setlocale, and free the copied setlocale string
when done with it.
Alan Mackenzie [Sun, 24 Aug 2014 20:50:11 +0000 (20:50 +0000)]
Handle C++11's "auto" and "decltype" constructions.
cc-engine.el (c-forward-type): Enhance to recognise and return 'decltype.
(c-forward-decl-or-cast-1): New let variables backup-kwd-sym,
prev-kwd-sym, new-style-auto. Enhance to handle the new "auto" keyword.
cc-fonts.el (c-font-lock-declarations): Handle the "decltype" keyword.
(c-font-lock-c++-new): Handle "decltype" constructions.
cc-langs.el (c-auto-ops, c-auto-ops-re): New c-lang-defconsts/defvars.
(c-haskell-op, c-haskell-op-re): New c-lang-defconsts/defvars.
(c-typeof-kwds, c-typeof-key): New c-lang-defconsts/defvars.
(c-typeless-decl-kwds): Append "auto" onto the C++ value.
(c-not-decl-init-keywords): Also exclude c-typeof-kwds from value.
Alan Mackenzie [Sun, 24 Aug 2014 20:38:11 +0000 (20:38 +0000)]
Make ">>" act as double template ender in C++ Mode.
cc-langs.el (c->-op-cont-tokens): New lang-const split off from
c->-op-cont-re.
(c->-op-cont-tokens): Change to use the above.
(c->-op-without->-cont-regexp): New lang-const.
cc-engine.el (c-forward-<>-arglist-recur): Use
c->-op-without->-cont-regexp in place of c->-op-cont-tokens.
Karol Ostrovsky [Sat, 23 Aug 2014 08:48:30 +0000 (11:48 +0300)]
Fix bug #18302 with minor issues in the MSYS2/MinGW64 build.
configure.ac: Accept "*-mingw*", not just "*-mingw32", as
canonical name of a MinGW build, because using MSYS2 'uname'
produces "MINGW64".
src/Makefile.in (emacs$(EXEEXT)): Retry deletion of bootstrap-emacs
if the initial "rm -f" fails. This is for MinGW builds, where
MS-Windows will not allow deleting the executable file of a
running program.
Eli Zaretskii [Sat, 23 Aug 2014 08:22:46 +0000 (11:22 +0300)]
Fix compilation warnings about snprintf in the MSDOS build.
msdos/sed2v2.inp [DJGPP <= 2.03]: Add a prototype for snprintf, to
avoid compilation warning from newer GCC versions that have
snprintf as a built-in. Reported by Juan Manuel Guerrero
<juan.guerrero@gmx.de>.
Katsumi Yamaoka [Thu, 21 Aug 2014 23:02:23 +0000 (23:02 +0000)]
lisp/gnus/mm-view.el (mm-display-inline-fontify): Make the working buffer temporarily displayed when running a mode function (at least org-mode requires it)
Eli Zaretskii [Thu, 21 Aug 2014 15:07:13 +0000 (18:07 +0300)]
Fix a bug in texinfo-make-menu.
lisp/textmodes/texnfo-upd.el (texinfo-specific-section-type): Don't
recognize a Top node if there are other sectioning commands
earlier in the Texinfo file. This fixes a bug in
texinfo-make-menu and avoids inflooping in
texinfo-all-menus-update when they are invoked on texinfo.texi.
Martin Rudalics [Thu, 21 Aug 2014 08:40:29 +0000 (10:40 +0200)]
Handle failed attempts to split a side window (Bug#18304).
* window.el (window--side-window-p): New function.
(split-window, window-splittable-p): Use window--side-window-p to
determine whether WINDOW can be split (Bug#18304).
* calendar/calendar.el (calendar-basic-setup): Fix one call of
`window-splittable-p' and add another (Bug#18304).
Eli Zaretskii [Wed, 20 Aug 2014 14:41:15 +0000 (17:41 +0300)]
Remove 16-bit limitations in scroll bar position reporting on MS-Windows.
src/w32term.c (w32_scroll_bar_handle_click)
(w32_horizontal_scroll_bar_handle_click)
(x_scroll_bar_report_motion)
(x_horizontal_scroll_bar_report_motion): For SB_THUMBPOSITION and
SB_THUMBTRACK, use the 32-bit position information returned by
GetScrollInfo, not the 16-bit information returned in the Windows
message sent to us.
* lisp/emacs-lisp/eldoc.el (eldoc-highlight-function-argument): Add support
for &key args.
* emacs-lisp/eldoc.el (eldoc-argument-case): Obsolete and change default.
(eldoc-function-argstring-format): Remove.
(eldoc-function-argstring): Always return upcase args.
Use help-make-usage. Don't add parens.
(eldoc-get-fnsym-args-string): Don't obey eldoc-argument-case since
it's too late to do it right (bug#18048).
Eli Zaretskii [Mon, 18 Aug 2014 14:39:26 +0000 (17:39 +0300)]
Fix horizontal scrolling in non-selected windows.
lisp/scroll-bar.el (scroll-bar-horizontal-drag-1)
(scroll-bar-toolkit-horizontal-scroll): When determining the
paragraph direction, use the buffer of the window designated in
the event.
Eli Zaretskii [Sun, 17 Aug 2014 14:58:04 +0000 (17:58 +0300)]
Avoid overwriting the reversed_p flags in the glyph matrices.
Avoid overwriting the reversed_p flags in the glyph matrices when
init_iterator or start_display are called.
src/xdisp.c (init_iterator): Don't initialize the reversed_p flag of
the glyph row here.
(tool_bar_height, redisplay_tool_bar, try_window)
(try_window_reusing_current_matrix, try_window_id)
(get_overlay_arrow_glyph_row, display_menu_bar): Initialize the
reversed_p flag of the iterator's glyph row where the glyph row
is going to be redrawn.
Eli Zaretskii [Sun, 17 Aug 2014 14:48:50 +0000 (17:48 +0300)]
Avoid inflooping in redisplay caused by hscrolled R2L lines.
src/xdisp.c (display_line): Don't assume that the call to
reseat_at_next_visible_line_start ends up at a character
immediately following the newline on the previous line. Avoids
setting the ends_at_zv_p flag on screen lines that are not at or
beyond ZV, which causes infloop in redisplay. For the details, see
http://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00368.html.
Paul Eggert [Sat, 16 Aug 2014 16:50:32 +0000 (09:50 -0700)]
Add dependencies to fix loaddefs race during parallel builds.
Without this, for example, 'make -j bootstrap' can fail and report
"Opening input file: no such file or directory,
.../lisp/calendar/diary-loaddefs.el ... recipe for target
'calendar/hol-loaddefs.el' failed", where the hol-loaddefs.el rule
got confused because diary-loaddefs.el was being built in parallel.
* Makefile.in ($(CAL_DIR)/diary-loaddefs.el):
Depend on $(CAL_DIR)/cal-loaddefs.el.
($(CAL_DIR)/hol-loaddefs.el): Depend on $(CAL_DIR)/diary-loaddefs.el.
Martin Rudalics [Sat, 16 Aug 2014 15:47:38 +0000 (17:47 +0200)]
Preliminary attempt to fix horizontal scroll bar dragging with bidi text.
* w32term.c (w32_horizontal_scroll_bar_handle_click): In y part
of emacs_event return length from si.nPage to si.nMax.
* xdisp.c (set_horizontal_scroll_bar): For right-to-left text
interchange start and end of thumb.
* scroll-bar.el (scroll-bar-horizontal-drag-1): Use cdr of
portion-whole for scrolling right-to-left text.
* image-mode.el (image-transform-reset): New command and menu item.
(image-mode-map): Rearrange the menu items to put presumably more
obscure items at the end.