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.
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.
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.
* src/fileio.c: Revert 2013-01-31 change.
(choose_write_coding_system): No longer callable from Lisp.
Move last piece back here from Fwrite_region.
(Fwrite_region, syms_of_fileio): Update for above changes.
* test/automated/data/files-bug18141.el.gz: New file.
* test/automated/files.el (files-test-bug-18141-file):
New variable and test.
Paul Eggert [Sun, 10 Aug 2014 20:40:57 +0000 (13:40 -0700)]
Don't prevent random file systems from being unmounted.
This fix relies on having the 'fchdir' function, and on having
"." be searchable (or at least readable, on platforms lacking O_SEARCH),
but that's good enough to handle the vast majority of cases and the
remaining folks can just live with the annoyance of file systems
that occasionally can't be unmounted.
* configure.ac (fchdir): New function to check for.
* lib/save-cwd.c: Copy from gnulib, except omit the part that
allocates memory, since that can cause problems in Emacs.
* lib/save-cwd.h: Copy from gnulib.
* calendar/icalendar.el (icalendar-export-sexp-enumerate-all)
(icalendar-export-sexp-enumeration-days): New
(icalendar-export-region): `icalendar--convert-to-ical' now
returns a cons cell or a list of cons cells.
(icalendar--convert-to-ical): Take care of
`icalendar-export-sexp-enumerate-all'. Return (a list of) cons
cells.
(icalendar--convert-ordinary-to-ical),
(icalendar--convert-weekly-to-ical),
(icalendar--convert-yearly-to-ical),
(icalendar--convert-block-to-ical),
(icalendar--convert-block-to-ical),
(icalendar--convert-float-to-ical),
(icalendar--convert-cyclic-to-ical),
(icalendar--convert-anniversary-to-ical): Return cons cell.
(icalendar--convert-sexp-to-ical): Enumerate evaluated sexp
entries. Return (list of) cons cells.
Martin Rudalics [Sun, 10 Aug 2014 08:26:28 +0000 (10:26 +0200)]
Fix handling of menu bar line on TTY frames (Bug#18136) (Bug#18196).
* dispnew.c (handle_window_change_signal):
* keyboard.c (Fsuspend_emacs): Call change_frame_size with
frame's menu bar lines subtracted from height.
* frame.c (frame_inhibit_resize): Inhibit resizing of TTY
frames.
(adjust_frame_size): Count in menu bar when setting FrameRows.
(make_terminal_frame): When setting up the frame's lines and
text height don't count in the menu bar.
(Fmake_terminal_frame): Call adjust_frame_size with menu bar
lines subtracted from height.
(do_switch_frame): Set tty's FrameRows to number of total lines
of frame.
(Fframe_pixel_height, Fframe_pixel_width): If no window system
is used, return total number of lines and columns.
* menu.c (emulate_dialog_with_menu): Use FRAME_TOTAL_LINES instead
of FRAME_LINES.
* term.c (OUTPUT, tty_set_terminal_modes)
(tty_set_terminal_window, tty_set_scroll_region)
(tty_clear_to_end, tty_write_glyphs, tty_write_glyphs_with_face)
(tty_ins_del_lines, tty_menu_display, tty_menu_activate): Use
FRAME_TOTAL_LINES instead of FRAME_LINES.
(Fresume_tty): Use FRAME_TOTAL_LINES instead of FRAME_LINES.
Call change_frame_size with frame's menu bar lines subtracted
from height.
* w32console.c (w32con_clear_to_end, w32con_clear_frame)
(w32con_ins_del_lines): Use FRAME_TOTAL_LINES instead of
FRAME_LINES.
Alan Mackenzie [Sat, 9 Aug 2014 20:54:04 +0000 (20:54 +0000)]
progmodes/cc-fonts.el (c-font-lock-declarators): Remove check for
top-level that can cause unacceptable slow-down in scrolling.
See email Subject: Huge {...} blocks in C/C++ again, from Dmitry Antipov
from 2013-10-14 in emacs-devel.
Martin Rudalics [Sat, 9 Aug 2014 16:50:13 +0000 (18:50 +0200)]
In display-buffer-below-selected reuse window below selected if it shows buffer already (Bug#18181).
* window.el (display-buffer-below-selected): Restore original
behavior if buffer is already displayed in the window below the
selected one (Bug#18181).
Martin Rudalics [Sat, 9 Aug 2014 11:12:45 +0000 (13:12 +0200)]
Second attempt to fix some doc-strings in window.c.
* window.c (Fwindow_new_total, Fwindow_new_normal)
(Fwindow_new_pixel, Fset_window_new_pixel)
(Fset_window_new_total, Fset_window_new_normal): Second attempt
to fix the doc-strings of these functions. See:
http://lists.gnu.org/archive/html/bug-gnu-emacs/2014-08/msg00287.html
Paul Eggert [Sat, 9 Aug 2014 06:57:59 +0000 (23:57 -0700)]
Merge from gnulib.
This incorporates:
2014-08-07 getdtablesize: fall back on sysconf (_SC_OPEN_MAX)
2014-08-05 sys_select: fix FD_ZERO problem on Solaris 10
* lib/getdtablesize.c, lib/sys_select.in.h: Update from gnulib.
ibuffer.el (ibuffer-mode-map): Use toggle button for
`ibuffer-auto-mode' menu entry.
(ibuffer-mode-hook): Add `ibuffer-auto-mode' customization option.
Reuben Thomas [Thu, 7 Aug 2014 11:49:36 +0000 (12:49 +0100)]
Remove remaining mentions of VMS as a host
* notes/exit-value: Remove specific discussion of VMS.
* doc/emacs/programs.texi (Program Modes): Don't advertise VMS DCL support
any more.
* doc/misc/ediff.texi (Merging and diff3): Don't mention lack of support
for VMS diff, we no longer support VMS.
* lisp/progmodes/ada-mode.el:
* lisp/net/tramp.el (tramp-handle-file-symlink-p):
* lisp/net/tramp-ftp.el (tramp-ftp-file-name-handler): Remove a comment
about VMS, which we no longer support.
* lisp/progmodes/ada-xref.el (ada-xref-current): Remove mention of VMS,
and fix a FIXME, using convert-standard-filename in place of
removed ada-convert-file-name.
* lisp/url/url-handlers.el: Remove a comment about VMS, which we no longer
support.
Reuben Thomas [Thu, 7 Aug 2014 10:15:52 +0000 (11:15 +0100)]
Fix a few ``MS-DOG''s overlooked in the previous commit.
* README: ``MSDOG'' becomes ``MS-DOS''.
* lisp/arc-mode.el: Fix a couple of ``MS-DOG''s missed in the previous
commit.
* lisp/file-mode.el: ditto.
* src/editfns.c: Fix a couple of ``MS-DOG''s missed in the previous commit.
* src/xfaces.c: ditto.