1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-23 00:10:48 -08:00
Commit graph

37746 commits

Author SHA1 Message Date
Eli Zaretskii
a65e00b9f9 Fix visual-order cursor movement when lines are truncated
* src/xdisp.c (Fmove_point_visually): When lines are truncated,
simulate display in a window of infinite width, to allow move_it_*
functions reach positions outside of normal window dimensions.
Remove code that tried to handle a subset of these situations by
manual iteration of buffer text.  (Bug#17777)
2015-07-18 15:17:26 +03:00
Eli Zaretskii
d3816bf8ad Fix scrolling backwards on TTY frames under scroll-conservatively
* src/xdisp.c (move_it_vertically_backward): Fix off-by-one error
in moving backwards on TTY frames.  (Bug#21080)
2015-07-18 13:02:06 +03:00
Paul Eggert
0592cefd03 Fix hang with large yanks This should fix the bug fixed by Mike
Crowe's patch in:
https://lists.gnu.org/archive/html/emacs-devel/2015-07/msg00106.html
A problem in this area has been reported by several users; see
Bug#16737, Bug#17101, Bug#17026, Bug#17172, Bug#19320, Bug#20283.
This fix differs from Mike Crowe's patch in that it should avoid a
race condition that could lose SIGIO signals.  ignore_sigio dates
back to the 1980s when some platforms couldn't block signals, and
could only ignore them, which led to races when signals arrived
while being ignored.  We shouldn't have to worry about those old
platforms now.
* src/dispextern.h, src/sysdep.c (ignore_sigio): Remove.
* src/emacs.c (shut_down_emacs):
Don't call ignore_sigio; unrequest_sigio should suffice.
* src/keyboard.c (kbd_buffer_store_buffered_event):
Use unrequest_sigio, not ignore_sigio.
(kbd_buffer_get_event):
Call request_sigio when getting the ball rolling again.
2015-07-17 11:55:02 -07:00
Paul Eggert
a5522abbca Better heuristic for C stack overflow
Improve the heuristic for distinguishing stack overflows from
other SIGSEGV causes (Bug#21004).  Corinna Vinschen explained that
the getrlimit method wasn't portable to Cygwin; see:
https://www.cygwin.com/ml/cygwin/2015-07/msg00092.html
Corinna suggested pthread_getattr_np but this also has problems.
Instead, replace the low-level system stuff with a simple
heuristic based on known good stack addresses.
* src/eval.c, src/lisp.h (near_C_stack_top): New function.
* src/sysdep.c: Don't include <sys/resource.h>.
(stack_direction): Remove.  All uses removed.
(stack_overflow): New function.
(handle_sigsegv): Use it instead of incorrect getrlimit heuristic.
Make SEGV fatal in non-main threads.
2015-07-16 07:36:47 -07:00
Paul Eggert
ff0e184ef3 Port to stricter C99
* src/keyboard.h (kbd_buffer_store_event_hold):
Don't return a void expression.
2015-07-14 22:30:01 -07:00
Paul Eggert
2254b6c09c Clear gcprolist etc. after stack overflow
After stack overflow, command_loop calls init_eval, and this needs to
clear gcprolist and byte_stack_list (Bug#20996).
* src/alloc.c (init_alloc):
Move gcprolist and byte_stack_list initialization from here ...
* src/eval.c (init_eval): ... to here.
2015-07-14 07:03:06 -07:00
YAMAMOTO Mitsuharu
a1f783824f Avoid deprecated enums in mac-ct font backend driver
* src/macfont.m (mac_font_copy_default_descriptors_for_language)
(mac_ctfont_get_advance_width_for_glyph)
(mac_ctfont_get_bounding_rect_for_glyph): Avoid deprecated enums.
2015-07-13 19:14:25 +09:00
YAMAMOTO Mitsuharu
455fe1a7f1 Cache font family in mac-ct font backend driver
* src/macfont.m (macfont_family_cache): New variable.
(syms_of_macfont): Initialize it.
(macfont_available_families_cache): New variable.
(macfont_invalidate_family_cache, macfont_get_family_cache_if_present)
(macfont_set_family_cache, macfont_invalidate_available_families_cache)
(macfont_handle_font_change_notification)
(macfont_init_font_change_handler)
(macfont_copy_available_families_cache): New functions.
(macfont_create_family_with_symbol): Use font family caches.
(macfont_list, macfont_list_family): Use
macfont_copy_available_families_cache instead of
mac_font_create_available_families.
2015-07-13 18:55:47 +09:00
Andy Moreton
8badbad184 * src/w32heap.c (DUMPED_HEAP_SIZE): Bump to 20MB.
Copyright-paperwork-exempt: yes
2015-07-10 15:48:11 +03:00
YAMAMOTO Mitsuharu
4e81398f1c * src/macfont.m (macfont_list): Ignore font families lacking font descriptors. 2015-07-10 18:04:34 +09:00
Martin Rudalics
f844c020ca Have x-show-tip' handle right' and `bottom' frame parameters.
* src/nsfns.m (compute_tip_xy, Fx_show_tip)
* src/w32fns.c (compute_tip_xy, Fx_show_tip)
* src/xfns.c (compute_tip_xy, Fx_show_tip): Allow aligning
tooltips also via `right' and `bottom' frame parameters.
2015-07-07 08:45:21 +02:00
Ken Brown
f3480939ff * src/sysdep.c (handle_sigsegv) [CYGWIN]: Increase STACK_DANGER_ZONE 2015-07-06 16:01:46 -04:00
Ken Brown
b81507813a * src/emacs.c (main): Don't increase the stack size on Cygwin 2015-07-06 15:10:38 -04:00
Paul Eggert
8c81ac97fd ; Spelling fixes 2015-07-05 23:17:48 -07:00
Paul Eggert
ad23626030 Avoid duplicate calls to current_timespec
* src/process.c (wait_reading_process_output):
Cache current_timespec results as long as we're not waiting.
2015-07-05 19:21:50 -07:00
Ian Kelling
f469c17b9c Avoid returning early reading process output due to SIGIO
* src/process.c (wait_reading_process_output): Extend the behavior of
not breaking due to not finding output when a timer has lowered the
timeout to include when SIGIO lowers the timeout.
2015-07-05 19:21:49 -07:00
Ian Kelling
12a2691fb2 Don't return as fast reading any process output
* src/process.c (wait_reading_process_output):
The patch for Bug#17647 returns too fast sometimes when reading
from any processes. Revert part of it, and limit the timeout more
sensibly (Bug#20978).
2015-07-05 19:21:49 -07:00
Ian Kelling
6e2fcc213d Refactor timeouts in wait_reading_process_output
* src/process.c (wait_reading_process_output):
Simplify timeouts with an enum.  Remove a redundant condition.
(Bug#20978)
2015-07-05 19:21:49 -07:00
Ian Kelling
91cbc7b729 ; Rename local var nsecs to adaptive_nsecs
* src/process.c (wait_reading_process_output): Rename inner nsecs to
adaptive_nsecs.  There is already an nsecs, and this function is
confusing enough (Bug#20978).
2015-07-05 19:21:49 -07:00
Ian Kelling
082eda1cbe ; Rename local var to match function name
* src/process.c (wait_reading_process_output, status_notify):
Previously the function wait_reading_process_input was renamed to the
more logical wait_reading_process_output.  Make its local variables
consistent with that change (Bug#20978).
2015-07-05 19:21:49 -07:00
Ian Kelling
5dc66dbc15 Remove ADAPTIVE_READ_BUFFERING ifdef
* src/process.c (make-process, make-pipe-process, deactivate_process)
(wait_reading_process_output, read_process_output, send_process)
(init_process_emacs): ifdef ADAPTIVE_READ_BUFFERING was originally
added in case there was an operating system in which it was not
useful.  That was 11 years ago and it hasn't happened.  Make
development easier by not considering the effect of changes on a
theoretical OS where this is disabled (Bug#20978).
2015-07-05 19:21:48 -07:00
Ian Kelling
08150826ae ; Minor cleanup of wait_reading_process_output
* src/process.c (wait_reading_process_output):
Simplify logic.  Fix DOS version comments (Bug#20978).
2015-07-05 19:21:48 -07:00
Ian Kelling
cbeeab2eab accept-process-output fix
This is a followon to the fix for Bug#17647 (Bug#20976).
* src/process.c (status_notify): Fix too high return in some cases.
2015-07-05 15:15:01 -07:00
Eli Zaretskii
65571b37ed Fix mouse pointer on w32 when a menu is active
* src/w32fns.c (w32_wnd_proc): Don't change the mouse pointer
shape while a menu is in use.  This started happening since we now
send WM_EMACS_SHOWCURSOR messages when the mouse moves.
2015-07-04 14:23:27 +03:00
Martin Rudalics
cdd5e86967 Fix processing of alpha parameter for Windows tip frames (Bug#17344)
* src/w32fns.c (x_create_tip_frame): Fix processing alpha
parameter.  (Bug#17344)
2015-07-04 10:42:25 +02:00
Eli Zaretskii
7071848862 ;* src/bidi.c (bpa_stack_entry): Update commentary for Unicode 8.0. 2015-07-02 20:40:01 +03:00
Eli Zaretskii
7d5a7a43f1 Be more tolerant to fonts named "Foobar-12"
* src/frame.c (x_set_font): If font_spec_from_name returns nil,
don't barf; instead, request a new fontset to be generated.  This
avoids unnecessarily rejecting fonts named against XLFD rules.  See
http://lists.gnu.org/archive/html/help-emacs-windows/2015-06/msg00001.html,
for the description of the original problem.

* lisp/faces.el (set-face-attribute): Don't be fooled too easily
by a hyphen in a font's name.
2015-07-01 19:33:56 +03:00
Eli Zaretskii
4c66103fb3 Fix value of posn-at-pont in R2L lines
* src/keyboard.c (Fposn_at_x_y, Fposn_at_point): Allow X pixel
coordinate of -1, for a newline in a right-to-left line that
overflowed into the left fringe.
2015-07-01 19:27:13 +03:00
Paul Eggert
cc7acdbd0e Spelling fixes 2015-06-30 19:47:29 -07:00
Paul Eggert
3213d77070 In strings, prefer plain and ' to \ and \'
* lisp/allout.el (allout-insert-listified):
* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
* lisp/ls-lisp.el (ls-lisp-UCA-like-collation)
(ls-lisp-string-lessp):
* lisp/menu-bar.el (menu-bar-open):
* lisp/obsolete/otodo-mode.el (todo-top-priorities):
* lisp/progmodes/compile.el (compile):
* lisp/progmodes/etags.el (tags-loop-scan):
* lisp/progmodes/make-mode.el (makefile-browser-insert-continuation):
* lisp/subr.el (posn-actual-col-row):
* lisp/term/pc-win.el (x-list-fonts):
* lisp/textmodes/texinfmt.el (texinfmt-version):
* lisp/textmodes/texnfo-upd.el (texinfo-master-menu):
* lisp/time.el (display-time-world-list):
* lisp/tmm.el (tmm-menubar):
* src/buffer.c (syms_of_buffer):
* src/fileio.c (syms_of_fileio):
Omit unnecessary and confusing backslash before quote.
* lisp/erc/erc.el (erc-cmd-LASTLOG):
* lisp/progmodes/flymake.el (flymake-fix-file-name):
* lisp/progmodes/vhdl-mode.el (vhdl-in-extended-identifier-p):
Fix string that was intended to escape a backslash and not a quote.
2015-06-30 15:08:02 -07:00
Eli Zaretskii
79310d736c ; * src/doc.c: Add a 'coding' cookie. 2015-06-30 20:13:35 +03:00
Eli Zaretskii
3bea77f655 Make sure sleep-for always delays for as long as it's told
* src/dispnew.c (Fsleep_for): Call wait_reading_process_output in
a loop, to ensure we always wait exactly the required amount of
time.  (Bug#15990)
2015-06-30 19:09:02 +03:00
Paul Eggert
43593cb417 Fix pointer signedness glitch
* src/font.c (font_load_for_lface): Use SSDATA, not SDATA.
2015-06-30 09:07:35 -07:00
Eli Zaretskii
edd09381c6 Don't block changes in mouse pointer inside 'track-mouse'
* etc/NEWS:
* doc/lispref/frames.texi (Mouse Tracking): Document the special
effect of setting 'track-mouse' to 'dragging'.

* lisp/textmodes/artist.el (artist-mouse-draw-continously):
* lisp/ruler-mode.el (ruler-mode-mouse-drag-any-column-iteration):
* lisp/mouse-drag.el (mouse-drag-throw):
* lisp/mouse.el (mouse-drag-line): Set 'track-mouse' to 'dragging'
to avoid changes in the shape of the mouse pointer.

* src/xdisp.c (define_frame_cursor1): Don't change the mouse
pointer shape when do_mouse_tracking has the value of 'dragging',
not just any non-nil value.  (Bug#20934)
(syms_of_xdisp): DEFSYM 'dragging'.
2015-06-30 18:59:21 +03:00
Eli Zaretskii
ea60b543f6 Allow font names that end in "-NN", where NN is a number
* src/font.c (font_load_for_lface): If the font-spec didn't match
any available fonts, try again without interpreting trailing "-NN"
as the font size.  For the description of the original problem, see
http://lists.gnu.org/archive/html/help-emacs-windows/2015-06/msg00001.html
2015-06-29 19:10:20 +03:00
Eli Zaretskii
64110eb14d .gdbinit followup to changes in !USE_LSB_TAG
* src/.gdbinit (xgetsym): Don't left-shift $ptr even under
!USE_LSB_TAG, as Emacs no longer does.
2015-06-29 18:57:25 +03:00
Eli Zaretskii
39e08cc354 ; * src/w32proc.c (w32_executable_type): Fix a typo in a comment. 2015-06-28 18:29:46 +03:00
Eli Zaretskii
31807189b5 Add a new function w32-application-type
* src/w32proc.c (Fw32_application_type): New function.
; * etc/NEWS: Mention w32-application-type.
2015-06-27 13:48:26 +03:00
Eli Zaretskii
5a7fb4f0cc Avoid error in TLS connections due to incorrect format
* src/gnutls.c (Fgnutls_boot): Use the %x conversion specifier in
the call to 'error', instead of the unsupported %u.  Reported by
lo2net <fangtao0901@gmail.com>.  (Bug#20908)
2015-06-27 11:00:38 +03:00
Eli Zaretskii
f142756338 Fix invisible mouse pointers on Windows.
* src/w32fns.c: Include windowsx.h.
(w32_wnd_proc): If the mouse moved and the mouse pointer is
invisible, make it visible again even when the main (Lisp)
thread is busy.
* src/w32term.c (w32_toggle_invisible_pointer): Rather then
garbaging the frame have the input thread call SetCursor.
2015-06-26 08:45:29 +02:00
Martin Rudalics
605765af40 Provide invisible mouse pointers on Windows. (Bug#6105) (Bug#12922)
* src/w32fns.c (w32_wnd_proc): Handle f->pointer_invisible
for WM_SETCURSOR and WM_EMACS_SETCURSOR cases.
* src/w32term.c (w32_hide_hourglass): Handle
f->pointer_invisible.
(w32_toggle_invisible_pointer): New function.
(w32_create_terminal): Add w32_toggle_invisible_pointer as
toggle_invisible_pointer_hook for this terminal.
2015-06-26 08:28:08 +02:00
Paul Eggert
d08e8a11e1 Fix submake dependency bug with .h files
* src/Makefile.in ($(libsrc)/make-docfile$(EXEEXT)):
Depend on $(lib)/libgnu.a, so that we build $(lib)/*/*.h
before the submake in $(libsrc) would spin off a subsubmake
for $(lib) in parallel with our submake for $(lib) (Bug#20894).
2015-06-25 13:31:38 -07:00
Paul Eggert
ee80c11709 Translate undisplayable ‘ to `
* doc/lispref/help.texi (Keys in Documentation):
* lisp/international/mule-cmds.el (set-locale-environment):
* lisp/term/w32console.el (terminal-init-w32console):
* src/doc.c (Fsubstitute_command_keys, Vhelp_quote_translation):
If ‘ is not displayable, transliterate it to `, not to '.  See:
http://lists.gnu.org/archive/html/emacs-devel/2015-06/msg00542.html
2015-06-25 07:22:07 -07:00
Paul Eggert
67dbc32afd Fix C99 incompatibilities in Cairo code
* src/image.c (xpm_load) [USE_CAIRO]:
* src/xterm.c (x_cr_accumulate_data) [USE_CAIRO]:
Fix pointer signedness problem.
2015-06-25 07:09:04 -07:00
Paul Eggert
319eeeb0fb Get ‘./configure; make -C src emacs’ to work
Without this fix, lib/fcntl.h isn't built in time (Bug#20894).
* lib-src/Makefile.in (../lib/libgnu.a):
* src/Makefile.in ($(lib)/libgnu.a): Build all, not libgnu.a.
2015-06-24 23:35:02 -07:00
Paul Eggert
93f4f67ba9 Fix GC bugs --with-wide-int and Qnil == 0
Use the same alignment for the !USE_LSB_TAG case as for the
more-typical USE_LSB_TAG case.  The attempt to support arbitrary
alignments with !USE_LSB_TAG had subtle bugs in garbage collection
once we changed the representation of symbols so that Qnil == 0.
Problem reported by Eli Zaretskii (Bug#20862).
* src/alloc.c (XMALLOC_HEADER_ALIGNMENT) [XMALLOC_OVERRUN_CHECK]:
* src/alloc.c (vector_alignment, union aligned_Lisp_Symbol)
(union aligned_Lisp_Misc, maybe_lisp_pointer, pure_alloc):
Use same alignment for !USE_LSB_TAG as for USE_LSB_TAG.
* src/alloc.c (POINTERS_MIGHT_HIDE_IN_OBJECTS): Remove.
This optimization in the !USE_LSB_TAG case is no longer valid when
symbols are represented via offsets.  Change the only use to
assume that pointers might hide in objects.
* src/lisp.h (alignas) [!USE_LSB_TAG]:
Require support in this case, too.
(TAG_SYMOFFSET, XSYMBOL) [!USE_LSB_TAG]: Do not shift the offset.
This is OK, because the !USE_LSB_TAG case now applies only when
Lisp_Object is wider than void *, so there's no longer any need
to shift the offset.  Not shifting the offset means that
symbol representations have the same alignment as pointers,
which the GC assumes.
2015-06-24 20:10:44 -07:00
Paul Eggert
9b891278cf * src/keyboard.h (kbd_buffer_store_event_hold): Remove unused local. 2015-06-23 18:08:08 -07:00
Paul Eggert
4fe5cb43d9 Port selection info fix to clang
* src/keyboard.h (kbd_buffer_store_event_hold):
Don't assume C11 semantics for alignof (Bug#20756).
2015-06-23 18:02:46 -07:00
Paul Eggert
1552e67373 Fix bug that munged selection info
On some optimizing C compilers, copying a structure did not
copy the padding bytes between elements, and the type punning
between struct input_data and struct selection_input_data did
not work.  Change the C code to use a proper union type instead.
Problem reported by YAMAMOTO Mitsuharu (Bug#20756).
* src/keyboard.c (kbd_buffer, kbd_fetch_ptr, kbd_store_ptr)
(readable_events, discard_mouse_events, kbd_buffer_events_waiting)
(kbd_buffer_get_event, process_special_events, stuff_buffered_input)
(mark_kboards):
Use union buffered_input_event, not struct input_event.
(clear_event, deliver_input_available_signal, process_special_events):
Remove unnecessary forward decls.
(kbd_buffer_store_buffered_event): New function, mostly just the
old kbd_buffer_store_event_hold, except its argument is of type
union buffered_input_event, not struct input_event.
(kbd_buffer_unget_event): Define only if HAVE_X11, since it's
not needed otherwise.  Argument is now of type
struct selection_input_event *, not struct input_event *.
All callers changed.
(clear_event): Arg is now of type union buffered_input_event *,
not struct input_event *.  All callers changed.
* src/keyboard.h [HAVE_X11]: Include "xterm.h".
(union buffered_input_event): New type.
(kbd_buffer_store_event_hold): Now an inline function,
defined here.
* src/termhooks.h (EVENT_KIND_WIDTH): New constant.
(struct input_event): Use it.
* src/xselect.c (struct selection_event_queue):
Make elements be of type struct selection_input_event,
not struct input_event.
(selection_input_event_equal): New static function.
(x_queue_event): Use it.
(x_queue_event, x_decline_selection_request)
(x_selection_current_request, x_reply_selection_request)
(x_handle_selection_request, x_handle_selection_clear)
(x_handle_selection_event): Use struct selection_input_event,
not struct input_event.  All callers changed.
(x_convert_selection): Omit unused first arg.  All callers changed.
(Fx_disown_selection_internal): Omit unnecessary union.
* src/xterm.c (handle_one_xevent): Use new union buffered_input_event
rather than rolling our own equivalent.  Prefer sie.kind when
setting up that kind of structure.
Call kbd_buffer_store_buffered_event, not kbd_buffer_store_event_hold.
* src/xterm.h (struct selection_input_event: Use EVENT_KIND_WIDTH.
(SELECTION_EVENT_DISPLAY, SELECTION_EVENT_DPYINFO)
(SELECTION_EVENT_REQUESTOR, SELECTION_EVENT_SELECTION)
(SELECTION_EVENT_TARGET, SELECTION_EVENT_PROPERTY)
(SELECTION_EVENT_TIME, x_handle_selection_event):
Arg is now of type struct selection_input_event *)
not struct input_event *.  All callers changed.
2015-06-23 16:30:58 -07:00
Glenn Morris
2ca5558395 Check for an input event before showing a dialog box. (Bug#20813)
* lisp/subr.el (y-or-n-p):
* src/fns.c (Fyes_or_no_p): Check last-input-event as well
as last-nonmenu-event.
2015-06-23 14:02:24 -04:00