1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-15 10:30:25 -08:00
Commit graph

145237 commits

Author SHA1 Message Date
Andrea Corallo
21104e6808 Fix comp-mvar-symbol-p' and comp-mvar-cons-p' (bug#44968)
* lisp/emacs-lisp/comp.el (comp-mvar-symbol-p): As all slots into
	a `comp-cstr' are in or fix this logic.
	(comp-mvar-cons-p): Likewise.
	* test/src/comp-tests.el (bug-44968): New testcase.
	* test/src/comp-test-funcs.el (comp-test-44968-f): New test
	function.
2020-12-01 00:09:46 +01:00
Andrea Corallo
6523b84015 Merge remote-tracking branch 'savannah/master' into HEAD 2020-11-29 15:11:38 +01:00
Protesilaos Stavrou
38ed05f49f Make log-view-commit-body less intrusive
* lisp/vc/log-view.el (log-view-commit-body): Inherit from
font-lock-comment-face.  This makes expanded commit messages in
log-view look the same as they did prior to commit 1f0b929430 (consult
bug#44424) (bug#44937).
2020-11-29 11:43:38 +01:00
Lars Ingebrigtsen
bb0e6fb886 frame-position doc string clarificaton
* src/frame.c (Fframe_position): Mention that the values are
system-dependent (bug#32977).
2020-11-29 11:10:42 +01:00
Lars Ingebrigtsen
70c8ed55fd garbage-collect doc string clarification
* src/alloc.c (Fgarbage_collect): Mention that calling this
function is not guaranteed to collect all the garbage (bug#34404).
2020-11-29 11:05:10 +01:00
Lars Ingebrigtsen
c8f3e95ae6 Tweak eww-use-browse-url doc string
* lisp/net/eww.el (eww-use-browse-url): Tweak doc string wording.
2020-11-29 10:54:58 +01:00
Lele Gaifax
769dc33df7 Update TUTORIAL.it
* etc/tutorials/TUTORIAL.it: Follow changes made to TUTORIAL in the
last year
2020-11-28 13:36:54 +01:00
Mattias Engdegård
bd996a9a24 * etc/tutorials/TUTORIAL.sv: General copy-editing. 2020-11-28 12:28:45 +01:00
Andrea Corallo
2e0256e0a0 Add intersection support into comp-cstr.el 2020-11-27 23:30:02 +01:00
Andrea Corallo
e2ff5d9605 * Synthesize as const primitive function pointers and its container struct.
* src/comp.c (declare_imported_func): Make const function pointer
	to primitive funcions.
	(emit_ctxt_code): Make struct 'comp.func_relocs' const.
2020-11-27 22:59:50 +01:00
Mattias Engdegård
a7825c4be0 Use correct glyph in title when resizing NS frames
* src/nsterm.m ([EmacsView windowWillResize:toSize:]): Use ×, not x.
2020-11-27 21:17:58 +01:00
Philipp Stephani
23974cfa48 Fix incorrect handling of module runtime and environment pointers.
We used to store module runtime and environment pointers in the static
lists Vmodule_runtimes and Vmodule_environments.  However, this is
incorrect because these objects have to be kept per-thread.  With this
naive approach, interleaving module function calls in separate threads
leads to environments being removed in the wrong order, which in turn
can cause local module values to be incorrectly garbage-collected.
The fix isn't completely trivial: specbinding the lists wouldn't work
either, because then the garbage collector wouldn't find the
environments in other threads than the current ones, again leading to
objects being garbage-collected incorrectly.  While introducing custom
pseudovector types would fix this, it's simpler to put the runtime and
environment pointers into the specbinding list as new specbinding
kinds.  This works since we need to unwind them anyway, and we only
ever treat the lists as a stack.  The thread switching machinery
ensures that the specbinding lists are thread-local, and that all
elements of the specbinding lists in all threads are marked during
garbage collection.

Module assertions now have to walk the specbinding list for the
current thread, which is more correct since they now only find
environments for the current thread.  As a result, we can now remove
the faulty Vmodule_runtimes and Vmodule_environments variables
entirely.

Also add a unit test that exemplifies the problem.  It interleaves two
module calls in two threads so that the first call ends while the
second one is still active.  Without this change, this test triggers
an assertion failure.

* src/lisp.h (enum specbind_tag): Add new tags for module runtimes and
environments.

* src/eval.c (record_unwind_protect_module): New function to record a
module object in the specpdl list.
(do_one_unbind): Unwind module objects.
(backtrace_eval_unrewind, default_toplevel_binding, lexbound_p)
(Fbacktrace__locals): Deal with new specbinding types.
(mark_specpdl): Mark module environments as needed.

* src/alloc.c (garbage_collect): Remove call to 'mark-modules'.
Garbage collection of module values is now handled as part of marking
the specpdl of each thread.

* src/emacs-module.c (Fmodule_load, funcall_module): Use specpdl to
record module runtimes and environments.
(module_assert_runtime, module_assert_env, value_to_lisp): Walk
through specpdl list instead of list variables.
(mark_module_environment): Rename from 'mark_modules'.  Don't attempt
to walk though current thread's environments only, since that would
miss other threads.
(initialize_environment, finalize_environment): Don't change
Vmodule_environments variable; environments are now in the specpdl
list.
(finalize_environment_unwind, finalize_runtime_unwind): Make 'extern'
since do_one_unbind now calls them.
(finalize_runtime_unwind): Don't change Vmodule_runtimes variable;
runtimes are now in the specpdl list.
(syms_of_module): Remove Vmodule_runtimes and Vmodule_environments.

* test/data/emacs-module/mod-test.c (Fmod_test_funcall): New test
function.
(emacs_module_init): Bind it.

* test/src/emacs-module-tests.el (emacs-module-tests--variable): New
helper type to guard access to state in a thread-safe way.
(emacs-module-tests--wait-for-variable)
(emacs-module-tests--change-variable): New helper functions.
(emacs-module-tests/interleaved-threads): New unit test.
2020-11-27 20:15:33 +01:00
Philipp Stephani
e742368920 ; * src/lisp.h (enum specbind_tag): Fix typo. 2020-11-27 20:04:20 +01:00
Stefan Monnier
1f633311c1 * lisp/subr.el (activate-change-group): Refine fix for bug#33341 2020-11-27 10:19:21 -05:00
Mattias Engdegård
8ebf041d5f Make the 'cucumber' compilation pattern work without 'omake'
When 'omake' is included in compilation-error-regexp-alist, which it
still is by default, then all other rules are modified to match with
an extra leading 6 spaces as well. The 'cucumber' pattern relied on
this in order to work as intended.

* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Extend the 'cucumber' pattern so that it works even when 'omake'
is not included.  Move it below the 'gnu' rule so that it doesn't
match anything else.
2020-11-27 16:17:19 +01:00
Mattias Engdegård
48c747e7a8 Update TUTORIAL.de and TUTORIAL.fr
* etc/tutorials/TUTORIAL.de:
* etc/tutorials/TUTORIAL.fr: Follow recent changes in TUTORIAL.
2020-11-27 15:58:59 +01:00
Stefan Monnier
66eeaaa488 * lisp/subr.el (activate-change-group): Fix bug#33341 2020-11-27 09:43:56 -05:00
Stefan Kangas
2b14b7e6dc Update TUTORIAL.es
* etc/tutorials/TUTORIAL.es: A followup to recent changes in
TUTORIAL.
2020-11-27 10:39:20 +01:00
Stefan Kangas
5dba35632b Update TUTORIAL.sv
* etc/tutorials/TUTORIAL.sv: A followup to recent changes in
TUTORIAL.  Minor tweaks for grammar and style.
2020-11-27 10:39:20 +01:00
Juri Linkov
13e032bab3 Add completion-tab-width to align prefix chars with names in read-char-by-name
* lisp/international/mule-cmds.el (mule--ucs-names-affixation):
Replace mule--ucs-names-annotation to display chars in prefixes
that implements two FIXME items.
(read-char-by-name): Let-bind completion-tab-width to 4.
Use affixation-function instead of annotation-function.

* lisp/minibuffer.el (completion-tab-width): New variable.
(completion--insert-strings): Align colwidth to tab positions
when completion-tab-width is non-nil.

* lisp/simple.el (completion-setup-function): Set tab-width to
completion-tab-width when completion-tab-width is non-nil.

https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg01263.html
2020-11-27 11:17:12 +02:00
Juri Linkov
597a49b2e2 * lisp/simple.el (read-from-kill-ring): Use frame-text-cols, not frame-width. 2020-11-27 11:00:43 +02:00
Eli Zaretskii
2dd1c2d4ba Update TUTORIAL.he
* etc/tutorials/TUTORIAL.he: A followup to recent changes in
TUTORIAL.
2020-11-27 10:50:15 +02:00
Lars Ingebrigtsen
289a04cdda Fix up previous server exit directory deletion
* lisp/server.el (server-start): Only delete the server directory
if it's in /tmp (bug#44644).
2020-11-27 09:23:53 +01:00
Andrea Corallo
949b49cf77 Move some tests from comp-tests.el to comp-cstr-tests.el
* test/lisp/emacs-lisp/comp-cstr-tests.el
	(comp-cstr-typespec-tests-alist): Add tests covering what was in:
	`range-simple-union', `union-types', `destructure-type-spec'.
	* test/src/comp-tests.el (range-simple-intersection, union-types)
	(destructure-type-spec): Remove tests.
2020-11-26 22:03:22 +01:00
Andrea Corallo
23c082638e Add comp-cstr.el and comp-cstr-tests.el
As the constraint logic of the compiler is not trivial and largely
independent from the rest of the code move it into comp-cstr.el to
ease separation and maintainability.

This commit improve the conversion type
specifier -> constraint for generality.

Lastly this should help with bootstrap time as comp.el compilation
unit is slimmed down.

	* lisp/emacs-lisp/comp-cstr.el: New file.
	(comp--typeof-types, comp--all-builtin-types): Move from comp.el.
	(comp-cstr, comp-cstr-f): Same + rename.
	(comp-cstr-ctxt): New struct.
	(comp-supertypes, comp-common-supertype-2)
	(comp-common-supertype, comp-subtype-p, comp-union-typesets)
	(comp-range-1+, comp-range-1-, comp-range-<, comp-range-union)
	(comp-range-intersection): Move from comp.el.
	(comp-cstr-union-no-range, comp-cstr-union): Move from comp.el and
	rename.
	(comp-cstr-union-make): New function.
	(comp-type-spec-to-cstr, comp-cstr-to-type-spec): Move from
	comp.el, rename it and rework it.

	* lisp/emacs-lisp/comp.el (comp-known-func-cstr-h): Rework.
	(comp-ctxt): Remove two fields and include `comp-cstr-ctxt'.
	(comp-mvar, comp-fwprop-call): Update for `comp-cstr' being
	renamed.
	(comp-fwprop-insn): Use `comp-cstr-union-no-range' or
	`comp-cstr-union'.
	(comp-ret-type-spec): Use `comp-cstr-union' and rework.

	* test/lisp/emacs-lisp/comp-cstr-tests.el: New file.
	(comp-cstr-test-ts, comp-cstr-typespec-test): New functions.
	(comp-cstr-typespec-tests-alist): New defconst to generate tests
	on.
	(comp-cstr-generate-tests): New macro.

	* test/src/comp-tests.el (comp-tests-type-spec-tests): Update.
	(ret-type-spec): Initialize constraint context.
2020-11-26 22:02:30 +01:00
Dario Gjorgjevski
e3d8f4b98f Fix modification check when custom-form is `lisp'
* lisp/cus-edit.el (custom-variable-modified-p): Quote the value when
custom form is 'lisp (or 'mismatch) prior to comparing in order to
accommodate `custom-variable-value-create' (bug#44852).
2020-11-26 20:09:28 +01:00
Mattias Engdegård
771bd26b77 Remove keyboard anachronisms from tutorial
* etc/tutorials/TUTORIAL: Don't keep referring to EDIT as if it were a
common name for the Meta key; since a few decades back it's labelled
Alt (or Option or ⌥ but those keys usually also have 'alt' engraved on
them).  Similarly, CTL is practically extinct and not worth
mentioning.
2020-11-26 17:17:00 +01:00
Mattias Engdegård
558b6dbca7 Fix replace-regexp-in-string substring match data translation
For certain patterns, re-matching the same regexp on the matched
substring does not produce correctly translated match data
(bug#15107 and bug#44861).

Using a new builtin function also improves performance since the
number of calls to string-match is halved.

Reported by Kevin Ryde and Shigeru Fukaya.

* lisp/subr.el (replace-regexp-in-string): Translate the match data
using match-data--translate instead of trusting a call to string-match
on the matched string to do the job.
* test/lisp/subr-tests.el (subr-replace-regexp-in-string):
Add test cases.
* src/search.c (Fmatch_data__translate): New internal function.
(syms_of_search): Register it as a subroutine.
2020-11-26 14:20:13 +01:00
Lars Ingebrigtsen
0287c51768 Keep point in the *eldoc* buffer in eldoc-display-in-echo-area
* lisp/emacs-lisp/eldoc.el (eldoc-display-in-echo-area): Use
'save-excursion' to keep point position in *eldoc* buffer.
Suggested by Andrii Kolomoiets <andreyk.mad@gmail.com>.
2020-11-26 11:24:20 +01:00
Lars Ingebrigtsen
d23723cfb2 Allow following symlinks when recompiling directories
* doc/lispref/compile.texi (Compilation Functions): Document it.
* lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Allow
following symlinks (bug#10292).
2020-11-26 11:00:35 +01:00
Stefan Kangas
9c72666fea ; * etc/NEWS: Add some missing documentation markers. 2020-11-26 07:02:36 +01:00
Stefan Kangas
82e4b826fb * lisp/files.el (auto-mode-alist): Add entry for "archive-contents". 2020-11-26 06:37:37 +01:00
Eric Abrahamsen
61f1eb99b0 Add "replied" -> "answered" for gnus-search imap searches
* lisp/gnus/gnus-search.el (gnus-search-imap-handle-flag): This allows
"mark:A" to be translated into "ANSWERED" and "-mark:A" to be
translated into "UNANSWERED".
2020-11-25 15:27:54 -08:00
Eric Abrahamsen
11bef9693a Assume default imap TEXT search even when not using parsed queries
This behavior both better matches the previous nnir behavior, reducing
confusion for new users, and matches behavior when using parsed
queries.

* lisp/gnus/gnus-search.el (gnus-search-imap-search-keys): Make sure
this variable contains all known IMAP search keys.
(gnus-search-run-search): If the search query doesn't start with a
known search key, prepend "TEXT " to the query.
2020-11-25 15:06:55 -08:00
Michael Albinus
67a8bdb90c Use null-device where appropriate
* lisp/filesets.el (filesets-select-command):
* lisp/shell.el (shell-mode):
* lisp/term.el (term-exec-1):
* lisp/wdired.el (wdired-do-symlink-changes):
* lisp/cedet/ede/pmake.el (ede-proj-makefile-create):
* lisp/eshell/esh-io.el (eshell-set-output-handle):
* lisp/gnus/gnus-fun.el (gnus-grab-cam-x-face):
* lisp/gnus/mml2015.el (mml2015-epg-key-image):
* lisp/gnus/smime.el (smime-noverify-region):
* lisp/org/ob-picolisp.el (org-babel-execute:picolisp):
* lisp/org/ob-screen.el (org-babel-prep-session:screen)
(org-babel-prep-session:screen):
* lisp/play/fortune.el (fortune-quiet-strfile-options):
* lisp/progmodes/cperl-mode.el (cperl-pod2man-build-command):
* lisp/progmodes/sh-script.el (sh-tmp-file):
* lisp/vc/diff-mode.el (diff-add-log-current-defuns)
(diff--font-lock-prettify):
* lisp/vc/ediff-mult.el (ediff-patch-file-form-meta):
* lisp/vc/ediff-ptch.el (ediff-map-patch-buffer)
(ediff-fixup-patch-map, ediff-dispatch-file-patching-job):
* lisp/vc/vc.el (vc-diff-internal): Use null-device or 	(null-device),
respectively.  (Bug#3736)
2020-11-25 22:13:33 +01:00
Juri Linkov
b5e34c34bc * lisp/minibuffer.el (completions-format): Add new value 'one-column'.
* lisp/minibuffer.el (completion--insert-strings): Support 'one-column'.

* lisp/simple.el (read-from-kill-ring): Truncate strings at frame-width.
2020-11-25 22:24:11 +02:00
Stefan Monnier
1eb168fa97 (defvar): Detect defining a variable currently lexically bound
* src/eval.c (lexbound_p): New function.
(Finternal__define_uninitialized_variable): Use it.
2020-11-25 14:49:55 -05:00
Mattias Engdegård
d148d0259a Add tests for replace-regexp-in-string
* test/lisp/subr-tests.el (subr-replace-regexp-in-string): New.
2020-11-25 13:57:16 +01:00
Mattias Engdegård
be53fe0263 * doc/lispref/searching.texi (Rx Constructs): Group numbering fix 2020-11-25 13:57:16 +01:00
Michael Albinus
20f9645898 * test/lisp/net/tramp-tests.el (tramp-test29-start-file-process):
Use `tramp--test-windows-nt-p'.
2020-11-25 12:24:08 +01:00
Michael Albinus
e45ad6b08e Merge from origin/emacs-27
6442cdc0e4 Revert extra focus redirection in do_switch_frame (Bug#24803)
fc4379f1ae Minor cleanup of tramp-tests.el on MS Windows
dea3d6aa18 Fix handling of defcustom :local tag
2020-11-25 12:18:23 +01:00
Michael Albinus
fe5ffb7366 ; Merge from origin/emacs-27
The following commit was skipped:

b2ee665024 CC Mode.  Fix an off by one error.  Fixes bug #41809
2020-11-25 11:49:54 +01:00
Michael Albinus
ba004ac7dd Merge from origin/emacs-27
f425a774c2 Fix display artifacts when 'display' properties cover newl...
2020-11-25 11:49:54 +01:00
Martin Rudalics
6442cdc0e4 Revert extra focus redirection in do_switch_frame (Bug#24803)
* src/frame.c (do_switch_frame): Do not also redirect frame
focus when FRAME has its minibuffer window on the selected
frame which was intended to fix Bug#24500.  It may cause
Bug#24803 and lead to a nasty state where no active cursor is
shown on any frame, see
https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg01137.html.
2020-11-25 09:58:21 +01:00
Juri Linkov
3b740591b0 Add 'completions-detailed' to add prefix/suffix with 'affixation-function'
* doc/lispref/minibuf.texi (Completion Variables)
(Programmed Completion): Add affixation-function.

* lisp/help-fns.el (help--symbol-completion-table-affixation): New function.
(help--symbol-completion-table): Set affixation-function when
completions-detailed is non-nil.

* lisp/minibuffer.el (completion-metadata): Add affixation-function
to docstring.
(completions-annotations): Inherit from shadow with italic.
(completions-detailed): New defcustom.
(completion--insert-strings): Count string-width on all strings in
completion list.  Insert prefix and suffix.
(completion-extra-properties): Add affixation-function to docstring.
(minibuffer-completion-help): Call affixation-function.
(minibuffer-default-prompt-format): Move down closer to its use.

https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg00613.html
2020-11-25 10:46:59 +02:00
Michael Albinus
fc4379f1ae Minor cleanup of tramp-tests.el on MS Windows
* test/lisp/net/tramp-tests.el (tramp-test29-start-file-process):
Do not test remote pty on MS Windows.
2020-11-25 09:41:11 +01:00
Lars Ingebrigtsen
d7a580c7eb Move code in face-remap.el to avoid a compilation warning
* lisp/face-remap.el (text-scale--refresh): Move code to avoid
compilation warning.

In text-scale--refresh:
face-remap.el:241:14: Warning: reference to free variable ‘text-scale-mode’
2020-11-25 06:29:10 +01:00
Stefan Kangas
30c437752d Make text-scale-mode optionally adjust the header line
* lisp/face-remap.el
(text-scale-remap-header-line-face): New buffer local variable.
(text-scale-mode): Adjust header line if above variable is non-nil.
(face-remap--clear-remappings, face-remap--remap-face): New defuns.
* lisp/face-remap.el: Arrange to watch text-scale-mode-remapping.
(text-scale--refresh): New function.

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode): Use
text-scale-remap-header-line.  (Bug#41852)
2020-11-25 03:03:48 +01:00
Juri Linkov
83b5fcb001 Yank items selected from kill-ring using completion and minibuffer history
* doc/emacs/killing.texi (Earlier Kills): Document standalone M-y.

* doc/emacs/search.texi (Isearch Yank): Explain standalone M-y.

* doc/lispref/text.texi (Yank Commands): Soften the wording of
yank after another yank.

* lisp/delsel.el: Put 'yank' property on yank-pop and yank-from-kill-ring.

* lisp/isearch.el (isearch-yank-pop): Use with-isearch-suspended
and read-from-kill-ring to read a string from the kill-ring and
append it to the search string.

* lisp/simple.el (yank-pop): Call yank-from-kill-ring and
read-from-kill-ring when last-command is not 'yank' instead of
signaling an error.  Remove "*" from interactive spec.  Update docstring.
(read-from-kill-ring): New function.
(yank-from-kill-ring): New command.

https://lists.gnu.org/archive/html/emacs-devel/2020-11/msg00801.html
2020-11-24 21:23:41 +02:00
Stefan Kangas
2490ba0eb0 * build-aux/update-subdirs: Use lexical-binding in subdirs.el. 2020-11-24 20:09:04 +01:00