Commit graph

144014 commits

Author SHA1 Message Date
Stefan Kangas
ed1730718f Remove specific byte-compiler warnings for cl.el
* lisp/emacs-lisp/bytecomp.el (byte-compile-warning-types)
(byte-compile-warnings, byte-compile-cl-file-p)
(byte-compile-eval, byte-compile-eval-before-compile)
(byte-compile-arglist-warn, byte-compile-find-cl-functions)
(byte-compile-cl-warn, displaying-byte-compile-warnings)
(byte-compile-file-form-require, byte-compile-form): Remove all
specific cl.el warnings, as that library is now obsolete.  The
regular obsoletion warnings are sufficiently discouraging.
* lisp/emacs-lisp/advice.el (ad-compile-function): Don't try to
silence the now removed warning.
* doc/lispref/tips.texi (Coding Conventions):
* doc/misc/cl.texi (Organization): Make recommendation to not use
cl.el and cl-compat.el stronger.
* lisp/obsolete/cl.el: Make alias help say that they are obsolete.
* lisp/obsolete/cl-compat.el (build-klist, safe-idiv)
(pair-with-newsyms): Silence byte-compiler.
2020-12-02 10:19:16 +01:00
Dmitry Gutov
5f45fc7ee2 Improve .gitignore and project-vc-ignores handling
* lisp/progmodes/project.el (project-ignores):
Convert .gitignore entries more faithfully.
(project--vc-list-files): Convert "our" ignore entries to
"proper" globs, which is what Git pathspec requires.
2020-12-02 04:28:35 +02:00
Dmitry Gutov
e19c5d4348 Use project--value-in-dir
* lisp/progmodes/project.el (project-files):
Use 'project--value-in-dir'.  To have any changes in
'project-vc-ignores' take effect immediately.
2020-12-02 01:41:40 +02:00
Juri Linkov
f57a1ca869 Fix documentation of window-in-direction arg MINIBUF (bug#44932)
* doc/lispref/windows.texi (Windows and Frames): Rename MINI arg
of window-in-direction to MINIBUF.  Explain the non-nil non-t value.
2020-12-01 22:33:43 +02:00
Glenn Morris
466d781423 ; Merge from origin/emacs-27
The following commit was skipped:

8e73259093 (origin/emacs-27, emacs-27) ; Auto-commit of loaddefs files.
2020-12-01 07:50:12 -08:00
Glenn Morris
45f0fef718 Merge from origin/emacs-27
749e4b7e0b Reset xref-show-xrefs-function temporarily
3e6525d69f Don't show in 'view-lossage' responses to xterm feature qu...
9fbff9c35c ; * src/buffer.c: Fix comment describing 'buffer_defaults'.
2020-12-01 07:50:12 -08:00
Glenn Morris
23d206b03b ; Merge from origin/emacs-27
The following commit was skipped:

9e0085064b Adapt Tramp versions.  Do not merge
2020-12-01 07:50:12 -08:00
Glenn Morris
6c6d06c3ee Merge from origin/emacs-27
9939c435c1 Return the correct suffix in eww-make-unique-file-name
17fa17be3d Save bookmarks by using `write-file' (bug#12507)
2cdf1fd261 Fix filing messages when 'rmail-output-reset-deleted-flag'...
a72db8ab8b Make file copying in tramp-gvfs more robust
f31cacd1ff Revert "Fix incorrect handling of module runtime and envir...
cdc632fbe6 Fix incorrect handling of module runtime and environment p...
c9160bda78 CC Mode: Fix error in cache handling.  This fixes bug #43481
2020-12-01 07:50:09 -08:00
Michael Albinus
496d1fcd76 * lisp/arc-mode.el (archive-get-descr): Use default mode if needed. 2020-12-01 15:39:38 +01:00
Glenn Morris
7916c9038c ; Auto-commit of loaddefs files. 2020-12-01 06:27:56 -08:00
Glenn Morris
8e73259093 ; Auto-commit of loaddefs files. 2020-12-01 06:12:37 -08:00
Michael Albinus
1a3aa6043a Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs into master 2020-12-01 13:37:27 +01:00
Michael Albinus
ba692b790d Allow Tramp to mirror traces to a file
* doc/misc/tramp.texi (Traces and Profiles): Add `tramp-debug-to-file'.

* lisp/net/tramp-adb.el (tramp-adb-parse-device-names)
(tramp-adb-get-device):
* lisp/net/tramp-cmds.el (tramp-rename-files):
* lisp/net/tramp-gvfs.el (tramp-gvfs-monitor-process-filter)
(tramp-gvfs-handler-volumeadded-volumeremoved)
(tramp-get-media-devices):
* lisp/net/tramp-sh.el (tramp-sh-handle-file-notify-add-watch)
(tramp-sh-gio-monitor-process-filter)
(tramp-sh-gvfs-monitor-dir-process-filter)
(tramp-sh-inotifywait-process-filter, tramp-maybe-send-script)
(tramp-find-inline-encoding):
* lisp/net/tramp-smb.el (tramp-smb-handle-copy-directory)
(tramp-smb-handle-file-acl, tramp-smb-handle-set-file-acl):
Use `tramp-compat-string-replace'.

* lisp/net/tramp-compat.el (tramp-compat-string-replace): New defalias.

* lisp/net/tramp.el (tramp-debug-to-file): New defcustom.
(tramp-get-debug-buffer): Simplify.
(tramp-get-debug-file-name): New defun.
(tramp-debug-message): Write debug file if indicated.
2020-12-01 13:37:03 +01:00
Michael Albinus
3d712d50d6 * etc/NEWS: Add user option 'tramp-debug-to-file'. 2020-12-01 13:36:07 +01:00
Stefan Kangas
ace6eba036 Fix byte-compiler warning for failed uses of lexical vars
* lisp/emacs-lisp/bytecomp.el (byte-compile-form): Fix byte-compiler
warning for failed uses of lexical vars.  (Bug#44980)
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp--define-warning-file-test): Don't prefix tests with
'warn'.
(bytecomp/error-lexical-var-with-add-hook\.el)
(bytecomp/error-lexical-var-with-remove-hook\.el)
(bytecomp/error-lexical-var-with-run-hook-with-args-until-failure\.el)
(bytecomp/error-lexical-var-with-run-hook-with-args-until-success\.el)
(bytecomp/error-lexical-var-with-run-hook-with-args\.el)
(bytecomp/error-lexical-var-with-symbol-value\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-symbol-value.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args-until-success.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-run-hook-with-args-until-failure.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-remove-hook.el:
* test/lisp/emacs-lisp/bytecomp-resources/error-lexical-var-with-add-hook.el:
New files.
2020-12-01 13:35:03 +01:00
Zajcev Evgeny
8a27b0cad7 Fix use of 'switch-to-buffer-preserve-window-point'
* lisp/window.el (switch-to-buffer): Respect buffer local value
of 'switch-to-buffer-preserve-window-point' variable.
2020-12-01 09:33:05 +01:00
Stefan Kangas
4457b9590c Add tests for some byte-compiler warnings
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-warn/warn-interactive-only\.el)
(bytecomp-warn/warn-obsolete-defun\.el)
(bytecomp-warn/warn-obsolete-hook\.el)
(bytecomp-warn/warn-obsolete-variable-same-file\.el)
(bytecomp-warn/warn-obsolete-variable\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/warn-interactive-only.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-defun.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-hook.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-variable-same-file.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-obsolete-variable.el:
New files.
2020-12-01 04:49:10 +01:00
Dmitry Gutov
749e4b7e0b Reset xref-show-xrefs-function temporarily
* lisp/dired-aux.el (dired-do-find-regexp-and-replace):
Make sure xref-show-xrefs-function has the necessary value (bug#44905).
2020-12-01 03:46:27 +02:00
Stefan Kangas
90a543e630 Decrease code duplication in byte-compiler free-vars warning
* lisp/emacs-lisp/bytecomp.el
(byte-compile-free-vars-warn): New defun extracted from...
(byte-compile-variable-ref, byte-compile-variable-set): ...here.
2020-11-30 22:49:52 +01:00
Stefan Kangas
a126c3684f Test byte-compiler free variable warning
* test/lisp/emacs-lisp/bytecomp-tests.el (ert-x): Require.
(bytecomp--define-warning-file-test): New macro.
(bytecomp-warn/warn-free-setq\.el)
(bytecomp-warn/warn-free-variable-reference\.el): New tests.
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-setq.el:
* test/lisp/emacs-lisp/bytecomp-resources/warn-free-variable-reference.el:
New files.
2020-11-30 22:43:37 +01:00
Stefan Kangas
713bac483b * lisp/so-long.el: Doc fix to reduce use of passive voice. 2020-11-30 19:58:07 +01:00
Eli Zaretskii
3e6525d69f Don't show in 'view-lossage' responses to xterm feature queries
* lisp/term/xterm.el (xterm--read-event-for-query): Prevent
recording the characters read as the xterm response to a query,
so as not to show them in 'view-lossage'.  (Bug#44908)
2020-11-30 20:44:11 +02:00
Eli Zaretskii
9fbff9c35c ; * src/buffer.c: Fix comment describing 'buffer_defaults'. 2020-11-30 20:42:06 +02:00
Michael Albinus
31dcc70e55 Some adaptions to tramp-tests.el
* test/lisp/net/tramp-tests.el (tramp-test-vec): Check for remote
`tramp-test-temporary-file-directory'.
(tramp-test11-copy-file, tramp-test12-rename-file):
Do not skip for tramp-gvfs.el.
(tramp--test-sh-p): Use `tramp-test-vec'.
2020-11-30 13:54:29 +01:00
Michael Albinus
84a4dd1358 Adapt Tramp versions
* doc/misc/tramp.texi (Obtaining @value{tramp}):
(Remote shell setup, Remote processes, Archive file names):
* lisp/net/trampver.el (customize-package-emacs-version-alist):
Adapt Tramp versions.
2020-11-30 13:44:44 +01:00
Michael Albinus
9e0085064b Adapt Tramp versions. Do not merge
* doc/misc/tramp.texi (Obtaining @value{tramp})
(Remote shell setup, Remote processes, Archive file names):
* doc/misc/trampver.texi:
* lisp/net/tramp.el:
* lisp/net/trampver.el (tramp-version)
(customize-package-emacs-version-alist): Adapt Tramp versions.
2020-11-30 13:19:19 +01:00
Dmitry Gutov
fa2c942176 Improve docstrings
* lisp/progmodes/project.el (project-find-file)
(project-or-external-find-file): More accurate docstrings (bug#44588).
2020-11-30 03:33:14 +02:00
Philipp Stephani
41c338474d Fix double-free bug when finalizing module runtimes.
* src/emacs-module.c (finalize_runtime_unwind): Don't finalize initial
environment twice.

* test/src/emacs-module-resources/mod-test.c (emacs_module_init):
Allocate lots of values during module initialization to trigger the
bug.
2020-11-29 21:13:02 +01:00
Juri Linkov
367727b0f6 * lisp/simple.el (read-from-kill-ring): Call current-kill to prefill kill-ring 2020-11-29 21:54:53 +02:00
Juri Linkov
6355fa5183 Fix MINIBUF 'nomini' arg for windmove/window-in-direction (bug#44932)
* lisp/windmove.el (windmove-display-in-direction)
(windmove-delete-in-direction, windmove-swap-states-in-direction):
Add 'nomini' as MINIBUF arg of window-in-direction.

* lisp/window.el (window-in-direction): Rename arg MINI to MINIBUF.
Update docstring from walk-window-tree.
Send MINIBUF arg to walk-window-tree unchanged.
2020-11-29 21:48:01 +02:00
Alan Third
a91ca6560c Allow doprint to handle multibyte chars in format (bug#44349)
* src/doprnt.c (doprnt): Handle the case where fmtchar is the start of
a multibyte character.
2020-11-29 17:33:34 +00: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
Akira Kyle
9939c435c1 Return the correct suffix in eww-make-unique-file-name
* lisp/net/eww.el (eww-make-unique-file-name): Return the correct
suffix (bug#44936).
2020-11-29 11:40:59 +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
Karl Fogel
17fa17be3d Save bookmarks by using `write-file' (bug#12507)
Go back to using `write-file' to save bookmarks, instead of using
`write-region'.  This means numbered backups of the bookmark file may
get made again, depending on the value of `bookmark-version-control'.

Thanks especially to Drew Adams and Eli Zaretskii for their
persistence in tracking down information relevant to this change.
2020-11-28 18:17:46 -06:00
Eli Zaretskii
2cdf1fd261 Fix filing messages when 'rmail-output-reset-deleted-flag' is non-nil
* lisp/mail/rmailout.el (rmail-output): Fix off-by-one error in
deciding when to advance to the next message under non-nil
'rmail-output-reset-deleted-flag'.  (Bug#44839)
2020-11-28 19:05:18 +02: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
Michael Albinus
a72db8ab8b Make file copying in tramp-gvfs more robust
* test/lisp/net/tramp-tests.el (tramp-test11-copy-file)
(tramp-test12-rename-file): Do not skip for tramp-gvfs.el.

* lisp/net/tramp-gvfs.el (tramp-gvfs-do-copy-or-rename-file):
Add sanity checks.
2020-11-28 12:31:43 +01:00
Mattias Engdegård
bd996a9a24 * etc/tutorials/TUTORIAL.sv: General copy-editing. 2020-11-28 12:28:45 +01:00
Eli Zaretskii
f31cacd1ff Revert "Fix incorrect handling of module runtime and environment pointers."
This reverts commit cdc632fbe6.
Those changes are too significant and non-trivial to be
suitable for a release branch at this time.
2020-11-28 09:21:33 +02:00
Philipp Stephani
cdc632fbe6 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.

Instead, turn Vmodule_runtimes and Vmodule_environments into
hashtables keyed by the thread objects.  The fix is relatively
localized and should therefore be safe enough for the release branch.

Module assertions now have to walk the pointer list for the current
thread, which is more correct since they now only find environments
for the current thread.

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/emacs-module.c (Fmodule_load, initialize_environment)
(finalize_environment, finalize_runtime_unwind): Store runtime and
environment pointers in per-thread lists.
(syms_of_module): Initialize runtimes and environments hashtables.
(module_assert_runtime, module_assert_env, value_to_lisp): Consider
only objects for the current thread.
(module_gc_hash_table_size, module_hash_push, module_hash_pop): New
generic hashtable helper functions.
(module_objects, module_push_pointer, module_pop_pointer): New helper
functions to main thread-specific lists of runtime and environment
pointers.
(mark_modules): Mark all environments in all threads.

* 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 21:44:05 +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