Commit graph

42458 commits

Author SHA1 Message Date
Paul Eggert
0bbc84630f Fix recently-introduced expand-file-name bug
The bug was that (expand-file-name "~") returned something
like "/home/eggert/" instead of "/home/eggert".
Problem	reported by Mattias Engdegård (Bug#26911#27).
* src/fileio.c (Fexpand_file_name): When concatenating NEWDIR to
NM, instead of stripping trailing slashes from NEWDIR (which can
turn non-symlinks into symlinks), strip leading slashes from NM.
This also simplifies the code by removing no-longer-needed DOS_NT
special-casing.  Also, remove an unnecessary ‘target[length] = 0;’
as that byte will be overwritten by the next memcpy anyway.
* test/src/fileio-tests.el (fileio-tests--HOME-trailing-slash):
New test.
2020-08-27 14:49:38 -07:00
Paul Eggert
14fb657ba8 Fix expand-file-name symlink-to-dir bug
Problem reported by Yegor Timoshenko (Bug#26911),
and I ran into it myself recently in normal-top-level.
* doc/lispref/files.texi (File Name Expansion), etc/NEWS: Mention this.
* src/fileio.c (Fexpand_file_name): Expand "/a/b/." to "/a/b/" not
"/a/b", to avoid misinterpreting a symlink "/a/b".  Similarly,
expand "/a/b/c/.." to "/a/b/" not "/a/b".
* test/lisp/net/tramp-tests.el (tramp-test05-expand-file-name):
Adjust to match new behavior.
(tramp-test05-expand-file-name-relative): This test now succeeds,
at least on Fedora 31.
* test/src/fileio-tests.el:
(fileio-tests--expand-file-name-trailing-slash)	New test.
2020-08-26 13:27:56 -07:00
Paul Eggert
e823709d17 regex-emacs: copy less when reallocating
* src/regex-emacs.c (GROW_FAIL_STACK): Copy just the
occupied stack slots, as the rest are garbage.
2020-08-26 00:20:31 -07:00
Paul Eggert
bd5771ff27 regex-emacs: fix leak on memory allocation failure
* src/regex-emacs.c (ENSURE_FAIL_STACK): If the failure
stack cannot be grown, free locally-allocated storage
before returning.
2020-08-26 00:20:31 -07:00
Paul Eggert
4c0a9754ac regex-emacs: subscript-check register numbers
* src/regex-emacs.c (PUSH_FAILURE_REG, POP_FAILURE_REG_OR_COUNT)
(re_match_2_internal): Add some easserts for subscript checking.
2020-08-26 00:20:31 -07:00
Paul Eggert
82c089f532 regex-emacs: omit regstart tests and regend set
* src/regex-emacs.c (PUSH_FAILURE_REG, POP_FAILURE_REG_OR_COUNT)
(re_match_2_internal): Add some assertions that regstart
is set whenever regend is.
(re_match_2_internal): Omit two unnecessary REG_UNSET (regstart ...)s
and one unnecessary assignment to regend.
2020-08-26 00:20:31 -07:00
Paul Eggert
768bea30cb regex-emacs omit allocation of 3 slots
* src/regex-emacs.c (re_match_2_internal): Avoid
unnecessary allocation of REGEND[0], BEST_REGSTART[0],
BEST_REGEND[0].
2020-08-26 00:20:31 -07:00
Paul Eggert
438975bbaa regex-emacs omit POS runtime check
* src/regex-emacs.c (re_match_2_internal): Replace unnecessary
runtime check of POS with some eassumes.
2020-08-26 00:20:30 -07:00
Paul Eggert
375e87409a Omit "V" at the start of DEFVAR_BOOL vars
Problem noted by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2020-08/msg00846.html
* src/font.c (xft_ignore_color_fonts):
* src/syntax.c (comment_end_can_be_escaped):
* src/xdisp.c (word_wrap_by_category, display_fill_column_indicator):
Rename these DEFVAR_BOOL variables to avoid the initial "V"
that wrongly suggests that they are Lisp_Object variables.
All uses changed.
2020-08-25 14:28:26 -07:00
Michael Albinus
36f2f67c96 Merge from origin/emacs-27
44104a607a Fix error in GMP test
e26e63444d Add Feature testing for Windows binaries
4e2caef384 ; * src/character.c (str_as_multibyte): Fix the commentary.
d3a4ce8420 Revert "; * etc/NEWS: Remove temporary note on documentati...
16f00e36dc * admin/admin.el (set-version): Trap yet another NEWS error.
121be3e118 ; * etc/NEWS: Remove temporary note on documentation.  (Bu...
5fcb97dabd Fix cond jump table compilation (bug#42919)
2020-08-25 15:29:38 +02:00
Lars Ingebrigtsen
764bad713e Make shadowing warning in describe_map less confusing
* src/keymap.c (describe_map): A binding may be shadowed by
something else than a mode (bug#14086) (just a `define-key'
works), so don't say that it's a mode that shadows it.
2020-08-25 13:14:00 +02:00
Paul Eggert
e0345b4e86 replace-buffer-contents cleanups
* src/editfns.c (NOTE_DELETE, NOTE_INSERT): Avoid unnecessary parens.
(Freplace_buffer_contents): Check args before returning results.
Avoid integer overflow when computing too_expensive, and work even
if MAX-COSTS is bignum.  Call alloca and/or malloc just once, not
three times.
(set_bit, bit_is_set): Simplify micro-optimization by using eassume.
2020-08-24 13:17:48 -07:00
Paul Eggert
08a6d14e41 Fix replace-region-contents performance bug
* src/editfns.c (rbc_quitcounter): Remove; the quitcounter
is now part of the context.
(EXTRA_CONTEXT_FIELDS): Remove unused member early_abort_tests.
Add jmp, quitcounter.
(Freplace_buffer_contents): Use setjmp/longjmp to recover from
a compareseq that runs too long.  Omit unnecessary rarely_quit
call.
(buffer_chars_equal): Occasionally check for early abort and
longjmp out if so (Bug#43016).
2020-08-24 13:17:48 -07:00
Lars Ingebrigtsen
88795c52ff Have gnutls_symmetric cache the results from Fgnutls_ciphers
* src/gnutls.c (gnutls_symmetric): Cache the results from
Fgnutls_ciphers, since that function isn't very fast (bug#42998).
(syms_of_gnutls): Initialize cache variable.
2020-08-24 16:44:24 +02:00
Paul Eggert
df589d3681 Simplify by using Gnulib sigdescr_np module
Inspired by a straightforward patch by Bruno Haible.
* admin/merge-gnulib (GNULIB_MODULES): Add sigdescr_np.
* configure.ac: Do not check for sys_siglist or __sys_siglist.
* lib/gnulib.mk.in, m4/gnulib-comp.m4: Regenerate.
* lib/sigdescr_np.c, m4/sigdescr_np.m4: New files, copied from Gnulib.
* src/sysdep.c (sys_siglist, sys_siglist_entries): Remove.
(init_signals): Do not initialize sys_siglist.
(safe_strsignal): Use sigdescr_np instead of sys_siglist.
2020-08-23 15:01:51 -07:00
Eli Zaretskii
2c389455c7 Fix more compilation warnings in xdisp.c
* src/xdisp.c (display_mode_element, decode_mode_spec_coding):
Avoid compilation warnings.
2020-08-23 22:09:39 +03:00
Eli Zaretskii
f3e6dd1ce9 Fix a compilation warning in xdisp.c
* src/xdisp.c (gui_consider_frame_title): Fix compilation warning.
Reported by Lars Ingebrigtsen <larsi@gnus.org>.
2020-08-23 21:52:06 +03:00
Eli Zaretskii
3a99f966dc Improve handling of coding-system mnemonic indicators
This fixes assertion violations when the mnemonic is
given as a string, and allows non-ASCII characters be
used as mode-line mnemonic of a coding-system.
* src/xdisp.c (decode_mode_spec_coding): Handle multibyte
characters as coding-system's mnemonic.
(display_mode_element): If decode_mode_spec returns a multibyte
string, display it as multibyte.
* src/coding.c (Fdefine_coding_system_internal)
(Fcoding_system_put): If :mnemonic is a string, use its first
character.  This avoids assertion violations if someone uses a
string as the mnemonic of a coding-system.
2020-08-23 21:23:45 +03:00
Mattias Engdegård
a539488462 Always make a multibyte string for the frame title (bug#42904)
* src/xdisp.c (gui_consider_frame_title): Multibyte-encode any raw
bytes in the title, and then pass a multibyte string to the back-end
for use as a frame title.  This cuts down a little on the rubbish
shown when raw bytes sneak in by mistake (as part of the buffer name,
for instance).
2020-08-23 18:42:08 +02:00
Eli Zaretskii
6e2ee2a127 Fix image display on w32 as followup to recent changes
The new code calls 'malloc' and 'free', so we can no longer
* src/image.c (struct image_type): Rename 'load' to 'load_img' and
'free' to 'free_img'.  All callers changed.
(free_image) [WINDOWSNT]: Don't #undef 'free'.
2020-08-23 19:25:58 +03:00
Alan Third
8dc95e3598 Silence compiler warning (bug#40845)
* src/image.c (lookup_image): Don't allow face to be NULL.
2020-08-23 17:06:02 +01:00
Alan Third
8f42b94fe4 Set basic SVG attributes (bug#40845)
* test/manual/image-transforms-tests.el: Replace hard-coded colors
with defaults.
* src/dispextern.h (struct image):
* src/image.c (search_image_cache):
(xbm_load_image):
(xbm_load):
(pbm_load): Rename from frame to face where relevant.
(svg_load_image): Parse the image to find out the size, then wrap it
in another SVG to set a new size and colors, etc.
(lookup_image): Use the face colors instead of the frame colors.
(search_image_cache): Add ability to ignore the face colors.
(uncache_image): Uncache all copies of the image that share the spec,
even if the face colors don't match.
* etc/NEWS: Describe the changes.
2020-08-23 16:28:17 +01:00
Yuan Fu
0d1ca2ac38 Improve word wrapping for CJK characters
Note about the change around line 9257 and 23372:

Before, the test for whitespace checks for can_wrap_before and
can_wrap_after simutaniously.  Now we separate these two checks, and
the logic needs to change a little bit.  However, when we don't enable
the new wrapping feature, 'can_wrap_after' is equivalent to
'IT_DISPLAYING_WHITESPACE' and 'can_wrap_before' is equivalent to
'!IT_DISPLAYING_WHITESPACE'.  And the new logic is equivalent with the
old one in that case.

Old logic:

    if (whitespace) /* Which means can wrap after && can't wrap
                       before.  */
      may_wrap = true;

    else if (may_wrap) /* aka (!whitespace && may_wrap)
      (set wrap point)  * aka (can't wrap after && can wrap before
      may_wrap = false  *      && may_wrap)
                        */

New logic:

    if (can_wrap_after)
      next_may_wrap = true
    else
      next_may_wrap = false;

    if (may_wrap && can_wrap_before)
      (set wrap point)

    /* Update may_wrap.  */
    may_wrap = next_may_wrap;

* src/xdisp.c (it_char_has_category, char_can_wrap_before)
(char_can_wrap_after): New functions.
(move_it_in_display_line_to, display_line): Replace calls to
'IT_DISPLAYING_WHITESPACE' with either 'char_can_wrap_before' or
'char_can_wrap_after'.
(word-wrap-by-category): New variable.

* lisp/cus-start.el (minibuffer-prompt-properties--setter): Add
'word-wrap-by-category' as a customizable variable.

* doc/emacs/display.texi (Visual Line Mode): Add a paragraph about the
new 'word-wrap-by-category' feature.
* etc/NEWS: Announce the change.
2020-08-23 09:50:26 +03:00
Alan Third
e63a0c466c Fix NS build failure
* src/thread.c: xgselect isn't used with NS, even when HAVE_GLIB is
defined.
2020-08-22 16:31:02 +01:00
Alan Third
96e5d8ce0d Extend NSString further and use the new methods
* src/nsfns.m (ns_set_icon_name):
(ns_set_name):
(ns_set_represented_filename):
(ns_implicitly_set_icon_type):
(ns_set_icon_type):
(ns_appkit_version_str):
(Fx_create_frame):
(Fns_read_file_name):
(Fns_get_resource):
(Fns_set_resource):
(Fns_list_colors):
(Fns_perform_service):
(ns_do_applescript): Use the new NSString methods.
([NSString stringWithLispString:]): Fix the surrogate algorithm.
([NSString lispString]): New method.
* src/nsterm.h (NSString): Add new method.
* src/nsterm.m ([EmacsApp openFile:]):
([EmacsApp requestService:userData:error:]):
([EmacsApp fulfillService:withArg:]):
([EmacsView changeFont:]):
([EmacsView setMarkedText:selectedRange:]):
([EmacsView initFrameFromEmacs:]):
([EmacsView performDragOperation:]):
([EmacsView performDragOperation:]):
([EmacsView performDragOperation:]):
([EmacsWindow accessibilityAttributeValue:]): Use the new NSString
methods.
2020-08-22 16:19:37 +01:00
Eli Zaretskii
4e2caef384 ; * src/character.c (str_as_multibyte): Fix the commentary. 2020-08-21 18:15:05 +03:00
Lars Ingebrigtsen
ac1270de40 Fread_variable doc string clarification
* src/minibuf.c (Fread_variable): Doc string clarification (bug#38886).
2020-08-21 16:55:55 +02:00
Lars Ingebrigtsen
70964b9c6b Mention `exec-path' in some process related doc strings
* src/callproc.c (Fcall_process_region):
(Fcall_process):
* src/process.c (Fmake_process): Mention `exec-path' in the doc
strings (bug#42704).
2020-08-21 16:15:18 +02:00
Noam Postavsky
9d4b11132b Clarify docs about line movement
* doc/lispref/positions.texi (Text Lines, Screen Lines): Add index
entries.
* lisp/simple.el (move-beginning-of-line): Remove incorrect mention of
images, and reference beginning-of-visual-line.
* src/editfns.c (Fline_beginning_position): Reference
`vertical-motion' (bug#35899).
2020-08-21 15:08:27 +02:00
Pip Cet
9c62ffb082 Fix lock failures in xg_select
* src/xgselect.c (release_select_lock, acquire_select_lock):
Introduce.
(xg_select): Use `acquire_select_lock', `release_select_lock'.
* src/thread.c (release_select_lock): Introduce for non-GLib builds.
(really_call_select): Call `release_select_lock'.  Simplify by
ensuring acquisition of the lock always succeeds (bug#36609).
2020-08-21 14:56:06 +02:00
Pip Cet
19ee08f1e8 Fix return value for CCL opcode lookup-integer
* src/ccl.c (ccl_driver): Fix LookupIntConstTbl return value.
* test/lisp/international/ccl-tests.el (ccl-hash-table): Add test.
* lisp/international/ccl.el (ccl-embed-data): Don't pass non-numbers
to `ccl-fixnum' (bug#36740).
2020-08-21 14:47:45 +02:00
Lars Ingebrigtsen
165fd028d8 Make image cache lookups work again after previous patch
* src/image.c (search_image_cache): Fix reversed logic in previous
patch.
2020-08-21 01:29:32 +02:00
Mattias Engdegård
bf60338d6d Fix NS crash on invalid frame title string (bug#42904)
Instead of blindly assuming that all Emacs strings are valid UTF-8,
which they are not, use a more careful conversion going via UTF-16
which is what NSString uses internally.  Unpaired surrogates will
still go through to the NSString objects, but the NS libs handle them
gracefully.

* src/nsterm.h (EmacsString): New category.
* src/nsfns.m (all_nonzero_ascii): New helper function.
([NSString stringWithLispString:]): New method.
(ns_set_name_internal): Use new conversion method.
2020-08-20 19:39:14 +02:00
Doug Gilmore
a7291a9fb9 Fix a segfault in daemon mode Emacs when detaching an X session
* src/xterm.c (x_uncatch_errors): Add a sanity check for
x_error_message (bug#23939).
2020-08-19 14:05:19 +02:00
Lars Ingebrigtsen
9e586ac1d1 Signal an end-of-file error upon errors when reading from stdin
* src/minibuf.c (read_minibuf_noninteractive): Signal an
`end-of-file' error when reading from stdin instead of a general
error (bug#34123).  This makes it easier to write code that
recovers from this situation.

Suggested by Noam Postavsky <npostavs@gmail.com>.
2020-08-19 12:55:46 +02:00
Alan Third
92ec47981a Get rid of build-time checks around NS tabbar code (bug#33118)
* src/nsterm.m ([EmacsView initFrameFromEmacs:]): Get rid of version
checks.
2020-08-18 22:43:21 +01:00
Robert Pluim
b4f05274c7 Fix truncated command names in process-attributes under Macos
* src/sysdep.c (system_process_attributes): Fix truncation of
command names in process-attributes under Macos (bug#36287).
2020-08-18 20:31:42 +02:00
Pip Cet
495aa532f1 Fix minor bugs in image.c
* test/src/image-tests.el (image-test-circular-specs): New file.
* src/image.c (parse_image_spec): Return failure for circular lists.
(valid_image_p): Don't look at odd-numbered list elements expecting to
find a property name.
(image_spec_value): Handle circular lists.
(equal_lists): Introduce.
(search_image_cache): Use `equal_lists' (bug#36403).
2020-08-18 18:27:05 +02:00
Kalle Olavi Niemitalo
4670969e67 Fix buffer overflow in x-send-client-message
* xselect.c (x_fill_property_data): Add parameter NELEMENTS_MAX.
* xterm.h (x_fill_property_data): Update prototype.
* xselect.c (Fx_send_client_event): Update call.  This fixes
  a buffer overflow in event.xclient.data.
* xfns.c (Fx_change_window_property): Update call (bug#23482).

Copyright-paperwork-exempt: yes
2020-08-18 17:05:08 +02:00
Glenn Morris
06738a40d1 Merge from origin/emacs-27
362ca83a3b (origin/emacs-27) Let Emacs start even if curdir is inacce...
dd989c0ea0 * etc/NEWS: Mention GnuPG 2.0 through 2.1.5 issue (Bug#428...
4542b750cc Fix bug with ~/Emacs file not being read at init
9b403d624e ; Fix last change
6bff65a626 ; * doc/lispref/sequences.texi (Sequence Functions): Typo ...
3c4edfd85e Prevent from frozen frame after `C-z' in Lucid builds
98e8241992 Document the 'flex' completion style
19fa8b7ca3 Note that Emacs needs systemd support if systemd is used t...

# Conflicts:
#	etc/NEWS
2020-08-18 07:51:08 -07:00
Glenn Morris
013ddd1e5d Merge from origin/emacs-27
cf0ee6f49b ; spelling fixes
16f4f26632 Fix startup working dir bug on NeXTSTEP
2020-08-18 07:51:05 -07:00
Paul Eggert
9905001e4b Fix glitch uncovered by gcc -fsanitize=undefined
* src/ccl.c (ccl_driver): Defend against signed integer
overflow (Bug#42660).  Perhaps some of this is unnecessary,
but it is safe and ccl.c is low-priority these days.
2020-08-17 17:55:09 -07:00
Eli Zaretskii
3a17b9f265 Fix assertion violation in pdumper.c
* src/pdumper.c (pdumper_find_object_type_impl): When checking
last_mark_bits, require the offset to be less than
discardable_start, not cold_start.  This fixes a typo introduced in
2020-08-14T21:33:21Z!eggert@cs.ucla.edu (Bug#42832).
2020-08-17 09:30:40 -07:00
Robert Pluim
4542b750cc Fix bug with ~/Emacs file not being read at init
* src/xrdb.c (get_user_app): Put "/" between homedir
and %L or %N (Bug#42827).
2020-08-16 21:41:03 -07:00
Paul Eggert
0c86f5592e Simplify format_time_string
* src/timefns.c (emacs_nmemftime, format_time_string):
Simplify on the basis of recent nstrftime changes.
Propagate nstrftime errno.
2020-08-16 14:30:29 -07:00
Lars Ingebrigtsen
bdda935a7d Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs 2020-08-16 20:25:53 +02:00
Lars Ingebrigtsen
ada0b9b94e Implement list-system-processes on OpenBSD
* src/sysdep.c: Implement list-system-processes on OpenBSD:
(bug#13881).  Based on a patch by Jérémie Courrèges-Anglas.
2020-08-16 20:25:44 +02:00
Paul Eggert
748afc183c Fix recently-introduced Fdelete bug
Problem reported by Pip Cet in:
https://lists.gnu.org/r/emacs-devel/2020-08/msg00444.html
* src/fns.c (Fdelete): Fix correctness bug via a simpler (though more
memory-intensive) approach.  It’s probably not worth optimizing
the memory usage yere.
* test/src/fns-tests.el (test-vector-delete): Add test for the bug.
2020-08-15 12:37:04 -07:00
Paul Eggert
b467bb531e Minimize ‘equal’ calls in (delete x vector)
* src/fns.c (Fdelete): When deleting from a vector, call Fequal
only once per vector element.  This is faster when Fequal is slow,
and avoids the need to preinitialize the vector result.  Finish
when the result is exhausted, not when the input is exhausted;
the two are equivalent but the former may be faster.
* test/src/fns-tests.el (test-vector-delete): New test.
2020-08-15 11:19:51 -07:00
Paul Eggert
e97def2bbc Fdelete speed tweak for strings
* src/fns.c (Fdelete): Hoist FIXNUMP out of a loop,
and turn it into CHARACTERP.
2020-08-15 11:19:51 -07:00