Commit graph

41489 commits

Author SHA1 Message Date
Lars Ingebrigtsen
aecc82d7eb Clarify the expand-file-name doc string
* src/fileio.c (Fexpand_file_name): Clarify that "~" in NAME is
expanded, and not just "~/".  Also clarify that ~USER is not
expanded if USER doesn't exist (bug#36490).
2019-07-11 17:10:52 +02:00
Lars Ingebrigtsen
1c3b320614 Tweak the order keystrokes are sorted in keymap listings
* src/keymap.c (describe_map_compare): Change the sorting order of
keystrokes, so that we get the order <f1> <f2> <f11> instead of
<f1> <f11> <f2> (bug#33237).
2019-07-11 16:53:43 +02:00
Eli Zaretskii
60fc771ac6 Resurrect SVG support on MS-Windows
* src/image.c (syms_of_image) <Qgio> [HAVE_NTGUI]: New DEFSYM.
(init_svg_functions) [LIBRSVG_CHECK_VERSION >= 2.32.0]: Load
g_file_new_for_path and g_memory_input_stream_new_from_data
from libgio, not from libglib.  (Bug#35548)

* lisp/term/w32-win.el (dynamic-library-alist): Add the libgio
DLL.
2019-07-11 16:28:41 +03:00
Eli Zaretskii
2581513abe Avoid assertion violations when resize-mini-windows is nil
* src/xdisp.c (resize_mini_window): Always reset the
mini-window's start point to the beginning of the buffer, even
if resizing is not needed.  This avoids assertion violations
when resize-mini-windows is nil.  (Bug#36595)
2019-07-11 16:03:33 +03:00
Paul Eggert
40cd6278ba Avoid functions deprecated in librsvg 2.45.1
* src/image.c (init_svg_functions) [WINDOWSNT]:
Load the pre-2.32 or 2.32 functions,
depending on LIBRSVG_CHECK_VERSION.
(svg_load_image): In librsvg 2.32 or later, use
g_memory_input_stream_new_from_data, g_file_new_for_path and
rsvg_handle_new_from_stream_sync rather than the
deprecated-in-2.45 rsvg_handle_write and rsvg_handle_close.
From a patch by YAMAMOTO Mitsuharu (Bug#35548#11).
2019-07-10 12:41:13 -07:00
Stefan Monnier
fec111c9ee * src/fileio.c: Fix bug#36431
(decide_coding_unwind): Re-introduce.  Move text back to the gap.
Return the new `inserted` via the unwind_data.
(Finsert_file_contents): Use it.
Make sure `inserted` is always 0 when we jump straight to `notfound`.
Don't insert the text in the buffer until we know it's properly decoded
for the byteness of the buffer.

* test/src/fileio-tests.el (fileio-tests--insert-file-interrupt):
Allow insert-file-contents to return an empty buffer in case of
non-local exit in set-auto-coding-function.
2019-07-09 17:04:24 -04:00
Paul Eggert
4c619758b2 Defend fingerprint against even-smarter LTO
* src/pdumper.c (Fdump_emacs_portable, pdumper_load):
Don’t cast volatile to non-volatile pointer, as that does not in
general suffice to prevent a compiler from optimizing away memcmp
and/or memcpy calls.  Instead, copy the fingerprint by hand.
2019-07-09 13:56:45 -07:00
Pip Cet
de229df09c Don't alter shared structure in dumped purecopied hash tables.
* src/fns.c (hash_table_rehash): Make sure we're operating on
fresh copies of ->next, ->index, ->hash.
2019-07-09 16:15:29 -04:00
Paul Eggert
412139f1be Do not alter match data in Fcapitalize etc.
Without this patch, (capitalize "x") can alter the match data,
which is not what users expect.  Problem found by running
morse-tests-unnato-region in a stripped-down Emacs.
Perhaps ‘load’ should also save and restore the match data?
That would be a simpler fix, though arguably incompatible.
* src/lread.c (save_match_data_load): New function.
* src/chartab.c (uniprop_table):
* src/doc.c (reread_doc_file):
* src/eval.c (Fautoload_do_load):
* src/fns.c (Frequire): Use it.
2019-07-09 13:11:45 -07:00
Andreas Schwab
fc41b0610e Make fingerprint handling compatible with LTO
Tell the compiler that the fingerprint variable is modified unpredictably.

* lib/fingerprint.h (fingerprint): Remove const.
* lib/fingerprint.c (fingerprint): Likewise.
* src/pdumper.c (Fdump_emacs_portable): Cast fingerprint variable.
(pdumper_load): Likewise.
* lib-src/make-fingerprint.c (main): Likewise.
2019-07-09 21:41:24 +02:00
Mattias Engdegård
a9d6ba49d5 Rename font_driver member close -> close_font
* src/alloc.c (cleanup_vector):
* src/xftfont.c (xftfont_driver):
* src/xfont.c (xfont_driver):
* src/nsfont.m (nsfont_driver):
* src/macfont.m (macfont_driver):
* src/ftxfont.c (ftxfont_driver):
* src/ftfont.c (ftfont_driver):
* src/ftcrfont.c (ftcrfont_driver):
* src/font.h (struct font_driver):
* src/font.c (font_clear_cache, font_close_object):
Rename `close' member to `close_font', to avoid clash with preprocessor
define of `close' in nt/inc/ms-w32.h and for consistency with `open_font'.
2019-07-09 18:40:57 +02:00
Lars Ingebrigtsen
1ffa65cea5 Mention call-process-region' in the call-process' doc string
* src/callproc.c (Fcall_process): Mention `call-process-region'
(bug#35187).
2019-07-09 18:00:52 +02:00
Mattias Engdegård
ec72340647 Rename font_driver member open -> open_font
* src/xftfont.c (xftfont_driver):
* src/xfont.c (xfont_driver):
* src/nsfont.m (nsfont_driver):
* src/macfont.m (macfont_driver):
* src/ftxfont.c (ftxfont_driver):
* src/ftfont.c (ftfont_driver):
* src/ftcrfont.c (ftcrfont_driver):
* src/font.h (struct font_driver):
* src/font.c (font_open_entity):
Rename `open' member to `open_font', to avoid clash with preprocessor
define of `open' in lib/fcntl.h and nt/inc/ms-w32.h.  Remove earlier
#undef hack.
2019-07-09 17:34:44 +02:00
Eli Zaretskii
93bd422ece Unbreak the MS-Windows build
* src/font.c (open): Don't undef on WINDOWSNT, as ms-w32.h
redirects it to sys_open.
2019-07-09 18:04:29 +03:00
Mattias Engdegård
fdea0e602b Repair macOS build
Avoid macro redefinition of `open' in lib/fcntl.h to break use of it as
a struct member in src/font.c.

* src/font.c: #undef open
2019-07-09 13:38:10 +02:00
Paul Eggert
cebea291d9 Avoid some unnecessary stdio.h includes
* src/atimer.c, src/callproc.c, src/coding.c, src/dired.c, src/eval.c:
* src/fringe.c, src/ftcrfont.c, src/ftfont.c, src/ftxfont.c:
* src/gfilenotify.c, src/indent.c, src/kqueue.c, src/menu.c:
* src/scroll.c, src/terminal.c, src/unexcoff.c, src/window.c:
* src/xfont.c, src/xftfont.c:
Do not include stdio.h since it is unused.
2019-07-08 17:50:39 -07:00
Paul Eggert
f8ab90839f Use fewer locks when accessing stdio
* src/alloc.c, src/bidi.c, src/emacs-module.c, src/pdumper.c:
* src/regex-emacs.c, src/unexhp9k800.c, src/unexmacosx.c:
* src/widget.c, src/xdisp.c, src/xselect.c, src/xterm.c:
Include sysstdio.h instead of stdio.h, to avoid locking
stdio streams in many cases.
* src/alloc.c (test_setjmp):
* src/bidi.c (bidi_dump_cached_states):
* src/cm.c (calccost):
* src/dispnew.c (init_display_interactive):
* src/emacs.c (main):
* src/image.c (convert_mono_to_color_image):
* src/minibuf.c (read_minibuf_noninteractive):
* src/nsfont.m (ns_descriptor_to_entity)
(ns_dump_glyphstring):
* src/nsterm.h (NSTRACE_MSG_NO_DASHES):
* src/nsterm.m (ns_mouse_position)
(sendEvent:, keyDown:, performDragOperation:):
* src/pdumper.c (dump_fingerprint, print_paths_to_root_1):
* src/print.c (debug_print):
* src/regex-emacs.c (debug_putchar, print_fastmap)
(print_partial_compiled_pattern, print_compiled_pattern)
(print_double_string, regex_compile):
* src/term.c (vfatal):
* src/unexhp9k800.c (read_header):
* src/unexmacosx.c (unexec_error):
* src/widget.c (EmacsFrameInitialize):
* src/xdisp.c (message_to_stderr, vmessage, dump_glyph_row)
(Fdump_glyph_matrix, Fdump_frame_glyph_matrix, dump_glyph_string):
* src/xfaces.c (Fdump_colors, Fdump_face):
* src/xselect.c (x_clipboard_manager_error_2):
* src/xterm.c (x_initialize):
* src/xwidget.c (WEBKIT_FN_INIT):
Prefer unlocked calls like fputs to locked calls like fprintf.
* src/charset.c (read_hex):
* src/cm.c (cmputc, cmcheckmagic):
* src/dispnew.c (update_frame, update_frame_with_menu)
(update_frame_1, Fsend_string_to_terminal, Fding)
(bitch_at_user):
* src/emacs.c (main, Fdump_emacs):
* src/emacs-module.c (module_abort):
* src/fileio.c (Fdo_auto_save):
* src/image.c (slurp_file)
(png_read_from_file, png_load_body, our_stdio_fill_input_buffer):
* src/keyboard.c (record_char, kbd_buffer_get_event)
(handle_interrupt):
* src/lread.c (readbyte_from_stdio, read1):
* src/minibuf.c (read_minibuf_noninteractive):
* src/print.c (printchar_to_stream, strout)
(Fredirect_debugging_output):
* src/sysdep.c (reset_sys_modes, close_output_streams)
(procfs_ttyname, procfs_get_total_memory):
* src/term.c (tty_ring_bell, tty_send_additional_strings)
(tty_set_terminal_modes, tty_reset_terminal_modes)
(tty_update_end, tty_clear_end_of_line, tty_write_glyphs)
(tty_write_glyphs_with_face, tty_insert_glyphs)
(tty_menu_activate):
* src/xfaces.c (Fx_load_color_file):
Simplify by using ordinary calls like putc to explicitly-unlocked
calls like putc_unlocked, since the ordinary calls are now
unlocked anyway.
* src/emacs.c (main, Fdump_emacs):
* src/pdumper.c (Fdump_emacs_portable):
Coalesce adjacent printfs.
* src/nsterm.h: Include sysstdio.h as this file’s macros rely on it.
* src/regex-emacs.c (print_compiled_pattern):
Omit redundant fflush.
* src/sysstdio.h: Include unlocked-io.h.
(clearerr_unlocked, feof_unlocked, ferror_unlocked)
(fflush_unlocked, fgets_unlocked, fputc_unlocked)
(fputs_unlocked, fread_unlocked, fwrite_unlocked)
(getc_unlocked, getchar_unlocked, putc_unlocked)
(putchar_unlocked): Remove these macros; now done by unlocked-io.h.
* src/xwidget.c: Include sysstdio.h.
2019-07-08 17:50:39 -07:00
Ken Brown
0528a7c872 Ensure that expand-file-name returns an absolute file name
* src/fileio.c (Fexpand_file_name): Don't directly use the current
buffer's default-directory if it is relative.  Instead replace it
by its expansion relative to invocation-directory.  (Bug#36502)
* test/src/fileio-tests.el
(fileio-tests--relative-default-directory): New test.
2019-07-08 18:37:33 -04:00
Paul Eggert
ee883189d4 * src/xselect.c: Fix comment. 2019-07-07 23:22:28 -07:00
Paul Eggert
b5e0dfacad * src/dispnew.c (init_display_interactive): Fix comment to match code. 2019-07-07 20:00:19 -07:00
Paul Eggert
1b6e9423b4 Fix typo in previous patch
* src/editfns.c (styled_format): Fix stray ‘pMd’.
2019-07-07 12:38:34 -07:00
Paul Eggert
8f522efe9a Remove printmax_t etc.
printmax_t etc. were needed only for platforms that lacked
support for printing intmax_t.  These platforms are now so
obsolete that they are no longer practical porting targets.
* src/image.c (gs_load): Fix unlikely buffer overrun
discovered while making these changes.  It was introduced in
2011-07-17T00:34:43!eggert@cs.ucla.edu.
* src/lisp.h (printmax_t, uprintmax_t, pMd, pMu, pMx):
Remove.  All uses replaced by their standard counterparts
intmax_t, uintmax_t, PRIdMAX, PRIuMAX, PRIxMAX.
2019-07-07 12:33:35 -07:00
Paul Eggert
b39f5e6c9c Don’t ignore stderr failure when ADDRESS_SANITIZER
* src/emacs.c (close_output_streams): Move from here ...
* src/sysdep.c: ... to here, where it really belongs anyway.
When ADDRESS_SANITIZER, fflush stderr and check for ferror,
to catch stderr output errors even in this case.
2019-07-06 17:43:11 -07:00
Glenn Morris
d8732a8245 Merge from origin/emacs-26
1e6d8e0 (origin/emacs-26) ; * doc/emacs/killing.texi (Secondary Selec...
e2344a7 * lisp/svg.el, lisp/progmodes/ada-mode.el: Fix bug#36360.
ff738ab Minor copyedit of "Font Lock" in user manual
faf99dc Improve description of image descriptors
21351cc ; * src/lread.c (Fread): Make the comment wording more accurate.
d176090 Improve documentation of secondary selections
8910fe1 * src/fns.c (Fmapconcat): Doc fix.  (Bug#36418)

# Conflicts:
#	lisp/svg.el
2019-07-06 12:52:12 -07:00
Glenn Morris
16a8a7695f Merge from origin/emacs-26
316f5a3 Fix typo in doc string of file-exists-p (bug#36408)
bfc7c6e * test/lisp/url/url-file-tests.el (url-file): Fix for POSIX f...
13b95e1 Fix typo in windows.texi
8b775c3 Clarify & update (elisp) Writing Emacs Primitives
7648c12 Clarify a subtle issue in the Internals chapter of lispref
2019-07-06 12:51:30 -07:00
Pip Cet
c16a8fc180 Update current buffer when changing text properties
* src/textprop.c (add_text_properties_1, set_text_properties)
(set_text_properties_1, Fremove_text_properties): Switch buffer if
necessary.  (Bug#36190)

* doc/lispref/text.texi (Examining Properties): Document performance
FIXME.
2019-07-06 19:20:53 +03:00
Eli Zaretskii
21351ccc00 ; * src/lread.c (Fread): Make the comment wording more accurate. 2019-07-06 11:40:49 +03:00
Eli Zaretskii
8910fe1db0 * src/fns.c (Fmapconcat): Doc fix. (Bug#36418) 2019-07-06 10:31:06 +03:00
YAMAMOTO Mitsuharu
814b509b1d Add HarfBuzz fallbacks for libotf functions used in ftfont_list
* src/ftfont.c [!HAVE_LIBOTF && HAVE_HARFBUZZ]: Include hb-ot.h.
(OTF, OTF_tag) [!HAVE_LIBOTF && HAVE_HARFBUZZ]: New typedefs.
(hbotf_open, hbotf_check_features) [!HAVE_LIBOTF && HAVE_HARFBUZZ]: New
functions.
(OTF_open, OTF_close, OTF_check_features) [!HAVE_LIBOTF && HAVE_HARFBUZZ]:
New macros.
(ftfont_list) [!HAVE_LIBOTF && HAVE_HARFBUZZ]: Use them.
2019-07-06 14:35:58 +09:00
YAMAMOTO Mitsuharu
f0db687a28 Avoid crash inside CFCharacterSetIsLongCharacterMember (Bug#36507)
* src/macfont.m (macfont_supports_charset_and_languages_p)
(macfont_has_char): Don't pass integers outside the Unicode codespace to
CFCharacterSetIsLongCharacterMember.  Do not merge to master.
2019-07-06 14:24:34 +09:00
YAMAMOTO Mitsuharu
0e15bd11dc Avoid crash inside CFCharacterSetIsLongCharacterMember
* src/macfont.m (macfont_supports_charset_and_languages_p)
(macfont_has_char): Don't pass integers outside the Unicode codespace to
CFCharacterSetIsLongCharacterMember.
2019-07-06 14:08:47 +09:00
Stefan Monnier
2bc90e0ce0 * src/coding.c (decode_coding): Improve doc. 2019-07-04 10:13:57 -04:00
Eli Zaretskii
ecd7d40a3b Fix rotation validity test in image.c
* src/image.c (compute_image_rotation): Fix the validity test
for :rotation values.  This avoids logging error messages when
no :rotation was provided in the image spec.
2019-07-03 10:31:48 +03:00
Eli Zaretskii
b5de191e87 Fix compiler warnings due to a recent commit
* src/xdisp.c (expose_window, expose_frame): Avoid compilation
warnings about printing unsigned values with %d.
2019-07-03 10:20:20 +03:00
Paul Eggert
52d0d4feac Replace TRACE with redisplay_trace, etc.
This simplifies callers and catches trace printf format errors
even with typical (non-debugging) compiles.
* src/dispextern.h (TRACE) [GLYPH_DEBUG]:
Move definitions to xdisp.c if it’s used only there.
* src/xdisp.c (redisplay_trace): New function, replacing TRACE macro.
(move_trace): New function, replacing TRACE_MOVE macro.
All uses changed.
(dump_glyph): When tracing, don’t use %d to format ptrdiff_t,
or %x to format a pointer.
(expose_frame): Redo trace printfs to avoid interleaved output
on GNU/Linux.
2019-07-02 23:02:28 -07:00
Stefan Monnier
9836030dda * src/json.c (Fjson_insert): Don't temporarily insert invalid bytes in buffer 2019-07-02 18:54:36 -04:00
Stefan Monnier
fe3676fe18 (Finsert_file_contents): Keep buffer consistent in non-local exit
* src/fileio.c (decide_coding_unwind): Delete function.
(Finsert_file_contents): Don't let invalid multibyte byte sequences
escape when we exit non-locally.

* test/src/fileio-tests.el (fileio-tests--insert-file-interrupt): New test.
2019-07-02 18:02:51 -04:00
Paul Eggert
c136f93dfa Fix printf formats when DEBUG_TRACE_MOVE
Problem caught by gcc -DDEBUG_TRACE_MOVE -Wformat.
* src/xdisp.c (move_it_in_display_line_to, move_it_to)
(move_it_vertically) [DEBUG_TRACE_MOVE]: Fix printf format typos.
2019-07-02 14:51:05 -07:00
Stefan Monnier
dc3093904d * src/insdel.c (insert_from_gap_1): New fun, extracted from insert_from_gap.
(insert_from_gap): Use it.
* src/lisp.h (insert_from_gap_1): Declare it.
* src/json.c (Fjson_insert):
* src/fileio.c (Finsert_file_contents): Use it.
2019-07-02 16:04:16 -04:00
Stefan Monnier
1c88af362f * src/coding.c (decode_coding_gap): Remove chars argument.
* src/json.c (Fjson_insert):
* src/fileio.c (Finsert_file_contents):
* src/coding.h (decode_coding_gap): Adjust accordingly.
2019-07-02 15:48:25 -04:00
Paul Eggert
5d99f1d01e Fix performDragOperation: diagnostic typo
* src/nsterm.m (performDragOperation:): Fix missing newline.
2019-07-02 00:01:26 -07:00
Paul Eggert
b35f378d6e Fix regex-emacs debug format glitches
These patches affect behavior only if REGEX_EMACS_DEBUG.
* src/regex-emacs.c (debug_putchar): Use unsigned for %x.
(print_compiled_pattern, ENSURE_FAIL_STACK, PUSH_FAILURE_POINT)
(POP_FAILURE_POINT): Use %td for ptrdiff_t.
(print_compiled_pattern, regex_compile, re_match_2_internal):
Put newlines at ends of lines, not at starts of next lines.
Omit white space at line ends.
2019-07-01 21:44:02 -07:00
Eli Zaretskii
0f830340af More XFIXNUM fixes
* src/hbfont.c (hbfont_shape): Don't assume LGLYPH_TO is
always a fixnum.
* src/fontset.c (fontset_find_font): A cleaner test for
matching charset_id.
2019-07-01 21:12:55 +03:00
Eli Zaretskii
50c98fdc0f Fix assertion violations in fontset_find_font
* src/fontset.c (fontset_find_font): Don't assume REPERTORY
must be a fixnum.
2019-07-01 19:25:52 +03:00
Eli Zaretskii
6b7136a80d Adjust return value of image-transforms-p
* src/image.c (Fimage_transforms_p):
* doc/lispref/display.texi (Image Descriptors):
image-transforms-p now returns at most (scale rotate90), even
if ImageMagick is available.
2019-07-01 17:54:15 +03:00
YAMAMOTO Mitsuharu
6cabb698f9 Implement the otf_capability method for HarfBuzz
* src/hbfont.c: Include hb-ot.h.
[HAVE_NTGUI]: Add DEF_DLL_FN and #define for hb_tag_to_string,
hb_font_get_face, hb_ot_layout_table_get_script_tags,
hb_ot_layout_table_get_feature_tags, hb_ot_layout_script_get_language_tags,
and hb_ot_layout_language_get_feature_tags.
(hbfont_init_w32_funcs) [HAVE_NTGUI]: Add LOAD_DLL_FN for them.
(hbfont_otf_features, hbfont_otf_capability): New functions.

* src/font.h (hbfont_otf_capability) [HAVE_HARFBUZZ]: Add extern.

* src/ftcrfont.c (syms_of_ftcrfont_for_pdumper) [HAVE_HARFBUZZ]:
* src/ftfont.c (syms_of_ftfont_for_pdumper) [HAVE_HARFBUZZ]:
* src/w32uniscribe.c (syms_of_w32uniscribe_for_pdumper) [HAVE_HARFBUZZ]:
* src/xftfont.c (syms_of_xftfont_for_pdumper) [HAVE_HARFBUZZ]: Populate
otf_capability method with hbfont_otf_capability.
2019-07-01 16:58:53 +09:00
Paul Eggert
fd9ea1e511 Remove divide_double
* src/image.c (divide_double): Remove.  All uses replaced
with inline equivalents.  Suggested by Eli Zaretskii in:
https://lists.gnu.org/r/emacs-devel/2019-06/msg01067.html
2019-06-30 08:11:01 -07:00
Andreas Schwab
5f3a63d541 Fix use of undefined macro
* src/xdisp.c (append_space_for_newline): Use FRAME_FONT only
inside HAVE_WINDOW_SYSTEM.
(extend_face_to_end_of_line): Likewise.
(syms_of_xdisp): Doc fix.
2019-06-30 10:38:03 +02:00
YAMAMOTO Mitsuharu
36a8024e2b Fix negation in elements of OTF feature list
* src/ftfont.c (ftfont_get_open_type_spec):
* src/macfont.m (macfont_get_open_type_spec): Take bitwise or instead of and.
2019-06-30 16:09:56 +09:00
YAMAMOTO Mitsuharu
e2d8c1e8bc Fix error in mouse-set-font on GTK 3 with Harfbuzz (Bug#36288)
* src/gtkutil.c (xg_get_font) [HAVE_GTK3]: Remove type property from font
spec.  This effectively undoes the fix for Bug#3228, but gives consistent
results overall.
2019-06-30 15:40:43 +09:00