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

142208 commits

Author SHA1 Message Date
Andrea Corallo
b478d57e73 Merge remote-tracking branch 'savannah/master' into HEAD 2020-05-25 15:56:25 +01: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
Andrea Corallo
2bc41e0963 ; Ease ifdef navigation in native-comp files
* src/comp.c (syms_of_comp): Add a comment to ease #endif
understading.

* src/comp.h: Likewise.
2020-05-24 22:49:38 +01:00
Andrea Corallo
0bba0e367b Fix GNU style
* src/comp.h: Fix GNU style.

* src/comp.c (Fcomp__compile_ctxt_to_file): Likewise.

* lisp/emacs-lisp/comp.el (comp--replace-output-file): Likewise.

* src/pdumper.c (dump_do_dump_relocation): Likewise.
2020-05-24 21:59:25 +01:00
Andrea Corallo
1bc558b77e Fix non Windows builds
* src/emacs.c (Fkill_emacs): Given
'finish_delayed_disposal_of_comp_units',
'dispose_all_remaining_comp_units' and
'clean_package_user_dir_of_old_comp_units' are defined only with
windows native-comp builds ifdef them.

* src/comp.h (dispose_comp_unit): Fix missing parameter in
declaration.
2020-05-24 21:50:19 +01:00
Nicolás Bértolo
1b809f378f Improve handling of native compilation units still in use in Windows
When closing emacs will inspect all directories from which it loaded
native compilation units. If it finds a ".eln.old" file it will try to
delete it, if it fails that means that another Emacs instance is using it.

When compiling a file we rename the file that was in the output path
in case it has been loaded into another Emacs instance.

When deleting a package we move any ".eln" or ".eln.old" files in the
package folder that we can't delete to `package-user-dir`. Emacs will
check that directory when closing and delete them.

* lisp/emacs-lisp/comp.el (comp--replace-output-file): Function called
from C code to finish the compilation process. It performs renaming of
the old file if necessary.
* lisp/emacs-lisp/package.el (package--delete-directory): Function to
delete a package directory. It moves native compilation units that it
can't delete to `package-user-dir'.
* src/alloc.c (cleanup_vector): Call dispose_comp_unit().
  (garbage_collect): Call finish_delayed_disposal_of_comp_units().
* src/comp.c: Restore the signal mask using unwind-protect. Store
loaded native compilation units in a hash table for disposal on
close. Store filenames of native compilation units GC'd in a linked
list to finish their disposal when the GC is over.
(clean_comp_unit_directory): Delete all *.eln.old files in a
directory.
(clean_package_user_dir_of_old_comp_units): Delete all *.eln.old files
in `package-user-dir'.
(dispose_all_remaining_comp_units): Dispose of native compilation
units that are still loaded.
(dispose_comp_unit): Close handle and cleanup directory or arrange for
later cleanup if DELAY is true.
(finish_delayed_disposal_of_comp_units): Dispose of native compilation
units that were GC'd.
(register_native_comp_unit): Register native compilation unit for
disposal when Emacs closes.
* src/comp.h: Introduce cfile member in Lisp_Native_Comp_Unit.
Add declarations of functions that: clean directories of unused native
compilation units, handle disposal of native compilation units.
* src/emacs.c (kill-emacs): Dispose all remaining compilation units
right right before calling exit().
* src/eval.c (internal_condition_case_3, internal_condition_case_4):
Add functions.
* src/lisp.h (internal_condition_case_3, internal_condition_case_4):
Add functions.
* src/pdumper.c (dump_do_dump_relocation): Set cfile to a copy of the
Lisp string specifying the file path.
2020-05-25 09:42:10 +01: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
Andrea Corallo
9daffe9cfe Merge remote-tracking branch 'savannah/master' into HEAD 2020-05-24 10:20:23 +01: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
Andrea Corallo
f5dceed09a * lisp/loadup.el: Use new 'native-comp-available-p'. 2020-05-23 14:25:44 +01: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
Nicolás Bértolo
d59607b685 * Windows: Use NUMBER_OF_PROCESSORS environment variable.
* lisp/emacs-lisp/comp.el (comp-effective-async-max-jobs): Use
NUMBER_OF_PROCESSORS environment variable if system is Windows NT,
"nproc" if it is in PATH or a default of 1.
2020-05-23 09:36:52 +01:00
Nicolás Bértolo
60b326ef11 * Workaround the 32768 chars command line limit in Windows.
* lisp/emacs-lisp/comp.el (comp-run-async-workers): Pass the
compilation commands through a temporary file that is loaded by the
child process. This is also done all other operating systems, even
those that support long command lines. It should not be a problem
since libgccjit uses temporary files too.
2020-05-23 09:36:52 +01: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
Andrea Corallo
21aef26a4c * src/comp.c: Aesthetic, GNU style fixes. 2020-05-23 09:00:33 +01: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
Nicolás Bértolo
483cdf7a79 Load libgccjit dynamically in Windows.
* configure.ac: don't add linker flags if compiling on
Windows. Compile dynlib.c if modules or native compilation are
enabled. Always compile comp.c
* lisp/term/w32-win.el: Map 'gccjit to "libgccjit.dll" in
`dynamic-library-alist`.
* src/Makefile.in: Update comments. Update to handle changes in
configure.ac.
* src/comp.c: Add declarations of used libgccjit functions using
DEF_DLL_FN. Add calls to load_gccjit_if_necessary() where necessary.
Add `native-comp-available-p`
* src/comp.h: Remove Fnative_elisp_load. Add syms_of_comp().
* src/emacs.c (main): Always call syms_of_comp()
* src/w32.c (globals_of_w32): Clear Vlibrary_cache when starting
because the libraries loaded when dumping will not be loaded when
starting.
* src/w32fns.c: Add Qgccjit symbol.
2020-05-23 08:02:14 +01: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
Andrea Corallo
0a2ac47909 * src/comp.c: Fix 32bit wide-int.
* src/comp.c (emit_XFIXNUM): Make right shift for MSB_TAG
	arithmetic too to preserve sign bit.
2020-05-22 21:54:02 +01:00
Andrea Corallo
f036ec97ce * src/comp.c: Fix i386 --enable-check-lisp-object-type
* src/comp.c (load_comp_unit): Fix return type, on i386 influence
	parameter passing!
2020-05-22 21:52:19 +01:00
Andrea Corallo
38a9ddbc1c * src/comp.c: Some aesthetic code clean-up.
* src/comp.c (comp_t): Remove 'lisp_X_s' field.
	(emit_coerce): Respect 80 columns limit.
	(emit_rvalue_from_emacs_uint): GNU style, unnecessary brackets.
	(emit_rvalue_from_emacs_int): Likewise.
	(emit_rvalue_from_lisp_word_tag): Likewise.
	(emit_rvalue_from_lisp_word): Likewise.
	(emit_lval_XLI): Remove unused function.
	(emit_lval_XLP): Remove commented out code.
	(define_add1_sub1): Respect 80 columns limit.
	(Fcomp__init_ctxt): Reflect 'lisp_X_s' field removal.
2020-05-22 21:52:11 +01: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
Stefan Kangas
8cc453d788 Second attempt at improving indexing in control.texi
* doc/lispref/control.texi (Processing of Errors): Improve indexing by
adding the word form "handle" in addition to "handling".  With thanks
to Eli Zaretskii.
2020-05-21 04:57:10 +02:00
Ryan C. Thompson
cdec3139b9 lisp/ido.el: Respect completion-auto-help setting
This commit makes ido completion respect the user's setting for
`completion-auto-help' by default.  It does this by defining a wrapper
function `ido-completion-auto-help', which calls `ido-completion-help'
only when `completion-auto-help' is non-nil.

* lisp/ido.el (ido-completion-auto-help): New function.
(ido-cannot-complete-command):
Use it as the new default (bug#41340).
2020-05-21 02:22:26 +03:00
Matthias Meulien
0bfee4b18b Bookmark locations can refer to VC directory buffers (bug#39722)
* etc/NEWS: Document feature.
* lisp/vc/vc-dir.el (vc-dir-mode): Set local bookmark-make-record-function.
(bookmark-make-record-default, bookmark-prop-get, bookmark-default-handler)
(bookmark-get-bookmark-record): Declarations.
(vc-dir-bookmark-make-record): Make record used to bookmark a `vc-dir' buffer.
(vc-dir-bookmark-jump): Provides bookmark-jump behavior for a `vc-dir' buffer.
2020-05-21 01:37:30 +03:00
Alan Third
0eeeedf195 ; * etc/PROBLEMS: Add note about color list issues on macOS.
; Do not merge to master.
2020-05-20 21:25:01 +01:00