1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-11 14:01:43 -08:00
Commit graph

141290 commits

Author SHA1 Message Date
Noam Postavsky
ae348f3286 Adjust NEWS for revert of eshell fix on emacs-27 (Bug#41370)
* etc/NEWS.27: Move "Eshell no longer re-initializes its keymap every
call" to...
* etc/NEWS: ... here.
2020-05-27 13:00:05 -04:00
Noam Postavsky
a824d5c87a Fix customizing of ido-mode (Bug#41557)
lisp/ido.el (ido-mode): When setting the user option to nil, pass 0 to
the function, so that it will be disabled as intended.
2020-05-27 13:00:03 -04:00
Paul Eggert
dcd96745b0 Fix crash with invalid bytecode vectors
* src/lread.c (read_vector): If the vector is to short to be for
bytecodes don’t do bytecode processing for it, as the processing
might run past the end of the vector.
2020-05-27 09:51:12 -07:00
Paul Eggert
9d11f127f1 --with-wide-int is a no-op on 64-bit hosts
* configure.ac: Clarify wording for --with-wide-int help.
* src/pdumper.c (dump_vectorlike_generic):
Do the eassert even if --with-wide-int was specified unnecessarily.
2020-05-27 09:51:12 -07:00
Paul Eggert
22446569cd Omit unnecessary USE_LAB_TAG #if
* src/lisp.h: Omit unnecessary #if; the condition is always false now.
2020-05-27 09:51:11 -07:00
Mattias Engdegård
c5cf630ecd Don't clobber match data in utf-8-hfs conversion (bug#41445)
Reported by Ture Pålsson.

* lisp/international/ucs-normalize.el
(ucs-normalize-hfs-nfd-post-read-conversion)
(ucs-normalize-hfs-nfd-pre-write-conversion):
Use save-match-data to avoid match data clobber in normalisation.
* test/lisp/international/ucs-normalize-tests.el
(ucs-normalize-save-match-data): New test.
2020-05-27 16:29:43 +02:00
Paul Eggert
0fc4989f34 Tweak GC performance if !USE_LSB_TAG
Performance issue reported by Eli Zaretskii (Bug#41321#149).
* src/alloc.c (GC_OBJECT_ALIGNMENT_MINIMUM): New constant.
(maybe_lisp_pointer): Use it instead of GCALIGNMENT.
2020-05-26 15:48:31 -07:00
Alan Mackenzie
5467aac131 Introduce some Objective-C 2.0 keywords. This fixes bug #5953
* lisp/progmodes/cc-langs.el (c-other-decl-kwds): New keywords @property,
@dynamic, @synthesize, @compatibility_alias.
(c-protection-kwds): New keywords @package, @required, @optional.
(c-block-stmt-1-kwds): New keyword @autoreleasepool.
(c-constant-kwds): New keywords IBAction, IBOutlet.
2020-05-26 20:08:15 +00:00
Paul Eggert
9f7bfb6cb0 Port struct Lisp_FLoat to oddball platforms
* src/lisp.h (struct Lisp_Float): Declare via
GCALIGNED_UNION_MEMBER, not via GCALIGNED_STRUCT, since alloc.c
creates these in arrays and GCALIGNED_STRUCT does not necessarily
suffice to align struct Lisp_Float when it’s used in an array.
This avoids undefined behavior on oddball machines where
sizeof (struct Lisp_Float) is not a multiple of 8 and the compiler
does not support __attribute__ ((aligned 8)).
2020-05-26 00:47:48 -07:00
Paul Eggert
c4faf78a98 Move union emacs_align_type to alloc.c
* src/alloc.c (union emacs_align_type): Move to here ...
* src/lisp.h: ... from here, and uncomment out some of the
types that alloc.c can see but lisp.h cannot.
2020-05-25 23:28:04 -07:00
Paul Eggert
92278640ba Further fix for aborts due to GC losing pseudovectors
* src/alloc.c (MALLOC_ALIGNMENT_BOUND): Remove.
(LISP_ALIGNMENT): Go back to yesterday’s version, except use
union emacs_align_type instead of max_align_t.
(MALLOC_IS_LISP_ALIGNED): Go back to yesterday’s version.
(maybe_lisp_pointer): Check against GCALIGNMENT, not LISP_ALIGNMENT.
* src/lisp.h (union emacs_align_type): Bring back.
2020-05-25 23:06:41 -07:00
Paul Eggert
3abf76da56 Refix aborts due to GC losing pseudovectors
This is simpler, and fixes a bug in the previous fix.
* src/alloc.c (MALLOC_ALIGNMENT_BOUND): Simplify by
using max_align_t, since the buggy implementations won’t
break this simpler implementation.
(LISP_ALIGNMENT): Simplify by just using GCALIGNMENT, since the
fancier implementation wasn’t correct anyway, and fixing it
isn’t worth the trouble on practical platforms.
* src/lisp.h (union emacs_align_type): Remove.
2020-05-25 22:06:44 -07:00
Paul Eggert
0dc529175d Fix aborts due to GC losing pseudovectors
Problem reported by Eli Zaretskii (Bug#41321).
* src/alloc.c (MALLOC_ALIGNMENT_BOUND): New constant.
(LISP_ALIGNMENT): Lower it to avoid crashes on MinGW and similarly
buggy platforms where malloc returns pointers not aligned to
alignof (max_align_t).  But keep it higher on platforms where this
is known to work, as it helps GC performance.
(MALLOC_IS_LISP_ALIGNED): Define in terms of the other two.
* src/alloc.c (stacktop_sentry):
* src/thread.c (run_thread):
Don’t overalign or oversize stack sentries; they need to be
aligned only for pointers and Lisp_Object, not for arbitrary
pseudovector contents.
* src/lisp.h (union emacs_align_type): New type, used for
LISP_ALIGNMENT.
2020-05-25 20:29:50 -07:00
Stefan Kangas
8b940dac32 Mark metamail.el as obsolete (Bug#41388)
The metamail package was last released in 1994, and has been removed
from most GNU/Linux distributions due to being buggy and unmaintained.

* lisp/mail/metamail.el: Move from here...
* lisp/obsolete/metamail.el: ...to here.
* etc/NEWS: Mention its obsoletion.
2020-05-26 04:56:56 +02:00
Dmitry Gutov
3f66908ee0 Bump project.el version
* project.el: Bump the version
2020-05-25 22:29:47 +03:00
Dmitry Gutov
c0275555f2 ; More the note about reporting problems further up 2020-05-25 22:29:06 +03:00
Philipp Stephani
448fe7ad25 ; * lisp/files.el (auto-save-visited-mode): Fix typo in last commit. 2020-05-25 21:21:31 +02:00
Philipp Stephani
f8e99938ec Allow inhibiting 'auto-save-visited-mode' on a per-buffer basis.
At least for me, 'auto-save-visited-mode' is very slow and blocks user
interaction for files visited over TRAMP.  Therefore, I'd like a
mechanism to disable it for some buffers (namely, those visiting
remote files).

* (auto-save-visited-mode): Document that 'auto-save-visited-mode' can
be set to nil buffer-locally.

* etc/NEWS: Document new behavior.
2020-05-25 21:11:59 +02:00
Lars Ingebrigtsen
c812223c9f Don't bug out in xml-escape-string if invalid characters aren't present
* lisp/xml.el (xml-escape-string): Don't bug out if invalid
characters aren't present.
2020-05-25 15:03:37 +02:00
ej32u@protonmail.com
0cdedf612b Add command ffap-other-tab (Bug#41410)
* lisp/ffap.el (ffap-other-tab): New command, opens files at point in
another tab.
(ffap-bindings): Bind it to find-file-other-tab's binding.
2020-05-24 20:45:05 -04:00
Noam Postavsky
b9b8c5e3fa Make dedicated keymap and mode for eshell-command (Bug#41370)
Otherwise, we end up permanently modifying eshell-mode-map when
running eshell-command.
* lisp/eshell/eshell.el (eshell-command-mode): New mode, with map to
contain the bindings previously set by eshell-return-exits-minibuffer.
(eshell-return-exits-minibuffer): Make into obsolete alias for
eshell-command-mode.
(eshell-command): Use eshell-command-mode instead of
eshell-return-exits-minibuffer.
2020-05-24 20:17:40 -04:00
Noam Postavsky
3b65fb7658 Fix segfault on closing frame with tooltip (Bug#41239)
* src/gtkutil.c (xg_free_frame_widgets): Empty and unreference the
tooltip widget before destroying its label.
2020-05-24 20:14:48 -04:00
Stefan Kangas
104b68b670 Mark browse-url-conkeror as obsolete
* lisp/net/browse-url.el:
(browse-url--browser-defcustom-type)
(browse-url-conkeror-new-window-is-buffer)
(browse-url-conkeror-program, browse-url-conkeror-arguments)
(browse-url-default-browser, browse-url-conkeror): Mark the
conkeror browser as obsolete.

* etc/NEWS: Mention this.
2020-05-24 18:48:16 +02:00
Carl Lei
ced29038df Add three C++20 coroutine keywords, co_await, co_yield, and co_return
* lisp/progmodes/cc-langs.el (c-operators): Add co_await and co_yield to the
C++ value of "Exception" keywords.
(c-return-kwds): Create a C++ value containing co_return.
(c-simple-stmt-kwds): Add co_return to the C++ value.

Copyright-paperwork-exempt: yes.
2020-05-24 11:52:24 +00:00
Paul Eggert
e021c2dc22 Port etags FALLTHROUGH to C2X
Problem reported by Ashish SHUKLA in:
https://lists.gnu.org/r/emacs-devel/2020-05/msg03013.html
* lib-src/etags.c (C_entries): Move label so that FALLTHROUGH
precedes a case label, as draft C2X specifies.
2020-05-23 12:55:32 -07:00
Paul Eggert
9e977c4972 Restore check for Emacs 20.2 bytecodes
* src/eval.c (Ffetch_bytecode): Check for multibyte bytecodes
here too.  Problem reported by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2020-05/msg02876.html
2020-05-23 10:39:45 -07:00
Glenn Morris
d436e4840a Merge from origin/emacs-27
d6a0b66a0c (origin/emacs-27) * lisp/subr.el (save-match-data): Clarif...
1a6d59eeba Improve the documentation of setting up fontsets
c7737d40f2 ; * etc/TODO (Ligatures): Update the entry based on recent...
fb2e34cd21 ; * etc/TODO (Ligatures): Update the entry based on recent...
13b6dfd4f7 * doc/emacs/killing.texi (Rectangles): Improve indexing.
a10254dd46 Fix accessing files on networked drives on MS-Windows
2020-05-23 07:50:30 -07:00
Glenn Morris
294495de8e ; Merge from origin/emacs-27
The following commits were skipped:

c0aa2f2abf CC Mode: Fix bug #39972, by fixing c-display-defun-name fo...
62a5e890d7 Redo RCS Id for pdumper
2020-05-23 07:50:30 -07:00
Glenn Morris
ce70cfb1b1 Merge from origin/emacs-27
8cc453d788 Second attempt at improving indexing in control.texi
2020-05-23 07:50:30 -07:00
Glenn Morris
bd5c3d10b1 ; Merge from origin/emacs-27
The following commit was skipped:

0eeeedf195 ; * etc/PROBLEMS: Add note about color list issues on macOS.
2020-05-23 07:50:30 -07:00
Glenn Morris
fabcc1ee13 Merge from origin/emacs-27
4b9fbdb5a7 ; Update TODO item about ligature support
03d44acfdd * doc/lispref/control.texi (Processing of Errors): Improve...
b48ab743a8 Minor fixups for mutability doc
6ac2326e5b Don’t use “constant” for values you shouldn’t change
2020-05-23 07:50:29 -07:00
Stefan Monnier
d6a0b66a0c * lisp/subr.el (save-match-data): Clarify use in docstring 2020-05-23 09:33:41 -04:00
Eli Zaretskii
1a6d59eeba Improve the documentation of setting up fontsets
* doc/lispref/display.texi (Fontsets): Improve the accuracy of a
cross-reference to "Character Properties".

* doc/emacs/mule.texi (Fontsets, Modifying Fontsets): Improve the
documentation of fontsets and how to modify them.
2020-05-23 15:14:27 +03:00
Philipp Stephani
f8581bcf6a Reject invalid characters in XML strings (Bug#41094).
* lisp/xml.el (xml-escape-string): Search for invalid characters.
(xml-invalid-character): New error symbol.

* test/lisp/xml-tests.el (xml-print-invalid-cdata): New unit test.

* etc/NEWS: Document new behavior.
2020-05-23 14:01:17 +02:00
Eli Zaretskii
232bb691c1 ; * etc/NEWS: Mention new customization options for package.el. 2020-05-23 11:19:54 +03:00
Chris McMahan
d7fc6bd17c Let user adjust the column widths of the package menu.
* lisp/emacs-lisp/package.el (package-name-column-width)
(package-version-column-width, package-status-column-width)
(package-archive-column-width): New defcustoms.
(package-menu-mode):
Use the values of defcustoms instead of hardcoded
values.  (Bug#41086)
2020-05-23 11:15:19 +03:00
Eli Zaretskii
c7737d40f2 ; * etc/TODO (Ligatures): Update the entry based on recent discussions. 2020-05-23 11:01:09 +03:00
Eli Zaretskii
fb2e34cd21 ; * etc/TODO (Ligatures): Update the entry based on recent discussions. 2020-05-23 10:59:39 +03:00
Eli Zaretskii
13b6dfd4f7 * doc/emacs/killing.texi (Rectangles): Improve indexing. 2020-05-23 10:33:35 +03:00
Eli Zaretskii
a10254dd46 Fix accessing files on networked drives on MS-Windows
* src/w32.c (acl_get_file): Set errno to ENOTSUP if
get_file_security returns ERROR_NOT_SUPPORTED.  (Bug#41463)
2020-05-23 08:50:22 +03:00
Stefan Kangas
b4a1519189 Delete another library obsolete since 23.2
This was missed in a previous commit to remove obsolete libraries.
Its deletion was already announced in NEWS.

* lisp/obsolete/levents.el: Delete file.  This library has been
obsolete since 23.2.
2020-05-23 07:37:18 +02:00
Stefan Monnier
cde0589818 * lisp/doc-view.el (doc-view-presentation): Fix thinko 2020-05-22 23:36:57 -04:00
Dmitry Gutov
c67f8f298a Implement 'mark-resolved' for the Git backend
* lisp/vc/vc-git.el (vc-git-mark-resolved): New function.
2020-05-23 05:08:06 +03:00
Dmitry Gutov
5044c19001 project.el: A project has only one main root now
Practice shows that the vast majority of projects only use one main
root.  The users of this API very often make this assumption as well.
The rest of the "roots" should be possible to express through
project-external-roots.

* lisp/progmodes/project.el: Update the commentary.
Only 4 non-obsolete generics now.
(project-root): Replacement for `project-roots'.
All callers updated.  Implementations too.
(project-roots): Declare obsolete.
(project-external-roots): Simplify the docstring.
(project-ignores): Update the docstring.
(project-find-regexp): Omit the second arg to project-files.
(project--dir-ignores): Simplify.
(project-compile): Simplify, remove outdated comment.

* lisp/cedet/ede.el: Add a FIXME.
2020-05-23 04:54:42 +03:00
Dmitry Gutov
813e42c63b Disable ido-everywhere when ido-mode is off
* lisp/ido.el (ido-mode): Disable the effects of 'ido-everywhere'
when ido-mode is turned off.
2020-05-23 04:54:42 +03:00
Basil L. Contovounesios
3a7894ecd1 Improve shr/eww handling of mailto URLs
* lisp/net/eww.el (eww): Use function-put in place of put, as
recommended in "(elisp) Symbol Plists".
(eww-follow-link):
* lisp/net/shr.el (shr-browse-url): Rather than call browse-url-mail
directly, call browse-url which respects the user options
browse-url-handlers and browse-url-mailto-function.  (Bug#41133)
(shr--current-link-region): Return nil if there is no link at point.
(shr--blink-link): Adapt accordingly.
(shr-fill-line, shr-indent, shr-table-body): Refactor to avoid some
unnecessary allocations.
* etc/NEWS: Announce that eww-follow-link and shr-browse-url support
custom URL handlers.
2020-05-22 16:28:20 +01:00
Basil L. Contovounesios
3f082af536 Various json.el improvements
* etc/NEWS: Announce that json-read-number is now stricter.

* json.el: Bump package version.
(json-encoding-lisp-style-closings, json-pre-element-read-function)
(json-post-element-read-function, json-advance, json-peek)
(json--path): Clarify and improve style of doc strings.
(json-join): Define as an obsolete alias of string-join.
(json-alist-p, json-plist-p): Refactor for speed and declare as
pure, side-effect-free, and error-free.
(json--plist-reverse): Rename function...
(json--plist-nreverse): ...to this, making it destructive for speed.
All callers changed.
(json--plist-to-alist): Remove, replacing single use with map-pairs.
(json--with-indentation): Accept multiple forms as arguments, fix
their indentation, and allow them to be instrumented for debugging.
Add docstring.
(json-pop, json-read-keyword, json-add-to-object)
(json-encode-array): Simplify for speed.
(json-skip-whitespace): Put newline before carriage return for
likely frequency of occurrence, and so that the characters appear in
increasing order.
(json--check-position): Use 1+.
(json-path-to-position): Open code apply-partially.
(json-keywords): Turn into a defconst and mark as obsolete now that
it is no longer used.
(json--post-value, json--number, json--escape): New rx definitions.
(json-encode-keyword): Declare as side-effect-free.
(json-read-number): Reject leading zeros and plus signs, and make
integer part mandatory in accordance with JSON standards and for
consistency with native JSON parsing functions.  Eagerly signal
json-number-format when garbage follows a valid number, e.g., when
reading "1.1.1", instead of leaving that up to the caller.  Remove
optional internal argument from advertised calling convention now
that the function is no longer recursive.
(json-encode-number): Define as an alias of number-to-string.
(json-special-chars): Turn into a defconst.
(json-read-escaped-char, json-new-object, json-read-file)
(json-pretty-print): Simplify.
(json-read-string): For consistency with other json.el error
reporting, remove check for leading '"', and use the integer value
rather than the printed representation of characters in error data.
At EOB signal json-end-of-file instead of json-string-format.
(json--long-string-threshold, json--string-buffer): New variables.
(json-encode-string): Reimplement in terms of buffer manipulation
for speed (bug#20154).
(json-read-object): Escape ?\} properly.
(json--encode-alist): New function extracted from json-encode-alist.
(json-encode-hash-table, json-encode-alist, json-encode-plist): Use
it to avoid destructively modifying the argument when
json-encoding-object-sort-predicate is non-nil without incurring
unnecessary copying (bug#40693).  Encode empty object as "{}" even
when pretty-printing.  Simplify for speed.
(json-read-array): Avoid recomputing list length on each iteration
when json-pre-element-read-function is non-nil.  Make first element
of json-array-format error data a string for consistency with
json-object-format and to make the displayed error message clearer.
(json-readtable-dispatch): Accept any kind of argument, not just
symbols.  Generate the table in a simpler manner so the dispatch
order is clearer.  Remove dispatch on ?+ and ?. now that
json-read-number is stricter and for consistency with native JSON
parsing functions.  Signal json-end-of-file if argument is nil.
(json-read): Simplify accordingly.
(json-encode): Avoid allocating a list on each invocation.

* lisp/jsonrpc.el (jsonrpc--json-read, jsonrpc--json-encode): Check
whether native JSON functions are fboundp only once, at load time.

* lisp/progmodes/python.el (python--parse-json-array): New function.
(python-shell-prompt-detect): Use it to parse JSON directly as a
list rather than converting from a vector.

* test/lisp/json-tests.el (json-tests--with-temp-buffer): Allow
instrumenting for debugging.
(test-json-join, test-json-plist-to-alist): Remove tests.

(test-json-alist-p, test-json-plist-p, test-json-advance)
(test-json-peek, test-json-pop, test-json-skip-whitespace)
(test-json-read-keyword, test-json-encode-keyword)
(test-json-encode-number, test-json-read-escaped-char)
(test-json-read-string, test-json-encode-string)
(test-json-encode-key, test-json-new-object)
(test-json-encode-hash-table, test-json-encode-plist)
(test-json-encode-list, test-json-read-array)
(test-json-encode-array, test-json-read)
(test-json-read-from-string, test-json-encode): Extend tests.

(test-json-plist-reverse): Rename test...
(test-json-plist-nreverse): ...to this and avoid modifying literal
lists.
(test-json-read-number): Rename test...
(test-json-read-integer): ...to this, focusing on integers.
(test-json-add-to-object): Rename test...
(test-json-add-to-alist): ...to this, focusing on alists.
(json-encode-simple-alist): Rename test...
(test-json-encode-alist): ...to this, extending it.
(test-json-encode-alist-with-sort-predicate): Rename test...
(test-json-encode-alist-sort): ...to this, extending it.
(test-json-encode-plist-with-sort-predicate): Rename test...
(test-json-encode-plist-sort): ...to this, extending it.

(test-json-read-keyword-invalid, test-json-read-fraction)
(test-json-read-exponent, test-json-read-fraction-exponent)
(test-json-read-number-invalid)
(test-json-read-escaped-char-invalid, test-json-add-to-plist)
(test-json-add-to-hash-table, test-json-read-object-empty)
(test-json-read-object-invalid, test-json-read-object-function)
(test-json-encode-hash-table-pretty)
(test-json-encode-hash-table-lisp-style)
(test-json-encode-hash-table-sort, test-json-encode-alist-pretty)
(test-json-encode-alist-lisp-style, test-json-encode-plist-pretty)
(test-json-encode-plist-lisp-style, test-json-read-array-function)
(test-json-encode-array-pretty, test-json-encode-array-lisp-style)
(test-json-read-invalid): New tests.

(test-json-path-to-position-no-match): Use should-not.
(test-json-read-object): Move error check to new test
test-json-read-object-invalid.
(test-json-pretty-print-object): Adapt test now that empty objects
are pretty-printed as "{}".
2020-05-22 15:16:13 +01:00
Alan Mackenzie
c0aa2f2abf CC Mode: Fix bug #39972, by fixing c-display-defun-name for nested defuns
* lisp/progmodes/cc-mode.el (c-common-init): Build
add-log-current-defun-function out of c-defun-name-and-limits instead of the
former c-defun-name.
2020-05-22 09:43:02 +00:00
Paul Eggert
62a5e890d7 Redo RCS Id for pdumper
* lisp/version.el: Don’t put an RCS Id style string into the
executable via purecopy, as this does not work with the pdumper.
* src/emacs.c (RCS_Id): New constant, for 'ident'.

(cherry picked from commit 3d1bcfba5e)
2020-05-21 19:17:36 +03:00
Basil L. Contovounesios
d714aa753b ; Bump defcustom :version in last change
* lisp/ido.el (ido-cannot-complete-command): Bump defcustom :version
after default value was changed.
2020-05-21 12:23:19 +01:00