1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-29 08:31:35 -08:00
Commit graph

34884 commits

Author SHA1 Message Date
Dmitry Antipov
032f74518a * intervals.c (set_point_from_marker): New function.
* editfns.c (Fgoto_char):
* process.c (Finternal_default_process_filter):
* window.c (select_window_1): Use it.
* buffer.h (set_point_from_marker): Add prototype.
2013-08-29 20:36:54 +04:00
Eli Zaretskii
3f940c5aa6 A possible fix for bug #14333 with hanging at exit on MS-Windows.
src/w32.c (term_winsock): Call release_listen_threads before calling
 WSACleanup.
 (_sys_wait_accept): Wait for accept event in a loop with a finite
 timeout, instead of waiting indefinitely.  Will hopefully avoid
 hanging during exit because WSACleanup deadlocks waiting for the
 event object to be released.
 src/w32proc.c (release_listen_threads): New function, signals all
 the reader threads that listen for connections to stop waiting.
 src/w32.h (release_listen_threads): Add prototype.
2013-08-29 18:32:04 +03:00
Dmitry Antipov
20de2834a5 * lisp.h (XSETMARKER): Remove unused macro (it doesn't work
anyway because XMISCTYPE is a function and can't be an lvalue).
2013-08-29 19:28:45 +04:00
Dmitry Antipov
101ed2bbbd * alloc.c (Fmake_marker, build_marker): Zero need_adjustment
field of new marker (for sanity and safety).
2013-08-29 15:22:28 +04:00
Dmitry Antipov
1f5cf2009a * xterm.c (x_clear_area): Lost 7th arg because it is always False.
(x_after_update_window_line, x_scroll_bar_create):
(x_scroll_bar_set_handle, XTset_vertical_scroll_bar):
(handle_one_xevent, x_clear_frame_area):
* gtkutil.c (xg_clear_under_internal_border, xg_update_scrollbar_pos):
* xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): Adjust users.
* xterm.h (x_clear_area): Adjust prototype.
2013-08-29 11:27:27 +04:00
Dmitry Antipov
d2b3681358 Hook scanning and indentation functions to find_newline. This helps
to avoid duplicated code and renders more respect to newline cache.
* lisp.h (scan_newline): Prefer ptrdiff_t to EMACS_INT.
* cmds.c (Fforward_line):
* indent.c (scan_for_column, Fcurrent_indentation, indented_beyond_p):
Use find_newline and avoid unnecessary point movements.
* search.c (scan_newline): Implement on top of find_newline.
2013-08-29 11:03:18 +04:00
Stefan Monnier
3ec7babc5c * src/eval.c (Ffuncall): Fix handling of ((lambda ..) ..) in lexically
scoped code.

Fixes: debbugs:11258
2013-08-28 14:27:26 -04:00
Jan Djärv
5ab473cdda * nsterm.m (last_window): New variable.
(EV_TRAILER2): New macro.
(EV_TRAILER): Call EV_TRAILER2.
(mouseMoved:):  Add support for mouse-autoselect-window
on nextstep.

Fixes: debbugs:6888
2013-08-28 18:20:15 +02:00
Andreas Schwab
78779650d6 * regex.c (CHAR_CHARSET, CHARSET_LEADING_CODE_BASE, CHAR_HEAD_P)
(SINGLE_BYTE_CHAR_P, SAME_CHARSET_P, MAKE_CHAR, BYTE8_TO_CHAR):
Remove unused macro definitions.
(CHARSET_RANGE_TABLE_BITS, EXTEND_RANGE_TABLE)
(SET_RANGE_TABLE_WORK_AREA_BIT, SET_RANGE_TABLE_WORK_AREA): Only
define if emacs.
2013-08-28 15:50:55 +02:00
Dmitry Antipov
c3c4768d2b Prefer enum glyph_row_area to int where appropriate.
* dispextern.h (enum glyph_row_area): Add ANY_AREA member.
Fix comment.
(window_box, window_box_width, window_box_left, window_box_left_offset)
(window_box_right, window_box_right_offset): Adjust prototypes.
* xdisp.c (window_box, window_box_width, window_box_left)
(window_box_left_offset, window_box_right, window_box_right_offset):
Use enum glyph_row_area.  Adjust users and tweak comment where needed.
(window_box_edges): Likewise.  Lost 2nd arg since it is always ANY_AREA.
* nsterm.m (ns_clip_to_row):
* w32term.c (w32_clip_to_row):
* xterm.c (x_clip_to_row): Likewise.
2013-08-28 15:00:03 +04:00
Dmitry Antipov
6bdcbfe1e3 * buffer.c (Foverlays_at, Foverlays_in, Fnext_overlay_change)
(Fprevious_overlay_change): Fast path for buffer with no overlays.
2013-08-28 12:33:12 +04:00
Paul Eggert
50b13cdedb * Makefile.in (SHELL): Now @SHELL@, not /bin/sh,
for portability to hosts where /bin/sh has problems.
2013-08-27 23:01:52 -07:00
Dmitry Antipov
f60e429a1a Redesign redisplay interface to drop global output_cursor.
* dispextern.h (struct redisplay_interface): Remove cursor_to member.
(toplevel): Remove declaration of output_cursor.
(set_output_cursor, x_cursor_to): Remove prototype.
* window.h (struct window): New member output_cursor.
(output_cursor_to): New function to replace RIF member.
* dispnew.c (redraw_overlapped_rows, update_marginal_area)
(update_text_area, set_window_cursor_after_update): Use it.
* xdisp.c (output_cursor, set_output_cursor, x_cursor_to): Remove.
(x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
* nsterm.m (ns_update_window_begin, ns_update_window_end):
* w32term.c (x_update_window_begin, x_update_window_end):
* xterm.c (x_update_window_begin, x_update_window_end):
Adjust to use per-window output cursor.
2013-08-28 09:45:38 +04:00
Paul Eggert
d486344e6f Simplify SELECT_TYPE-related code.
Like EMACS_TIME, this portability layer is no longer needed, since
Emacs has been using fd_set as a portability layer for some time.
* sysselect.h (FD_SETSIZE): Rename from MAXDESC.  All uses changed.
(SELECT_TYPE): Remove.  All uses changed to fd_set.
(fd_set) [!FD_SET]: New typedef.
2013-08-27 12:36:28 -07:00
Paul Eggert
43aac990c3 Simplify EMACS_TIME-related code.
This portability layer is no longer needed, since Emacs has been
using struct timespec as a portability layer for some time.
Merge from gnulib, incorporating:
2013-08-27 timespec: new convenience constants and function
* src/atimer.h, src/buffer.h, src/dispextern.h, src/xgselect.h:
Include <time.h> rather than "systime.h"; that's all that's needed now.
* src/dispnew.c: Include <timespec.h> rather than "systime.h";
that's all that's needed now.
* src/systime.h (EMACS_TIME): Remove.  All uses changed to struct timespec.
(EMACS_TIME_RESOLUTION): Remove.  All uses changed to
TIMESPEC_RESOLUTION.
(LOG10_EMACS_TIME_RESOLUTION): Remove.  All uses changed to
LOG10_TIMESPEC_RESOLUTION.
(EMACS_SECS, emacs_secs_addr): Remove.  All uses changed to tv_sec.
(EMACS_NSECS): Remove.  All uses changed to tv_nsec.
(make_emacs_time): Remove.  All used changed to make_timespec.
(invalid_timespec): Rename from invalid_emacs_time.  All uses changed.
(current_timespec): Rename from current_emacs_time.  All uses changed.
(add_emacs_time): Remove.  All uses changed to timespec_add.
(sub_emacs_time): Remove.  All uses change dot timespec_sub.
(EMACS_TIME_SIGN): Remove.  All uses changed to timespec_sign.
(timespec_valid_p): Rename from EMACS_TIME_VALID_P.  All uses changed.
(EMACS_TIME_FROM_DOUBLE): Remove.  All uses changed to dtotimespec.
(EMACS_TIME_TO_DOUBLE): Remove.  All uses changed to timespectod.
(current_timespec): Rename from current_emacs_time.  All uses changed.
(EMACS_TIME_EQ, EMACS_TIME_LT, EMACS_TIME_LE): Remove.  All uses
changed to timespec_cmp.
* src/xgselect.c: Include <timespec.h>, since our .h files don't.
2013-08-27 11:47:55 -07:00
Dmitry Antipov
d350e350ea * xterm.h (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE:)
* nsterm.h (FONT_TYPE_FOR_UNIBYTE, FONT_TYPE_FOR_MULTIBYTE):
Remove the leftovers.
* gtkutil.c (toplevel): Do not declare Qxft but include
font.h to do so.
* image.c (toplevel): Do not declare Vlibrary_cache because
it's already done in lisp.h.
2013-08-27 08:23:54 +04:00
Dmitry Antipov
9fed97293c * lisp.h (Mouse_HLInfo): Move from here...
* dispextern.h (Mouse_HLInfo): ...to here and offload lisp.h.
(reset_mouse_highlight): New function.
* msdos.c (dos_set_window_size, IT_update_begin)
(internal_terminal_init):
* nsterm.m (ns_update_window_end, x_free_frame_resources)
(ns_initialize_display_info):
* w32console.c (initialize_w32_display):
* w32term.c (x_update_window_end, x_free_frame_resources)
(w32_initialize_display_info):
* xterm.c (x_update_window_end, x_free_frame_resources, x_term_init):
* window.c (Fdelete_other_windows_internal):
* xdisp.c (clear_mouse_face, cancel_mouse_face): Use it.
* termchar.h (toplevel):
* xterm.h (toplevel): Include dispextern.h.
2013-08-27 07:52:21 +04:00
Paul Eggert
f462f0750f Fix minor problems found by static checking.
* image.c (XGetPixel, XPutPixel) [HAVE_NS]: Now static.
(expect): Avoid nested-if warning.
(x_build_heuristic_mask) [HAVE_NS]: Avoid unused-var warning.
* nsmenu.m (fillWithWidgetValue:): Avoid type warning.
* nsterm.h, nsterm.m (ns_select):
* xgselect.c, xgselect.h (xg_select):
Adjust signature to better match pselect's.
* nsterm.m (ns_select):
Don't set *TIMEOUT, since pselect doesn't.
* regex.c (whitespace_regexp): Now const_re_char *, to avoid
diagnostic about assigning const char * to it.
* xfaces.c (x_display_info) [HAVE_NS]: Remove; unused.
2013-08-26 14:31:50 -07:00
Stefan Monnier
068f9124b4 * src/lread.c (substitute_object_recurse): Handle hash-tables as well.
Fixes: debbugs:15190
2013-08-26 16:33:21 -04:00
Paul Eggert
1fc8eb33f5 Fix unlikely core dump in init_tty, and simplify terminfo case.
* term.c (init_tty) [TERMINFO]: Fix check for buffer overrun.
The old version incorrectly dumped core if malloc returned a
buffer containing only non-NUL bytes.
(init_tty): Do not allocate or free termcap buffers; the
struct does that for us now.
* termchar.h (TERMCAP_BUFFER_SIZE) [!TERMINFO]: New constant.
(struct tty_display_info): Define members termcap_term_buffer and
termcap_strings_buffer only if !TERMINFO, since terminfo doesn't
use them.  Allocate them directly in struct rather than indirectly
via a pointer, to simplify init_tty.
2013-08-26 11:10:30 -07:00
Paul Eggert
f5adc984fb * frame.c (check_minibuf_window): Initialize 'window' properly,
so that Emacs reliably aborts later if 'window' is not initialized.
2013-08-26 10:31:00 -07:00
Dmitry Antipov
447218dd74 Fix ChangeLog typo. 2013-08-26 20:29:52 +04:00
Jan Djärv
efec3894b2 * gtkutil.c (xg_initialize): Set gtk-menu-bar-accel to "" instead
of VoidSymbol.

Fixes: debbugs:15154
2013-08-26 17:44:56 +02:00
Dmitry Antipov
e1d0341e25 * lisp.h (Mouse_HLInfo): Drop set-but-unused members
mouse_face_beg_y and mouse_face_end_y.
* xdisp.c (note_tool_bar_highlight, mouse_face_from_buffer_pos)
(mouse_face_from_string_pos, note_mode_line_or_margin_highlight):
Adjust users and update comment where appropriate.
2013-08-26 18:00:55 +04:00
Martin Rudalics
bfff644518 New function check_minibuf_window to fix bug#15183.
* frame.c (check_minibuf_window): New function.
(delete_frame, Fmake_frame_invisible, Ficonify_frame): Call
check_minibuf_window (Bug#15183).
2013-08-26 14:39:08 +02:00
Dmitry Antipov
c80016b3c1 * window.h (struct window): Replace last_cursor with last_cursor_vpos
because this is the only last cursor data we need to keep and consult.
* window.c (replace_window, set_window_buffer, Fsplit_window_internal):
* xdisp.c (mark_window_display_accurate_1, try_cursor_movement):
Adjust users.
2013-08-26 13:33:37 +04:00
Dmitry Antipov
de3967312f Fix recovering from possible decompression error. Since
insert_from_gap doesn't always move point, we can't use PT as
the position where the partially decompressed data ends, and
should count how may bytes was produced so far.
* decompress.c (struct decompress_unwind_data): Add nbytes member.
(unwind_decompress): Really delete partially uncompressed data.
(Fzlib_decompress_region): Take decompressed data size into account.
2013-08-26 09:32:47 +04:00
Dmitry Antipov
1570ae92dc * alloc.c (sweep_vectors): Do not initialize 'block' twice. 2013-08-26 09:26:06 +04:00
Dmitry Antipov
c76826d98c * syntax.c (init_syntax_once): Adjust comment and do an early
initialization of Qchar_table_extra_slots just once...
* casetab.c (init_casetab_once):
* category.c (init_category_once):
* character.c (syms_of_character):
* coding.c (syms_of_coding):
* xdisp.c (syms_of_xdisp): ...and omit it here.
2013-08-26 09:20:59 +04:00
Eli Zaretskii
6dc695d1e3 Add commentary for the last commit. 2013-08-24 18:21:05 +03:00
Eli Zaretskii
11f20add70 Fix bug #15175 with cursor on boxed characters from display tables.
src/xdisp.c (get_next_display_element): Don't apply to characters
 from a display vector the logic of setting it->end_of_box_run_p
 suitable for characters from a buffer.
2013-08-24 15:59:13 +03:00
Eli Zaretskii
b34454d067 Fix bug #15176 with setting directory times on MS-Windows.
src/w32.c (fdutimens): Call 'utime', which is implemented on w32.c
 to handle directories, rather than '_utime' which doesn't.
2013-08-24 13:15:01 +03:00
Jan Djärv
6e1b469ee2 * gtkutil.c (x_wm_set_size_hint): Don't set hints when maximized
or fullscreen.

Fixes: debbugs:14627
2013-08-24 10:43:36 +02:00
Paul Eggert
9c05bccfb9 System-dependent integer overflow fixes.
* process.c (Fset_process_window_size): Signal an error if
the window size is outside the range supported by the lower level.
* sysdep.c (set_window_size): Return negative on error,
nonnegative on success, rather than -1, 0, 1 on not in system,
failure, success.  This is simpler.  Caller changed.
(serial_configure): Remove unnecessary initialization of local.
(procfs_get_total_memory) [GNU_LINUX]: Don't assume system memory
size fits in unsigned long; this isn't true on some 32-bit hosts.
Avoid buffer overrun if some future version of /proc/meminfo has a
variable name longer than 20 bytes.
(system_process_attributes) [__FreeBSD__]:
Don't assume hw.availpages fits in 'int'.
2013-08-23 19:23:34 -07:00
Paul Eggert
c365c35580 Don't let very long directory names overrun the stack.
Fix some related minor problems involving "//", vfork.
* callproc.c (encode_current_directory): New function.
(call_process): Don't append "/"; not needed.
* fileio.c (file_name_as_directory_slop): New constant.
(file_name_as_directory): Allow SRC to be longer than SRCLEN;
this can save the caller having to alloca.
(Ffile_name_as_directory, Fdirectory_file_name, Fexpand_file_name):
Use SAFE_ALLOCA, not alloca.
(directory_file_name, Fexpand_file_name): Leave leading "//"
alone, since it can be special even on POSIX platforms.
* callproc.c (call_process):
* process.c (Fformat_network_address):
* sysdep.c (sys_subshell):
Use encode_current_directory rather than rolling our own.
(create_process): No need to encode directory; caller does that now.
* process.h (encode_current_directory): New decl.
* sysdep.c (sys_subshell): Work even if vfork trashes saved_handlers.
Rework to avoid 'goto xyzzy;'.
2013-08-23 10:57:07 -07:00
Eli Zaretskii
6c6014d4cc Fix bug #15155 with ignoring face remapping for strings from prefix properties.
src/xdisp.c (handle_face_prop): If the default face was remapped use
 the remapped face for strings from prefix properties.
2013-08-23 17:25:39 +03:00
Dmitry Antipov
6b729d1685 * window.c (struct save_window_data): Fix typo. 2013-08-23 08:17:04 +04:00
Dmitry Antipov
9997ec56be Minor cleanup for redisplay interface and few related functions.
* frame.h (enum text_cursor_kinds): Move from here...
* dispextern.h (enum text_cursor_kinds): ...to here.
(toplevel): Drop unnecessary declarations.
(struct redisplay_interface): Use bool and enum text_cursor_kinds
in update_window_end_hook and draw_window_cursor functions.
(display_and_set_cursor, x_update_cursor): Adjust prototypes.
* nsterm.m (ns_update_window_end, ns_draw_window_cursor):
* w32term.c (x_update_window_end,w32_draw_window_cursor):
* xterm.c (x_update_window_end, x_draw_window_cursor):
* xdisp.c (display_and_set_cursor, update_window_cursor)
(update_cursor_in_window_tree, x_update_cursor): Use bool and
enum text_cursor_kinds where appropriate.
2013-08-23 08:03:25 +04:00
Dmitry Antipov
7f780da621 Redesign redisplay interface to drop updated_row and updated_area.
* dispextern.h (updated_row, updated_area): Remove declaration.
(struct redisplay_interface): Pass glyph row and row area parameters
to write_glyphs, insert_glyphs and clear_end_of_line functions.
(x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
Adjust prototypes.
* dispnew.c (updated_row, updated_area): Remove.
(redraw_overlapped_rows, update_window_line): Adjust user.
(update_marginal_area, update_text_area): Likewise.  Pass updated row
as a parameter.  Prefer enum glyph_row_area to int where appropriate.
* xdisp.c (x_write_glyphs, x_insert_glyphs, x_clear_end_of_line):
Adjust users.
2013-08-23 07:03:37 +04:00
Paul Eggert
2649579468 * process.c (flush_pending_output): Remove stub.
All uses removed.
2013-08-22 11:29:51 -07:00
Paul Eggert
4a88129ae4 * callproc.c: Fix race that killed background processes.
(call_process): New arg TEMPFILE_INDEX.  Callers changed.
Record deleted process-id in critical section, not afterwards.
Don't mistakenly kill process created by a call-process invocation
that discards output and does not wait.

Fixes: debbugs:15144
2013-08-21 14:27:30 -07:00
Dmitry Antipov
0c5307b05f Fix compilation with GC_MARK_STACK == GC_USE_GCPROS_AS_BEFORE
and GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES.
* alloc.c (toplevel): Remove unnecessary nested #if...#endif.
(mark_maybe_object) [!GC_MARK_STACK]: Define to emacs_abort
to shut up compiler in mark_object.
(dump_zombies): Convert to global and add EXTERNALLY_VISIBLE.
2013-08-21 11:02:45 +04:00
Paul Eggert
0d7c1e66ff * process.c (allocate_pty) [PTY_OPEN]: Set fd's FD_CLOEXEC flag.
We can't portably rely on PTY_OPEN doing that, even if
it calls posix_openpt with O_CLOEXEC.
2013-08-20 22:39:51 -07:00
Kenichi Handa
3f246b6572 src/character.c (string_char): Improve commentary. 2013-08-20 17:56:03 +03:00
Paul Eggert
8c2f38aaab * image.c (SIGNATURE_DIGESTSIZE): Remove.
(struct animation_cache): Make signature a flexible array member.
All uses changed.  This is a tad slower but may insulate us better
from future changes to ImageMagick.
2013-08-19 17:51:35 -07:00
Paul Eggert
bb566ceafe * image.c: Shrink memory needed for animation cache.
(SIGNATURE_DIGESTSIZE): New constant.
(struct animation_cache): Make 'signature' a fixed size array of bytes.
(imagemagick_create_cache): Copy the signature.  This saves
several KB of memory that ImageMagick wastes per signature.
Don't bother updating the update_time, as the caller does that now.
(imagemagick_prune_animation_cache): Don't destroy the signature, as
it's a fixed size struct member now.
(imagemagick_get_animation_cache): Always destroy the signature,
as it's now imagemagick_create_cache's responsibility to copy it.
Avoid duplicate calls to strcmp and to imagemagick_create_cache,
and use memcmp rather than strcmp.
eassert that ImageMagick returns a signature of the specified length.
2013-08-19 13:47:27 -07:00
Lars Magne Ingebrigtsen
453f40228f (imagemagick_get_animation_cache): Fix memory leak. 2013-08-19 19:56:58 +02:00
Paul Eggert
824a2fa737 * image.c: Space before paren. 2013-08-19 09:24:06 -07:00
Lars Magne Ingebrigtsen
2a42bbcee8 Fix previous commit.
(imagemagick_get_animation_cache): Revert to previous definition
so that it actually works.  But keep the memory leak fix.
2013-08-19 17:14:42 +02:00
Lars Magne Ingebrigtsen
6da2692802 * image.c (imagemagick_get_animation_cache): Don't segfault on each invocation.
Bug introduced by 2013-08-19T07:01:37Z!eggert@cs.ucla.edu, which obviously hadn't even been
tested once.
2013-08-19 16:52:52 +02:00