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

39330 commits

Author SHA1 Message Date
Eli Zaretskii
2b3065f0af Avoid aborts/assertion violations due to 'vim-empty-lines-mode'
* src/xdisp.c (handle_single_display_spec): If position to be
restored after processing the display property comes from an
overlay, protect against that overlay's end point being outside of
the narrowed region.
Reported by Filipe Silva <filipe.silva@gmail.com> in
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00176.html.
2017-03-11 10:25:05 +02:00
Paul Eggert
ec168376d1 Tweak X toolkit code to pacify modern GCC
* lwlib/lwlib-Xaw.c, lwlib/lwlib-Xm.c, lwlib/lwlib.c:
Don’t include <stdlib.h>, since this code now calls emacs_abort
rather than abort.
* lwlib/lwlib-Xaw.c (make_dialog, xaw_generic_callback)
(wm_delete_window):
* lwlib/lwlib-Xm.c (make_menu_in_widget, do_call):
* lwlib/lwlib.c (instantiate_widget_instance, lw_make_widget):
* lwlib/xlwmenu.c (abort_gracefully, draw_separator)
(separator_height, XlwMenuInitialize):
Use emacs_abort, not abort.  Without this change, some calls
to ‘abort’ were invalid, as stdlib.h was not always included.
* src/widget.c (resources, emacsFrameClassRec):
* src/xfns.c (x_window) [USE_X_TOOLKIT]:
* src/xmenu.c (create_and_show_popup_menu) [USE_X_TOOLKIT]:
* src/xterm.c (emacs_options) [USE_X_TOOLKIT}:
(x_term_init) [USE_X_TOOLKIT]:
Cast string constants to char * to pacify --enable-gcc-warnings.
2017-03-10 09:31:59 -08:00
Paul Eggert
84d415e94c * src/data.c (arithcompare): Add comments. 2017-03-08 13:44:47 -08:00
Andreas Schwab
b82df00445 * data.c (minmax_driver): Use CHECK_NUMBER_OR_FLOAT_COERCE_MARKER.
(Fmax, Fmin): Restore documentation.
2017-03-08 09:37:11 +01:00
Andreas Schwab
45541e4611 * data.c (cons_to_unsigned, cons_to_signed, Fstring_to_number): Reorder
comparisons that are written backward.
2017-03-08 09:37:07 +01:00
Paul Eggert
1590127335 min and max should not return markers
Problem reported by Glenn Morris in:
http://lists.gnu.org/archive/html/emacs-devel/2017-03/msg00147.html
* src/data.c (minmax_driver): Convert any marker result to an
integer, since some callers assume this.
* test/src/data-tests.el (data-tests-max, data-tests-min):
Test for this.
2017-03-07 21:23:47 -08:00
Alan Third
a65236214d Add missing timeout value in ns_select
* src/nsterm.m (ns_select): Set timeout to distant future when relying
on fd_handler's timeout.
2017-03-08 00:50:16 +00:00
Paul Eggert
a136734f3f Remove isnan hack for Solaris 10 gcc 3.4.3
This seems to have been a false alarm (Bug#26018).
* src/data.c (isnan):
* src/floatfns.c (isfinite, isnan):
Use standard implementation if available.
2017-03-07 09:51:16 -08:00
Paul Eggert
14af3395e6 Define copysign on all platforms
* configure.ac (copysign): Remove test.
* src/floatfns.c (signbit): New macro, if not already defined.
(Fcopysign): Use it instead of copysign.
(Fcopysign, syms_of_floatfns): Define the function on all platforms.
2017-03-07 08:32:04 -08:00
Phillip Lord
542a763281 Revert "Replace ldefs-boot with a much smaller file"
This reverts commit c27b645956.

This commit has been reverted because the new mechanism was too
sensitive to changes in the lisp source, generation of new ldefs-boot
files was platform specific and resulted in warnings about undefined
variables.

See also 11436e2890d.
2017-03-07 13:49:48 +00:00
Phillip Lord
8f58747a87 Revert "Speed generation of ldefs-boot-auto"
This reverts commit 7b5e1c8238.

This commit has been reverted because the new mechanism was too
sensitive to changes in the lisp source, generation of new ldefs-boot
files was platform specific and resulted in warnings about undefined
variables.

See also 11436e2890d.
2017-03-07 13:48:20 +00:00
Paul Eggert
37940b3470 min and max now return one of their arguments
* doc/lispref/numbers.texi (Comparison of Numbers):
* etc/NEWS: Document this.
* src/data.c (Amax, Amin): Remove constants.  All uses removed.
(minmax_driver): New function.
(Fmax, Fmin): Use it instead of arith_driver.
* test/src/data-tests.el (data-tests-max, data-tests-min): New tests.
2017-03-06 17:26:55 -08:00
Alan Third
3bd2e9e975 Remove NSEvent loop from ns_select (bug#25265)
* src/nsterm.m (ns_select): Remove event processing loop and replace
with simple test for a new event.
2017-03-06 19:57:36 +00:00
Eli Zaretskii
eae5dcd57d A better fix for bug#25845
* src/xdisp.c (font_for_underline_metrics): New function.
* src/dispextern.h: Add its prototype.
* src/xterm.c (x_draw_glyph_string):
* src/w32term.c (x_draw_glyph_string):
* src/nsterm.m (ns_draw_text_decoration): Call it.  This avoids
having identical code 3 times in 3 different files.
2017-03-06 18:22:53 +02:00
Paul Eggert
53f3dd66f1 ffloor etc. now accept only floats
* etc/NEWS: Say why.
* src/floatfns.c (Ffceiling, Fffloor, Ffround, Fftruncate):
Require arg to be float.
* test/src/floatfns-tests.el (fround-fixnum): Check this.
2017-03-05 13:31:33 -08:00
Paul Eggert
788a5b8447 ; Spelling fixes 2017-03-05 08:19:06 -08:00
Eli Zaretskii
8e1ae12c37 Fix display of cursor on underlined text
* src/nsterm.m (ns_draw_text_decoration):
* src/xterm.c (x_draw_glyph_string):
* src/w32term.c (x_draw_glyph_string): Compute the position and
thickness of the underline by looking for the first glyph of the
run of underlined glyphs that includes the glyph string we are
drawing.  (Bug#25845)
2017-03-05 17:49:22 +02:00
Paul Eggert
0d55c44a9a Compare and round more carefully
* etc/NEWS: Document this.
* src/data.c (store_symval_forwarding):
* src/sound.c (parse_sound):
Do not botch NaN comparison.
* src/data.c (cons_to_unsigned, cons_to_signed):
Signal an error if a floating-point arg is not integral.
* src/data.c (cons_to_unsigned, cons_to_signed):
* src/fileio.c (file_offset):
Use simpler overflow check.
* src/dbusbind.c (xd_extract_signed, xd_extract_unsigned):
Avoid rounding error in overflow check.
(Fcar_less_than_car): Use arithcompare directly.
* test/src/charset-tests.el: New file.
2017-03-04 23:18:39 -08:00
Paul Eggert
44e7ee2e35 Fewer rounding errors with (format "%f" fixnum)
* etc/NEWS: Document this.
* src/editfns.c (styled_format): When formatting integers via a
floating-point format, use long double instead of double
conversion, if long double’s extra precision might help.
2017-03-04 23:18:39 -08:00
Paul Eggert
207de33030 * src/floatfns.c (Fftruncate): Simplify via emacs_trunc. 2017-03-04 23:18:38 -08:00
Paul Eggert
1af7410a23 * src/editfns.c (styled_format): Omit unnecessary code for "%0d" etc. 2017-03-04 23:18:38 -08:00
Paul Eggert
87849fe31f * src/editfns.c (styled_format): Omit unnecessary code. 2017-03-03 14:49:06 -08:00
Paul Eggert
74f87fd111 logb now works correctly on large integers
* admin/merge-gnulib (GNULIB_MODULES): Add count-leading-zeros.
* etc/NEWS: Document the change.
* lib/count-leading-zeros.c, lib/count-leading-zeros.h:
* m4/count-leading-zeros.m4: New files, copied from Gnulib.
* lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
* src/floatfns.c: Include count-leading-zeros.h.
(Flogb): Do not convert fixnum to float before taking the log,
as the rounding error can cause the answer to be off by 1.
* src/lisp.h (EMACS_UINT_WIDTH): New constant.
* test/src/floatfns-tests.el (logb-extreme-fixnum): New test.
2017-03-03 09:19:08 -08:00
Eli Zaretskii
aaf86f30f7 Avoid duplicating characters recorded in macros
* src/keyboard.c (record_char): Don't store in macro definitions
characters that came from executing a macro.  (Bug#25860)
2017-03-03 16:19:28 +02:00
Paul Eggert
56aaaf9bba Restore XFLOATINT but with restricted args
Turn instances of extract_float into XFLOAT_DATA when possible,
and to a resurrected XFLOATINT when the arg is a number.
The resurrected XFLOATINT is more like XFLOAT and XINT in
that is valid only if its arg is a number.  This clarifies
the ways in which floats can be extracted at the C level.
* src/editfns.c (styled_format):
* src/floatfns.c (extract_float, Fexpt):
Use XFLOATINT rather than open-coding it.
* src/fns.c (internal_equal):
* src/image.c (imagemagick_load_image):
* src/xdisp.c (resize_mini_window):
Prefer XFLOAT_DATA to extract_float on values known to be floats.
* src/frame.c (x_set_screen_gamma):
* src/frame.h (NUMVAL):
* src/image.c (x_edge_detection, compute_image_size):
* src/lread.c (read_filtered_event):
* src/window.c (Fset_window_vscroll):
* src/xdisp.c (handle_single_display_spec, try_scrolling)
(redisplay_window, calc_pixel_width_or_height, x_produce_glyphs)
(on_hot_spot_p):
Prefer XFLOATINT to extract_float on values known to be numbers.
* src/lisp.h (XFLOATINT): Bring back this function, except
it now assumes its argument is a number.
2017-03-02 13:50:03 -08:00
Paul Eggert
d0d26c1379 Remove XFLOATINT
* src/lisp.h (XFLOATINT): Remove this alias for extract_float.
All callers changed to use extract_float.
* src/frame.h (NUMVAL): Now an inline function, not a macro.
2017-03-02 09:22:17 -08:00
Paul Eggert
4e2622bf0d Fix rounding errors in <, =, etc.
* etc/NEWS: Document this.
* src/bytecode.c (exec_byte_code):
* src/data.c (arithcompare):
Do not lose information when comparing floats to integers.
* test/src/data-tests.el (data-tests-=, data-tests-<)
(data-tests->, data-tests-<=, data-tests->=):
Test this.
2017-03-02 09:12:49 -08:00
Eli Zaretskii
d546be31a9 Fix display of mouse-highlight produced by overlapping overlays
* src/xfaces.c (face_at_buffer_position): If called to find the
mouse-face, only consider the highest-priority source for that
face, and ignore the rest.  Previously, all the mouse-face
definitions at POS were merged in that case.
* src/xdisp.c (note_mouse_highlight): Record the overlay that
specifies mouse-face _after_ clearing the info about the previous
overlay, so as not to clear the information about the just-recorded
overlay.  (Bug#25906)
2017-03-02 17:46:25 +02:00
Eli Zaretskii
511a3c3ba2 Fix display of strike-through text in variable-height lines
* src/nsterm.m (ns_draw_text_decoration):
* src/xterm.c (x_draw_glyph_string):
* src/w32term.c (x_draw_glyph_string): Fix calculation of the
strike-through y-coordinate for a glyph row which is taller than
the strike-through text.  (Bug#25907)
2017-03-02 17:37:18 +02:00
Martin Rudalics
ae88356196 Don't call x_net_wm_state for scroll bar windows (Bug#24963, Bug#25887)
* src/xterm.c (handle_one_xevent): For ConfigureNotify events
don't call x_net_wm_state when the window is a scroll bar window.
(Bug#24963, Bug#25887)
2017-03-02 11:31:20 +01:00
Paul Eggert
207ee94b1d Fix rounding error in ‘ceiling’ etc.
Without this fix, (ceiling most-negative-fixnum -1.0) returns
most-negative-fixnum instead of correctly signaling range-error,
and similarly for floor, round, and truncate.
* configure.ac (trunc): Add a check, since Gnulib’s doc says
‘trunc’ is missing from MSVC 9.  The Gnulib doc says ‘trunc’ is
also missing from some other older operating systems like Solaris
9 which I know we don’t care about any more, so MSVC is the only
reason to worry about ‘trunc’ here.
* src/editfns.c (styled_format): Formatting a float with %c is now an
error.  The old code did not work in general, because FIXNUM_OVERFLOW_P
had rounding errors.  Besides, the "if (FLOATP (...))" was in there
only as a result of my misunderstanding old code that I introduced
2011.  Although %d etc. is sometimes used on floats that represent
huge UIDs or PIDs etc. that do not fit in fixnums, this cannot
happen with characters.
* src/floatfns.c (rounding_driver): Rework to do the right thing
when the intermediate result equals 2.305843009213694e+18, i.e.,
is exactly 1 greater than MOST_POSITIVE_FIXNUM on a 64-bit host.
Simplify so that only one section of code checks for overflow,
rather than two.
(double_identity): Remove.  All uses changed to ...
(emacs_trunc): ... this new function.  Add replacement for
platforms that lack ‘trunc’.
* src/lisp.h (FIXNUM_OVERFLOW_P, make_fixnum_or_float):
Make it clear that the arg cannot be floating point.
* test/src/editfns-tests.el (format-c-float): New test.
* test/src/floatfns-tests.el: New file, to test for this bug.
2017-03-01 12:47:28 -08:00
Leo Liu
03f64ebbc6 * src/fns.c (Fbuffer_hash): Doc fix. 2017-03-01 16:15:21 +08:00
Phillip Lord
7b5e1c8238 Speed generation of ldefs-boot-auto
Previously, generation of ldefs-boot-auto required at least one full
bootstrap and, in extreme cases, two. Now, from build system, it
requires the same time as taken to dump Emacs.

* Makefile.in: Remove all calls, pass to src.
* admin/ldefs-clean.el: Update for changed messages.
* lisp/Makefile.in (compile-first-delete): Add.
* lisp/ldefs-boot-auto.el: Update.
* src/Makefile.in (generate-ldefs-boot): Add.
2017-02-28 21:32:49 +00:00
Stefan Monnier
c2469c50e8 * src/xdisp.c (overlay_arrows_changed_p): Fix return value and doc
(update_overlay_arrows): Skip non-markers.
2017-02-28 14:00:17 -05:00
Ken Brown
f8e36e04c4 ; * src/w32fns.c (w32_wnd_proc): Adjust comment. 2017-02-28 11:59:12 -05:00
Ken Brown
57f5ab8c40 Try to avoid hang when logging out of MS-Windows
* src/w32term.c (x_update_window_begin, x_update_window_end)
(my_show_window, my_set_window_pos, my_set_focus)
(my_set_foreground_window, my_destroy_window)
(my_bring_window_to_top, x_iconify_frame): Replace calls to
SendMessage by calls to SendMessageTimeout with a 6-second
timeout.  (Bug#25875)
2017-02-28 11:25:00 -05:00
Stefan Monnier
fd8f724147 * src/xdisp.c (overlay_arrows_changed_p): Fix last change. 2017-02-27 00:06:08 -05:00
Paul Eggert
d83c75ec19 Remove a few unused C functions
* src/eval.c (let_shadows_global_binding_p):
* src/print.c (write_string):
* src/systhread.c (sys_mutex_destroy, sys_thread_equal):
Remove.
* src/print.c (write_string): Rename from write_string_1.
All uses changed.
2017-02-26 09:58:25 -08:00
Eli Zaretskii
d8899b9d1b Avoid segfault in overlay_arrows_changed_p
* src/xdisp.c (overlay_arrows_changed_p): Fix recent change
to avoid a segfault.
2017-02-26 19:52:22 +02:00
Eli Zaretskii
2bb467a2e2 Fix display of before- and after-strings at invisible text
* src/xdisp.c (next_overlay_string): Don't raise the
ignore_overlay_strings_at_pos_p flag if the iterator is already
set to continue at a buffer position different from the one
where the overlay strings we just processed were loaded.  (Bug#25856)
2017-02-26 17:56:13 +02:00
Eli Zaretskii
a3c9a554f1 Avoid leaving garbage on screen when using 'raise' display property
* src/xdisp.c (display_line): Reset voffset value of the iterator
when it hits ZV, to avoid "inheriting" it to glyph rows past ZV,
which then leaves stuff on screen that needs to be cleared by
redisplay.  (Bug#25855)
2017-02-25 13:40:23 +02:00
Noam Postavsky
f0e7f39e0b Fix scrolling with partial line corner case (Bug#25792)
Also fix up the scrolling tests so that they don't make so many
assumptions about the current window configuration.

* src/xdisp.c (try_window): Take partial line height into account when
comparing cursor position against scroll margin.

* test/manual/scroll-tests.el (scroll-tests-with-buffer-window): Add
HEIGHT argument, to allow setting up window with exact height and
partial line.
(scroll-tests-display-buffer-with-height): New display-buffer action
function.
(scroll-tests-scroll-margin-over-max):
(scroll-tests--scroll-margin-whole-window): Pass HEIGHT to
`scroll-tests--scroll-margin-whole-window'.
(scroll-tests-conservative-show-trailing-whitespace): New test.
(scroll-tests-scroll-margin-negative): Fix line counting.
(scroll-tests--point-in-middle-of-window-p): Set window height
properly.
2017-02-24 23:15:40 -05:00
Stefan Monnier
dee8674414 Minor redisplay optimisations
* src/frame.c (Ficonify_frame): No need to redisplay everything.

* src/xdisp.c (overlay_arrows_changed_p): Add `set_redisplay' argument.
(redisplay_internal): Use it to avoid redisplaying everything.
(try_window_id): Use it keep the same behavior as before.
2017-02-23 21:17:04 -05:00
Stefan Monnier
407e650413 * lisp/emacs-lisp/cl-print.el: New file
* lisp/emacs-lisp/nadvice.el (advice--where): New function.
(advice--make-docstring): Use it.

* src/print.c (print_number_index): Don't declare here any more.
(Fprint_preprocess): New function.

* test/lisp/emacs-lisp/cl-print-tests.el: New file.
2017-02-23 21:06:54 -05:00
Gemini Lasswell
8b912ab47b Support read syntax for circular objects in Edebug (Bug#23660)
* lisp/emacs-lisp/edebug.el (edebug-read-special): New name
for edebug-read-function. Handle the read syntax for circular
objects.
(edebug-read-objects): New variable.
(edebug-read-and-maybe-wrap-form1): Reset edebug-read-objects.

* src/lread.c (Fsubstitute_object_in_subtree): Make
substitute_object_in_subtree into a Lisp primitive.
2017-02-23 20:21:11 -05:00
Paul Eggert
7204577bf9 Merge from gnulib
This incorporates:
2017-02-16 xbinary-io: rename from xsetmode
2017-02-15 xsetmode: new module
* lib-src/etags.c (main):
* lib-src/hexl.c (main):
* src/emacs.c (main) [MSDOS]:
Prefer set_binary_mode to the obsolescent SET_BINARY.
* lib/binary-io.c, lib/binary-io.h: Copy from gnulib.
2017-02-23 09:15:06 -08:00
Eli Zaretskii
5114b3a204 Avoid quitting inside a critical section on MS-Windows
* src/w32uniscribe.c (uniscribe_list_family):
* src/w32font.c (w32font_list_family, w32font_text_extents)
(w32font_list_internal, w32font_match_internal)
(list_all_matching_fonts): Prevent quitting while these functions
cons lists of fonts, to avoid leaving the critical section taken
by the main thread, which will then cause any other thread
attempting to enter the critical section to hang.  (Bug#25279)
2017-02-23 18:15:05 +02:00
Paul Eggert
17af43ca76 Minor weak hash table performance tweaks
* src/fns.c (make_hash_table): Omit unnecessary assignment to
h->next_weak when the hash table is not weak.
(copy_hash_table): Put the copy next to the original in the
weak_hash_tables list, as this should have better locality
when scanning the weak hash tables.
2017-02-21 15:39:17 -08:00
Paul Eggert
83c9c6fc1c Use float instead of Lisp_Object for rehash_size
* src/alloc.c (purecopy_hash_table):
* src/fns.c (maybe_resize_hash_table, Fmake_hash_table):
(Fhash_table_rehash_size):
* src/lisp.h (struct Lisp_Hash_Table.rehash_size):
The rehash_size member of struct Lisp_Hash_Table is now a
float, not a Lisp_Object.
* src/alloc.c (purecopy_hash_table): Assign members in order.
* src/fns.c (make_hash_table): Use EMACS_INT for size and
float for rehash_size, instead of Lisp_Object for both.
All callers changed.
* src/lisp.h (DEFAULT_REHASH_SIZE): Now float, not double,
and 1 smaller.
* src/print.c (print_object): Simplify by calling
Fhash_table_rehash_size and Fhash_table_rehash_threshold.
Avoid unnecessary NILP.
2017-02-21 15:39:17 -08:00
Paul Eggert
5cbdaa98f9 Use ptrdiff_t instead of Lisp_Object for collision
* src/alloc.c (purecopy_hash_table): Assign, don’t purecopy.
* src/fns.c (set_hash_next_slot, set_hash_index_slot): Hash index
arg is now ptrdiff_t index (or -1 if empty), not Lisp_Object
integer (or Qnil if empty).  All callers changed.
(larger_vecalloc): New static function.
(larger_vector): Use it.
(HASH_NEXT, HASH_INDEX): Move here from lisp.h.  Return ptrdiff_t
index (or -1) not Lisp_Object integer (or Qnil).  All callers changed.
* src/fns.c (make_hash_table, maybe_resize_hash_table, hash_lookup)
(hash_put, hash_remove_from_table, hash_clear, sweep_weak_table):
* src/profiler.c (evict_lower_half, record_backtrace):
-1, not nil, is now the convention for end of collision list.
* src/fns.c (maybe_resize_hash_table): Avoid double-initialization
of the free list.  Reallocate H->next last, in case other
reallocations exhaust memory.
* src/lisp.h (struct Lisp_Hash_Table): ‘next_free’ is now
ptrdiff_t, not Lisp_Object.  Adjust commentary for ‘next’ and
‘index’, which no longer contain nil.
(HASH_NEXT, HASH_INDEX): Move to src/fns.c.
2017-02-21 15:39:17 -08:00