commit e11e6d0bbe5aa579e9723b1eab3e0c1abb08a9cd (HEAD, refs/remotes/origin/master) Merge: cb3d92da82d 73a58329a69 Author: Po Lu Date: Mon Jun 24 12:05:18 2024 +0800 Merge from savannah/emacs-30 73a58329a69 Fix omission of updates to child frames on Android commit 73a58329a6946f5abc62fee2647efba56cce236b Author: Po Lu Date: Mon Jun 24 12:04:05 2024 +0800 Fix omission of updates to child frames on Android * java/org/gnu/emacs/EmacsView.java (onAttachedFromWindow): Force a layout cycle rather than report exposure immediately. (prepareForLayout): Delete function. * java/org/gnu/emacs/EmacsWindow.java (mapWindow): Remove redundant calls to prepareForLayout. * src/androidterm.c (handle_one_android_event): Do not swap buffers when exposure is registered by a frame only partially updated. diff --git a/java/org/gnu/emacs/EmacsView.java b/java/org/gnu/emacs/EmacsView.java index 82792c3fcca..1c06d394817 100644 --- a/java/org/gnu/emacs/EmacsView.java +++ b/java/org/gnu/emacs/EmacsView.java @@ -267,13 +267,6 @@ public final class EmacsView extends ViewGroup return canvas; } - public synchronized void - prepareForLayout (int wantedWidth, int wantedHeight) - { - measuredWidth = wantedWidth; - measuredHeight = wantedWidth; - } - @Override protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec) @@ -773,23 +766,30 @@ else if (child.getVisibility () != GONE) /* Collect the bitmap storage; it could be large. */ Runtime.getRuntime ().gc (); - super.onDetachedFromWindow (); } @Override - public synchronized void + public void onAttachedToWindow () { - isAttachedToWindow = true; - - /* Dirty the bitmap, as it was destroyed when onDetachedFromWindow - was called. */ - bitmapDirty = true; + synchronized (this) + { + isAttachedToWindow = true; + + /* Dirty the bitmap, as it was destroyed when + onDetachedFromWindow was called. */ + bitmapDirty = true; + + /* Rather than unconditionally generating an exposure event upon + window attachment, avoid delivering successive Exposure + events if the size of the window has changed but is still to + be reported by clearing the measured width and height, and + requesting another layout computation. */ + measuredWidth = measuredHeight = 0; + } - /* Now expose the view contents again. */ - EmacsNative.sendExpose (this.window.handle, 0, 0, - measuredWidth, measuredHeight); + requestLayout (); super.onAttachedToWindow (); } diff --git a/java/org/gnu/emacs/EmacsWindow.java b/java/org/gnu/emacs/EmacsWindow.java index 342190113b7..0a4d04971e7 100644 --- a/java/org/gnu/emacs/EmacsWindow.java +++ b/java/org/gnu/emacs/EmacsWindow.java @@ -492,7 +492,6 @@ private static class Coordinate /* Attach the view. */ try { - view.prepareForLayout (width, height); windowManager.addView (view, params); /* Record the window manager being used in the @@ -517,11 +516,6 @@ private static class Coordinate public void run () { - /* Prior to mapping the view, set its measuredWidth and - measuredHeight to some reasonable value, in order to - avoid excessive bitmap dirtying. */ - - view.prepareForLayout (width, height); view.setVisibility (View.VISIBLE); if (!getDontFocusOnMap ()) diff --git a/src/androidterm.c b/src/androidterm.c index 837cc50bfa1..4561f2d1df3 100644 --- a/src/androidterm.c +++ b/src/androidterm.c @@ -1279,7 +1279,12 @@ handle_one_android_event (struct android_display_info *dpyinfo, { expose_frame (f, event->xexpose.x, event->xexpose.y, event->xexpose.width, event->xexpose.height); - show_back_buffer (f); + + /* Do not display the back buffer if F is yet being + updated, as this might trigger premature bitmap + reconfiguration. */ + if (FRAME_ANDROID_COMPLETE_P (f)) + show_back_buffer (f); } } commit cb3d92da82d11967d728ddb1a0b5c2e8ca618e90 Merge: 1d8d9a9d15d 0edacf2aa7e Author: Po Lu Date: Mon Jun 24 09:43:16 2024 +0800 Merge from savannah/emacs-30 0edacf2aa7e Add jsdoc support to js-ts-mode cace0cbee93 ; Restore inadvertently removed line. 2b04effb13d ; * test/lisp/net/shr-tests.el (shr-test--rendering-check... 6619aec6bca ; Don't run new 'shr-test/zoom-image' when built without ... 5d19bfda321 ; * admin/release-branch.txt: Update and fix typo. fb11294d415 ; Fix typos commit 1d8d9a9d15dffec6745ede03eb27c3983ecc934d Merge: 9688fd6eb1d d9bd1718f9a Author: Po Lu Date: Mon Jun 24 09:43:16 2024 +0800 ; Merge from savannah/emacs-30 The following commits were skipped: d9bd1718f9a Backport: Minor changes in tramp-tests.el 1728de5a776 Backport: Tramp: Fix bug#71709, and other minor changes commit 0edacf2aa7e53d0cec95bcaae4cd19e5389b70f8 Author: Damien Cassou Date: Fri Jun 14 10:46:42 2024 +0200 Add jsdoc support to js-ts-mode * lisp/progmodes/js.el (js--treesit-font-lock-settings): Add jsdoc font-lock settings. (js--treesit-jsdoc-beginning-regexp): New variable to match the beginning of a jsdoc block. (js-ts-mode): Add jsdoc support. Save the 'javascript parser to `treesit-primary-parser'. Configure `treesit-range-settings' to use a jsdoc parser within a JavaScript file. (js-ts-language-at-point): New function to return either 'jsdoc or 'javascript depending on where the point is. diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index f5629ff8fbe..529b31669ed 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -3634,7 +3634,32 @@ Check if a node type is available, then return the right indent rules." :language 'javascript :feature 'escape-sequence :override t - '((escape_sequence) @font-lock-escape-face)) + '((escape_sequence) @font-lock-escape-face) + + :language 'jsdoc + :override t + :feature 'keyword + '((tag_name) @font-lock-keyword-face) + + :language 'jsdoc + :override t + :feature 'bracket + '((["{" "}"]) @font-lock-bracket-face) + + :language 'jsdoc + :override t + :feature 'property + '((type) @font-lock-variable-use-face) + + :language 'jsdoc + :override t + :feature 'definition + '((identifier) @font-lock-variable-name-face) + + :language 'jsdoc + :override t + :feature 'comment + '((description) @font-lock-comment-face)) "Tree-sitter font-lock settings.") (defun js--fontify-template-string (node override start end &rest _) @@ -3857,6 +3882,9 @@ See `treesit-thing-settings' for more information.") "Nodes that designate sexps in JavaScript. See `treesit-thing-settings' for more information.") +(defvar js--treesit-jsdoc-beginning-regexp (rx bos "/**") + "Regular expression matching the beginning of a jsdoc block comment.") + ;;;###autoload (define-derived-mode js-ts-mode js-base-mode "JavaScript" "Major mode for editing JavaScript. @@ -3882,7 +3910,8 @@ See `treesit-thing-settings' for more information.") (setq-local syntax-propertize-function #'js-ts--syntax-propertize) ;; Tree-sitter setup. - (treesit-parser-create 'javascript) + (setq-local treesit-primary-parser (treesit-parser-create 'javascript)) + ;; Indent. (setq-local treesit-simple-indent-rules js--treesit-indent-rules) ;; Navigation. @@ -3909,6 +3938,16 @@ See `treesit-thing-settings' for more information.") ( assignment constant escape-sequence jsx number pattern string-interpolation) ( bracket delimiter function operator property))) + + (when (treesit-ready-p 'jsdoc t) + (setq-local treesit-range-settings + (treesit-range-rules + :embed 'jsdoc + :host 'javascript + `(((comment) @capture (:match ,js--treesit-jsdoc-beginning-regexp @capture)))))) + + (setq-local treesit-language-at-point-function #'js-ts-language-at-point) + ;; Imenu (setq-local treesit-simple-imenu-settings `(("Function" "\\`function_declaration\\'" nil nil) @@ -3950,6 +3989,17 @@ See `treesit-thing-settings' for more information.") (put-text-property ns (1+ ns) 'syntax-table syntax) (put-text-property (1- ne) ne 'syntax-table syntax))))) +(defun js-ts-language-at-point (point) + "Return the language at POINT." + (let ((node (treesit-node-at point 'javascript))) + (if (and (treesit-ready-p 'jsdoc) + (equal (treesit-node-type node) "comment") + (string-match-p + js--treesit-jsdoc-beginning-regexp + (treesit-node-text node))) + 'jsdoc + 'javascript))) + ;;;###autoload (define-derived-mode js-json-mode prog-mode "JSON" :syntax-table js-mode-syntax-table commit cace0cbee93f2a7f70a14a8445abcd176d3b3af2 Author: Eli Zaretskii Date: Sun Jun 23 22:22:12 2024 +0300 ; Restore inadvertently removed line. diff --git a/test/lisp/net/shr-tests.el b/test/lisp/net/shr-tests.el index 54e1ac46ba5..4864fc488e2 100644 --- a/test/lisp/net/shr-tests.el +++ b/test/lisp/net/shr-tests.el @@ -156,6 +156,7 @@ settings, then once more for each (OPTION . VALUE) pair.") (shr-width 80) (shr-use-fonts nil) (shr-image-animate nil) + (inhibit-message t) (dom (libxml-parse-html-region (point-min) (point-max)))) ;; Render the document. (erase-buffer) commit 2b04effb13d2082358aed3a789cddc124dd7c4f2 Author: Eli Zaretskii Date: Sun Jun 23 22:17:37 2024 +0300 ; * test/lisp/net/shr-tests.el (shr-test--rendering-check): Use UTF-8. diff --git a/test/lisp/net/shr-tests.el b/test/lisp/net/shr-tests.el index f9fdb5eb5d3..54e1ac46ba5 100644 --- a/test/lisp/net/shr-tests.el +++ b/test/lisp/net/shr-tests.el @@ -51,7 +51,8 @@ Raise a test failure if the rendered buffer does not match NAME.txt. Append CONTEXT to the failure data, if non-nil." (let ((text-file (file-name-concat (ert-resource-directory) (concat name ".txt"))) (html-file (file-name-concat (ert-resource-directory) (concat name ".html"))) - (description (if context (format "%s (%s)" name context) name))) + (description (if context (format "%s (%s)" name context) name)) + (coding-system-for-read 'utf-8)) (with-temp-buffer (insert-file-contents html-file) (let ((dom (libxml-parse-html-region (point-min) (point-max))) @@ -155,7 +156,6 @@ settings, then once more for each (OPTION . VALUE) pair.") (shr-width 80) (shr-use-fonts nil) (shr-image-animate nil) - (inhibit-message t) (dom (libxml-parse-html-region (point-min) (point-max)))) ;; Render the document. (erase-buffer) commit 6619aec6bca6d682be9a995f417e65bb0849d593 Author: Jim Porter Date: Sun Jun 23 11:40:30 2024 -0700 ; Don't run new 'shr-test/zoom-image' when built without image support * test/lisp/net/shr-tests.el (shr-test/zoom-image): Skip when 'image-types' is unbound. diff --git a/test/lisp/net/shr-tests.el b/test/lisp/net/shr-tests.el index b6552674b27..f9fdb5eb5d3 100644 --- a/test/lisp/net/shr-tests.el +++ b/test/lisp/net/shr-tests.el @@ -134,6 +134,7 @@ settings, then once more for each (OPTION . VALUE) pair.") (ert-deftest shr-test/zoom-image () "Test that `shr-zoom-image' properly replaces the original image." + (skip-unless (bound-and-true-p image-types)) (let ((image (expand-file-name "data/image/blank-100x200.png" (getenv "EMACS_TEST_DIRECTORY")))) (dolist (alt '(nil "" "nothing to see here")) commit 5d19bfda3219c9d2d2a94656d842a9019b274b51 Author: Eli Zaretskii Date: Sun Jun 23 20:57:26 2024 +0300 ; * admin/release-branch.txt: Update and fix typo. diff --git a/admin/release-branch.txt b/admin/release-branch.txt index 0c393a9eccb..b59bc12dfb9 100644 --- a/admin/release-branch.txt +++ b/admin/release-branch.txt @@ -42,7 +42,8 @@ Instructions for cutting the Emacs release branch M-x set-version RET XY+1.0.50 RET - This creates a new file etc/NEWS.XY. "git add" it. + This creates a new file etc/NEWS. "git add" it. + (The original NEWS gets renamed into NEWS.XY.) Change the value of 'customize-changed-options-previous-release' in cus-edit.el to reference emacs-XY.1, the next version to be @@ -60,7 +61,7 @@ Instructions for cutting the Emacs release branch module_env_snippet_XY+1="$srcdir/src/module-env-XY+1.h" . adding a new 'struct emacs_env_XY+1' to src/emacs-module.h.in, - with the contents identical to'struct emacs_env_XY', with one + with the contents identical to 'struct emacs_env_XY', with one line added: @module_env_snippet_XY+1@ commit 9688fd6eb1d05e97c556cd53c53dd92220d9efaa Author: Stefan Kangas Date: Sun Jun 23 18:07:27 2024 +0200 Ignore all dot-files in .gitignore * .gitignore: Ignore all dot-files except for those checked into Git. This makes us less opinionated about using tools in the Emacs tree. diff --git a/.gitignore b/.gitignore index d6e436c2d09..833e88a3aa7 100644 --- a/.gitignore +++ b/.gitignore @@ -18,9 +18,15 @@ # along with GNU Emacs. If not, see . -# Personal customization. -.dir-locals-2.el -.no-advice-on-failure +# Ignore all dot-files except for those under version control. +.* +!.clang-format +!.clangd +!.dir-locals.el +!.gitattributes +!.gitignore +!.gitlab-ci.yml +!.mailmap # Built by 'autogen.sh'. /aclocal.m4 @@ -314,7 +320,6 @@ gnustmp* *.orig *.swp *~ -.#* \#*\# ChangeLog [0-9]*.patch @@ -363,17 +368,8 @@ lib-src/seccomp-filter-exec.pfc # Ignore directory made by admin/make-manuals. /manual/ -# Ignore Finder files on MacOS. -.DS_Store - -# Ignore a directory used by dap-mode. -.vscode /test/gmp.h -# GDB history -.gdb_history -_gdb_history - # Files ignored in exec/. exec/aclocal.m4 exec/config.guess commit 7bedbbc708aa3d369617881020807387e7c5b6b1 Author: Stefan Kangas Date: Sun Jun 23 17:34:38 2024 +0200 Delete obsolete file process.cocci * admin/coccinelle/process.cocci: Delete file. This semantic patch was converting code to use the PVAR macro, which was removed by Paul Eggert on 2012-08-17 (commit 6a09a33b5551). diff --git a/admin/coccinelle/process.cocci b/admin/coccinelle/process.cocci deleted file mode 100644 index bf295ab7b6f..00000000000 --- a/admin/coccinelle/process.cocci +++ /dev/null @@ -1,110 +0,0 @@ -// Change direct access to Lisp_Object fields of struct Lisp_Process to PVAR. -@@ -struct Lisp_Process *P; -Lisp_Object O; -@@ -( -- P->tty_name -+ PVAR (P, tty_name) -| -- P->name -+ PVAR (P, name) -| -- P->command -+ PVAR (P, command) -| -- P->filter -+ PVAR (P, filter) -| -- P->sentinel -+ PVAR (P, sentinel) -| -- P->log -+ PVAR (P, log) -| -- P->buffer -+ PVAR (P, buffer) -| -- P->childp -+ PVAR (P, childp) -| -- P->plist -+ PVAR (P, plist) -| -- P->type -+ PVAR (P, type) -| -- P->mark -+ PVAR (P, mark) -| -- P->status -+ PVAR (P, status) -| -- P->decode_coding_system -+ PVAR (P, decode_coding_system) -| -- P->decoding_buf -+ PVAR (P, decoding_buf) -| -- P->encode_coding_system -+ PVAR (P, encode_coding_system) -| -- P->encoding_buf -+ PVAR (P, encoding_buf) -| -- P->write_queue -+ PVAR (P, write_queue) - -| - -- XPROCESS (O)->tty_name -+ PVAR (XPROCESS (O), tty_name) -| -- XPROCESS (O)->name -+ PVAR (XPROCESS (O), name) -| -- XPROCESS (O)->command -+ PVAR (XPROCESS (O), command) -| -- XPROCESS (O)->filter -+ PVAR (XPROCESS (O), filter) -| -- XPROCESS (O)->sentinel -+ PVAR (XPROCESS (O), sentinel) -| -- XPROCESS (O)->log -+ PVAR (XPROCESS (O), log) -| -- XPROCESS (O)->buffer -+ PVAR (XPROCESS (O), buffer) -| -- XPROCESS (O)->childp -+ PVAR (XPROCESS (O), childp) -| -- XPROCESS (O)->plist -+ PVAR (XPROCESS (O), plist) -| -- XPROCESS (O)->type -+ PVAR (XPROCESS (O), type) -| -- XPROCESS (O)->mark -+ PVAR (XPROCESS (O), mark) -| -- XPROCESS (O)->status -+ PVAR (XPROCESS (O), status) -| -- XPROCESS (O)->decode_coding_system -+ PVAR (XPROCESS (O), decode_coding_system) -| -- XPROCESS (O)->decoding_buf -+ PVAR (XPROCESS (O), decoding_buf) -| -- XPROCESS (O)->encode_coding_system -+ PVAR (XPROCESS (O), encode_coding_system) -| -- XPROCESS (O)->encoding_buf -+ PVAR (XPROCESS (O), encoding_buf) -| -- XPROCESS (O)->write_queue -+ PVAR (XPROCESS (O), write_queue) -) commit fb11294d4156a4be45080ff286a8ee0d5a3ede9b Author: Stefan Kangas Date: Sun Jun 23 16:28:31 2024 +0200 ; Fix typos diff --git a/ChangeLog.3 b/ChangeLog.3 index 1398b9bcf53..8d227d8a47d 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -128823,7 +128823,7 @@ (setq message-send-mail-function 'message-send-mail-with-sendmail) (setq sendmail-program "msmtp") - the message seding is handled by an external program, so no Unicode + the message sending is handled by an external program, so no Unicode encoding is performed in Emacs. Thus Emacs must not assert that the Unicode encoding was performed. @@ -129602,7 +129602,7 @@ 2019-05-27 Glenn Morris - * test/lisp/autorevert-tests.el: Give on on remote hydra.nixos tests. + * test/lisp/autorevert-tests.el: Give up on remote hydra.nixos tests. (auto-revert--test-enabled-remote): Disable on hydra.nixos. @@ -135286,7 +135286,7 @@ 92ce2dd Improve documentation of window parameters 6dc42c5 Improve commentary in frame.el a8cffcf Fix typo in a doc string - 9e79f19 (emacs-26) ; * src/fontset.c (set-fontset-font): Use uppercas... + 9e79f19 (emacs-26) ; * src/fontset.c (set-fontset-font): Use uppercase... # Conflicts: # lisp/vc/vc.el @@ -223245,7 +223245,7 @@ Make ‘delete-trailing-whitespace’ delete spaces after form feed * lisp/simple.el (delete-trailing-whitespace): Treat form fead as - a non-whitespace character (regradless of whether it’s character syntax + a non-whitespace character (regardless of whether it’s character syntax is whitespace) and delete any whitespace following it instead of leaving lines with form feeds completely unchanged. I.e. a line like "\f " will now became "\f". diff --git a/ChangeLog.4 b/ChangeLog.4 index 364fa212709..e510dec7b51 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -309,7 +309,7 @@ 2024-03-31 Michael Albinus - Adapt Tramp versio (don't merge) + Adapt Tramp version (don't merge) * doc/misc/trampver.texi: * lisp/net/trampver.el: Change version to "2.6.3". diff --git a/ChangeLog.android b/ChangeLog.android index e86ef7a2a77..1acf157dfbf 100644 --- a/ChangeLog.android +++ b/ChangeLog.android @@ -5406,7 +5406,7 @@ (syms_of_androidselect): Define it. * src/emacs.c (load_pdump): Eschew excessively elaborate dump file - location code on on Android. + location code on Android. * src/pdumper.c (Fdump_emacs_portable): Allow dumping while interactive on Android. diff --git a/admin/codespell/codespell.exclude b/admin/codespell/codespell.exclude index f01302b7931..733e548a598 100644 --- a/admin/codespell/codespell.exclude +++ b/admin/codespell/codespell.exclude @@ -87,7 +87,7 @@ be shown. On positions 3,4, and 7, the @samp{alog} function will be As is my wont, I started hacking on it almost immediately. I first The latter criterion is the "je ne sais quoi" of the artistic aspect of order but are now listed consecutively en bloc. - "mot de passe" "Mot de passe") + "mot de passe" "Mot de passe") Reported by Mor Zahavi . (Bug#51271) * etc/refcards/fr-refcard.tex (section{Formater}): Remove mention Reported by Ture Pålsson. diff --git a/admin/codespell/codespell.ignore b/admin/codespell/codespell.ignore index 02bd6d05838..ebb85e510bb 100644 --- a/admin/codespell/codespell.ignore +++ b/admin/codespell/codespell.ignore @@ -32,6 +32,7 @@ msdos ot parm parms +proced reenable reenabled requestor diff --git a/doc/lispref/ChangeLog.1 b/doc/lispref/ChangeLog.1 index ee8f418414c..e2d4c019b4a 100644 --- a/doc/lispref/ChangeLog.1 +++ b/doc/lispref/ChangeLog.1 @@ -4890,7 +4890,7 @@ 2011-05-10 Jim Meyering - * minibuf.texi: Fix typo "in in -> in". + * minibuf.texi: Fix typo. 2011-05-06 Paul Eggert diff --git a/doc/lispref/peg.texi b/doc/lispref/peg.texi index e496e1cf817..01666456c9c 100644 --- a/doc/lispref/peg.texi +++ b/doc/lispref/peg.texi @@ -29,7 +29,7 @@ current buffer, using a given set of rules. @cindex root, of parsing expression grammar @cindex entry-point, of parsing expression grammar Each rule in a @acronym{PEG} is referred to as a @dfn{parsing -expression} (@acronym{PEX}), and can be specified a a literal string, a +expression} (@acronym{PEX}), and can be specified a literal string, a regexp-like character range or set, a peg-specific construct resembling an Emacs Lisp function call, a reference to another rule, or a combination of any of these. A grammar is expressed as a tree of rules diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index 7f299180fc6..156b4297501 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -5128,7 +5128,7 @@ started on line 2. Lines 4 and 5 get the syntaxes though part of a function. Note that the @code{requires} on Line 3 begins a @dfn{requires -expression}, not a a requires clause, hence its components are not +expression}, not a requires clause, hence its components are not assigned @code{constraint-cont}. See @url{https://en.cppreference.com/w/cpp/language/requires}. diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 56f259db9a1..b2dfc46f74c 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -20413,7 +20413,7 @@ Anyway, if you'd like to dig into it yourself, here's an example: (read-only nil) (orphan -10) (adapt t) - (files "/hom/larsi/News/gnu.SCORE") + (files "/home/larsi/News/gnu.SCORE") (exclude-files "all.SCORE") (local (gnus-newsgroup-auto-expire t) (gnus-summary-make-false-root empty)) diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index edeb7d3ab6c..519d9ca2ee9 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -177,7 +177,7 @@ Previously, when exporting to Org, all the citations and =print_bibliography= keywords, were transformed according to the chosen citation processor. -This is no loner the case. All the citation-related markup is now +This is no longer the case. All the citation-related markup is now exported as is. The previous behavior can be reverted by setting new custom option diff --git a/etc/themes/leuven-theme.el b/etc/themes/leuven-theme.el index 7ee0c8cc71e..08bd56ede70 100644 --- a/etc/themes/leuven-theme.el +++ b/etc/themes/leuven-theme.el @@ -848,7 +848,7 @@ more..." `(org-example ((,class (:foreground "blue" :background "#EEFFEE")))) `(org-footnote ((,class (:underline t :foreground "#008ED1")))) `(org-formula ((,class (:foreground "chocolate1")))) - ;; org-habit colours are thanks to zenburn + ;; org-habit colors are thanks to zenburn `(org-habit-ready-face ((t :background "#7F9F7F"))) ; ,zenburn-green `(org-habit-alert-face ((t :background "#E0CF9F" :foreground "#3F3F3F"))) ; ,zenburn-yellow-1 fg ,zenburn-bg `(org-habit-clear-face ((t :background "#5C888B"))) ; ,zenburn-blue-3 diff --git a/lisp/ChangeLog.1 b/lisp/ChangeLog.1 index 49296aaf3a7..037bb41092b 100644 --- a/lisp/ChangeLog.1 +++ b/lisp/ChangeLog.1 @@ -570,7 +570,7 @@ 1986-01-18 Richard M. Stallman (rms@prep) - * doctor.el: Fix typo "symtoms". + * doctor.el: Fix typo for "symptoms". 1986-01-10 Richard Mlynarik (mly@prep) diff --git a/lisp/cedet/semantic/db-find.el b/lisp/cedet/semantic/db-find.el index 920588abf89..586cb1cf23b 100644 --- a/lisp/cedet/semantic/db-find.el +++ b/lisp/cedet/semantic/db-find.el @@ -622,7 +622,7 @@ Included databases are filtered based on `semanticdb-find-default-throttle'." ;; INCLUDETAG should have some way to reference where it came ;; from! If not, TABLE should provide the way. Each time we ;; look up a tag, we may need to find it in some relative way - ;; and must set our current buffer eto the origin of includetag + ;; and must set our current buffer to the origin of includetag ;; or nothing may work. (setq originfiledir (cond ((semantic-tag-file-name includetag) diff --git a/lisp/completion.el b/lisp/completion.el index 6c758e56eab..fff431eaf69 100644 --- a/lisp/completion.el +++ b/lisp/completion.el @@ -992,7 +992,7 @@ Each symbol is bound to a single completion entry.") ;; Updating the database ;;----------------------------------------------- ;; -;; These are the internal functions used to update the datebase +;; These are the internal functions used to update the database ;; ;; (defvar completion-to-accept nil diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index 1504d89731d..e2657dbabd8 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el @@ -256,7 +256,7 @@ specifying a region in the current buffer, or (:file . FILENAME) to temporarily insert the contents of FILENAME. Before executing BODY, narrow the buffer to the text for COMMAND -and and set point to the beginning of the narrowed region. +and set point to the beginning of the narrowed region. The value returned is the last form in BODY." (declare (indent 1)) diff --git a/lisp/gnus/ChangeLog.3 b/lisp/gnus/ChangeLog.3 index 1633b8835eb..fa376f02a7e 100644 --- a/lisp/gnus/ChangeLog.3 +++ b/lisp/gnus/ChangeLog.3 @@ -5560,7 +5560,7 @@ 2011-05-10 Jim Meyering - * shr.el (shr-colorize-region): Fix typo "on on -> on". + * shr.el (shr-colorize-region): Fix typo. 2011-05-10 Julien Danjou diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el index db75f1f0ad5..8ea1ff6d1a5 100644 --- a/lisp/org/ob-core.el +++ b/lisp/org/ob-core.el @@ -2861,7 +2861,7 @@ file's directory then expand relative links. If the optional TYPE is passed as `attachment' and the path is a descendant of the DEFAULT-DIRECTORY, the generated link will be -specified as an an \"attachment:\" style link." +specified as an \"attachment:\" style link." (when (stringp result) (let* ((result-file-name (expand-file-name result)) (base-file-name (buffer-file-name (buffer-base-buffer))) diff --git a/lisp/org/org-indent.el b/lisp/org/org-indent.el index 39dda4332aa..cabed6acf72 100644 --- a/lisp/org/org-indent.el +++ b/lisp/org/org-indent.el @@ -105,7 +105,7 @@ For details see the variable `org-adapt-indentation'." (defcustom org-indent-post-buffer-init-functions nil "Hook run after org-indent finishes initializing a buffer. -The function(s) in in this hook must accept a single argument representing +The function(s) in this hook must accept a single argument representing the initialized buffer." :group 'org-indent :package-version '(Org . "9.7") diff --git a/lisp/org/org.el b/lisp/org/org.el index 2be404e368e..1e6c10d8011 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -15434,7 +15434,7 @@ When SUPPRESS-TMP-DELAY is non-nil, suppress delays like (defun org-modify-ts-extra (ts-string pos nincrements increment-step) "Change the lead-time/repeat fields at POS in timestamp string TS-STRING. POS is the position in the timestamp string to be changed. -NINCREMENTS is the number of incremenets/decrements. +NINCREMENTS is the number of increments/decrements. INCREMENT-STEP is step used for a single increment when POS in on minutes. Before incrementing minutes, they are rounded to diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 06b919f26fd..233d23492b6 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -1954,7 +1954,7 @@ ender." ;; The following is no longer used (2020-02-16). ;; (c-lang-defconst c-last-open-c-comment-start-on-line-re ;; "Regexp which matches the last block comment start on the -;; current ine, if any, or nil in those languages without block +;; current one, if any, or nil in those languages without block ;; comments. When a match is found, submatch 1 contains the comment ;; starter." ;; t "\\(/\\*\\)\\([^*]\\|\\*+\\([^*/]\\|$\\)\\)*$" diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el index 687b176009e..85fc6b930f5 100644 --- a/lisp/progmodes/inf-lisp.el +++ b/lisp/progmodes/inf-lisp.el @@ -347,7 +347,7 @@ The actually processing is done by DO-STRING and DO-REGION DEFVAR forms reset the variables to the init values." (save-excursion ;; Find the end of the defun this way to avoid having the region - ;; possibly end with a comment (it there'a a comment after the + ;; possibly end with a comment (it there's a comment after the ;; final parenthesis). (beginning-of-defun) (forward-sexp) diff --git a/lisp/progmodes/php-ts-mode.el b/lisp/progmodes/php-ts-mode.el index 1f7d6f5b3ee..bede26b7da5 100644 --- a/lisp/progmodes/php-ts-mode.el +++ b/lisp/progmodes/php-ts-mode.el @@ -717,7 +717,7 @@ characters of the current line." (c-ts-common-comment-2nd-line-matcher c-ts-common-comment-2nd-line-anchor 1))) - "Tree-sitter indentation rules for for `phpdoc'.") + "Tree-sitter indentation rules for `phpdoc'.") ;;; Font-lock @@ -1561,7 +1561,7 @@ The optional TYPE can be the symbol \"port\", \"hostname\", \"document-root\" or (defun run-php (&optional cmd config) "Run an PHP interpreter as a inferior process. -Arguments CMD an CONFIG, default to `php-ts-mode-php-executable' +Arguments CMD and CONFIG, default to `php-ts-mode-php-executable' and `php-ts-mode-php-config' respectively, control which PHP interpreter is run. Prompt for CMD if `php-ts-mode-php-executable' is nil. Optional CONFIG, if supplied, is the php.ini file to use." diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 5c744374128..f126df8955a 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -1418,7 +1418,7 @@ Leave point at the beginning of the tag." (with-syntax-table sgml-tag-syntax-table (let ((pos (point))) (condition-case nil - ;; FIXME: This does not correctly skip over PI an CDATA tags. + ;; FIXME: This does not correctly skip over PI and CDATA tags. (sgml-forward-sexp 1) (scan-error ;; This < seems to be just a spurious one, let's ignore it. diff --git a/lisp/which-key.el b/lisp/which-key.el index e9567d262c6..ee7a1cea333 100644 --- a/lisp/which-key.el +++ b/lisp/which-key.el @@ -1052,7 +1052,7 @@ replacement. In the second case, the second string is used to provide a longer name for the keys under a prefix. -MORE allows you to specifcy additional KEY REPLACEMENT pairs. All +MORE allows you to specify additional KEY REPLACEMENT pairs. All replacements are added to `which-key-replacement-alist'." ;; TODO: Make interactive (while key-sequence @@ -1923,7 +1923,7 @@ Requires `which-key-compute-remaps' to be non-nil." PREFIX limits bindings to those starting with this key sequence. START is a list of existing bindings to add to. If ALL is non-nil, recursively retrieve all bindings below PREFIX. If -EVIL is non-nil, extract active evil bidings." +EVIL is non-nil, extract active evil bindings." (let ((bindings start) (ignore '(self-insert-command ignore ignore-event company-ignore)) (evil-map diff --git a/src/ChangeLog.12 b/src/ChangeLog.12 index 7792bd88c01..798e87dd572 100644 --- a/src/ChangeLog.12 +++ b/src/ChangeLog.12 @@ -5956,7 +5956,7 @@ Assume C89 or later for math functions (Bug#12381). This simplifies the code, and makes it a bit smaller and faster, and (most important) makes it easier to clean up signal handling - since we can stop worring about floating-point exceptions in + since we can stop worrying about floating-point exceptions in library code. That was a problem before C89, but the problem went away many years ago on all practical Emacs targets. * data.c, image.c, lread.c, print.c: diff --git a/src/w32image.c b/src/w32image.c index e71471f4a7c..359a4fa3a72 100644 --- a/src/w32image.c +++ b/src/w32image.c @@ -605,7 +605,7 @@ get_encoder_clsid (const char *type, CLSID *clsid) DEFUN ("w32image-create-thumbnail", Fw32image_create_thumbnail, Sw32image_create_thumbnail, 5, 5, 0, - doc: /* Create a HEIGHT by WIDTH thumnail file THUMB-FILE for image INPUT-FILE. + doc: /* Create a HEIGHT by WIDTH thumbnail file THUMB-FILE for image INPUT-FILE. TYPE is the image type to use for the thumbnail file, a string. It is usually identical to the file-name extension of THUMB-FILE, but without the leading period, and both "jpeg" and "jpg" can be used for JPEG. diff --git a/test/lisp/progmodes/cperl-mode-resources/extra-delimiters.pl b/test/lisp/progmodes/cperl-mode-resources/extra-delimiters.pl index 8d2f6397e9d..4c59ad6249a 100644 --- a/test/lisp/progmodes/cperl-mode-resources/extra-delimiters.pl +++ b/test/lisp/progmodes/cperl-mode-resources/extra-delimiters.pl @@ -8,7 +8,7 @@ $printed = 1; # With cperl-extra-delimiters-mode=on the previous lines are a label -# and a a print statement. This line here is a comment. Without +# and a print statement. This line here is a comment. Without # cperl-extra-delimiters-mode, all this is part of the variable # declaration. diff --git a/test/lisp/ses-tests.el b/test/lisp/ses-tests.el index a916aed9eb3..3ca1297f5ec 100644 --- a/test/lisp/ses-tests.el +++ b/test/lisp/ses-tests.el @@ -201,7 +201,7 @@ to `ses--bar' and inserting a row, makes A2 value empty, and `ses--bar' equal to (ert-deftest ses-jump-B2-lowcase () - "Test jumping to cell B2 by use of lowcase cell name string" + "Test jumping to cell B2 by use of lowercase cell name string" (let ((ses-initial-size '(3 . 3)) ses-after-entry-functions) (with-temp-buffer @@ -211,7 +211,7 @@ to `ses--bar' and inserting a row, makes A2 value empty, and `ses--bar' equal to (should (eq (ses--cell-at-pos (point)) 'B2))))) (ert-deftest ses-jump-B2-lowcase-keys () - "Test jumping to cell B2 by use of lowcase cell name string with simulating keys" + "Test jumping to cell B2 by use of lowercase cell name string with simulating keys" (let ((ses-initial-size '(3 . 3)) ses-after-entry-functions) (with-temp-buffer commit 93088fc13c47fbab875f9ee173c0a66d623d91c6 Author: Stefan Kangas Date: Sun Jun 23 15:46:42 2024 +0200 Allow git 1.8.2 features in .gitignore * .gitignore: Assume git 1.8.2 or later; we already use the '**' feature from that version since 2021. diff --git a/.gitignore b/.gitignore index eb76ff330b8..d6e436c2d09 100644 --- a/.gitignore +++ b/.gitignore @@ -18,11 +18,6 @@ # along with GNU Emacs. If not, see . -# Currently we assume only Git 1.7.1 (April 2010) or later, so this -# file does not rely on "**" in patterns. The "**" feature was added -# in Git 1.8.2 (March 2013). - - # Personal customization. .dir-locals-2.el .no-advice-on-failure @@ -119,8 +114,8 @@ cross/ndk-build/ndk-build.mk cross/ndk-build/*.o # Lisp-level sources built by 'make'. -*cus-load.el -*loaddefs.el +lisp/**/*cus-load.el +lisp/**/*loaddefs.el lisp/cedet/semantic/bovine/c-by.el lisp/cedet/semantic/bovine/make-by.el lisp/cedet/semantic/bovine/scm-by.el commit b9ce39ba809f49fe80d5b9a6d41afe1fe144fc77 Author: Stefan Kangas Date: Sun Jun 23 15:41:23 2024 +0200 Prefer setq-local in reftex * lisp/textmodes/reftex-global.el (reftex-find-duplicate-labels) (reftex-isearch-minor-mode): * lisp/textmodes/reftex-index.el (reftex-index-mode) (reftex-display-index, reftex-index-initialize-phrases-buffer) (reftex-index-phrases-mode): * lisp/textmodes/reftex-sel.el (reftex-select-label-mode) (reftex-select-bib-mode, reftex-insert-docstruct, reftex-select-item): * lisp/textmodes/reftex-toc.el (reftex-toc-mode, reftex-toc): * lisp/textmodes/reftex.el (reftex-fontify-select-label-buffer): Prefer setq-local. diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el index 0eaffec3b54..7b4407ec336 100644 --- a/lisp/textmodes/reftex-global.el +++ b/lisp/textmodes/reftex-global.el @@ -152,7 +152,7 @@ No active TAGS table is required." (setq dlist (reftex-uniquify-by-car dlist)) (if (null dlist) (error "No duplicate labels in document")) (switch-to-buffer-other-window "*Duplicate Labels*") - (set (make-local-variable 'TeX-master) master) + (setq-local TeX-master master) (erase-buffer) (insert " MULTIPLE LABELS IN CURRENT DOCUMENT:\n") (insert @@ -492,17 +492,16 @@ With no argument, this command toggles (with-current-buffer crt-buf (when reftex-mode (if (boundp 'multi-isearch-next-buffer-function) - (set (make-local-variable - 'multi-isearch-next-buffer-function) - #'reftex-isearch-switch-to-next-file) - (set (make-local-variable 'isearch-wrap-function) - #'reftex-isearch-wrap-function) - (set (make-local-variable 'isearch-search-fun-function) - (lambda () #'reftex-isearch-isearch-search)) - (set (make-local-variable 'isearch-push-state-function) - #'reftex-isearch-push-state-function) - (set (make-local-variable 'isearch-next-buffer-function) - #'reftex-isearch-switch-to-next-file)) + (setq-local multi-isearch-next-buffer-function + #'reftex-isearch-switch-to-next-file) + (setq-local isearch-wrap-function + #'reftex-isearch-wrap-function) + (setq-local isearch-search-fun-function + (lambda () #'reftex-isearch-isearch-search)) + (setq-local isearch-push-state-function + #'reftex-isearch-push-state-function) + (setq-local isearch-next-buffer-function + #'reftex-isearch-switch-to-next-file)) (setq reftex-isearch-minor-mode t)))) (add-hook 'reftex-mode-hook #'reftex-isearch-minor-mode)) (dolist (crt-buf (buffer-list)) diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el index a93afd63855..db476ff5c0b 100644 --- a/lisp/textmodes/reftex-index.el +++ b/lisp/textmodes/reftex-index.el @@ -387,9 +387,9 @@ Press `?' for a summary of important key bindings, or check the menu. Here are all local bindings. \\{reftex-index-mode-map}" - (set (make-local-variable 'revert-buffer-function) #'reftex-index-revert) - (set (make-local-variable 'reftex-index-restriction-data) nil) - (set (make-local-variable 'reftex-index-restriction-indicator) nil) + (setq-local revert-buffer-function #'reftex-index-revert) + (setq-local reftex-index-restriction-data nil) + (setq-local reftex-index-restriction-indicator nil) (setq mode-line-format (list "---- " 'mode-line-buffer-identification " " 'global-mode-string @@ -511,9 +511,9 @@ With prefix 3, restrict index to region." ;; If the buffer is currently restricted, empty it to force update. (when reftex-index-restriction-data (reftex-erase-buffer)) - (set (make-local-variable 'reftex-last-index-file) calling-file) - (set (make-local-variable 'reftex-index-tag) index-tag) - (set (make-local-variable 'reftex-docstruct-symbol) docstruct-symbol) + (setq-local reftex-last-index-file calling-file) + (setq-local reftex-index-tag index-tag) + (setq-local reftex-docstruct-symbol docstruct-symbol) (if restriction (setq reftex-index-restriction-indicator (car restriction) reftex-index-restriction-data (cdr restriction)) @@ -1303,8 +1303,7 @@ If the buffer is non-empty, delete the old header first." (lambda (a _b) (equal (car a) default-macro)))) macro entry key repeat) - (if master (set (make-local-variable 'TeX-master) - (file-name-nondirectory master))) + (when master (setq-local TeX-master (file-name-nondirectory master))) (when (> (buffer-size) 0) (goto-char 1) @@ -1387,9 +1386,9 @@ Here are all local bindings. \\{reftex-index-phrases-mode-map}" :syntax-table reftex-index-phrases-syntax-table - (set (make-local-variable 'font-lock-defaults) - reftex-index-phrases-font-lock-defaults) - (set (make-local-variable 'reftex-index-phrases-marker) (make-marker))) + (setq-local font-lock-defaults + reftex-index-phrases-font-lock-defaults) + (setq-local reftex-index-phrases-marker (make-marker))) ;; (add-hook 'reftex-index-phrases-mode-hook #'turn-on-font-lock) (defun reftex-index-next-phrase (&optional arg) diff --git a/lisp/textmodes/reftex-sel.el b/lisp/textmodes/reftex-sel.el index fa36543daf4..aec89448481 100644 --- a/lisp/textmodes/reftex-sel.el +++ b/lisp/textmodes/reftex-sel.el @@ -97,7 +97,7 @@ Press `?' for a summary of important key bindings. During a selection process, these are the local bindings. \\{reftex-select-label-mode-map}" - (set (make-local-variable 'reftex-select-marked) nil) + (setq-local reftex-select-marked nil) (when (syntax-table-p reftex-latex-syntax-table) (set-syntax-table reftex-latex-syntax-table)) ;; We do not set a local map - reftex-select-item does this. @@ -136,7 +136,7 @@ Press `?' for a summary of important key bindings. During a selection process, these are the local bindings. \\{reftex-select-label-mode-map}" - (set (make-local-variable 'reftex-select-marked) nil) + (setq-local reftex-select-marked nil) ;; We do not set a local map - reftex-select-item does this. ) @@ -236,9 +236,9 @@ During a selection process, these are the local bindings. (concat "\\`" (regexp-quote (file-name-directory (reftex-TeX-master-file)))))) - (set (make-local-variable 'reftex-docstruct-symbol) docstruct-symbol) - (set (make-local-variable 'reftex-prefix) - (cdr (assoc labels reftex-typekey-to-prefix-alist))) + (setq-local reftex-docstruct-symbol docstruct-symbol) + (setq-local reftex-prefix + (cdr (assoc labels reftex-typekey-to-prefix-alist))) (if (equal reftex-prefix " ") (setq reftex-prefix nil)) ;; Walk the docstruct and insert the appropriate stuff @@ -459,7 +459,7 @@ During a selection process, these are the local bindings. (reftex-find-start-point (point-min) offset reftex-last-data reftex-last-line) (beginning-of-line 1) - (set (make-local-variable 'reftex-last-follow-point) (point)) + (setq-local reftex-last-follow-point (point)) (unwind-protect (progn @@ -480,9 +480,9 @@ During a selection process, these are the local bindings. (mapc (lambda (c) (delete-overlay (nth 1 c))) reftex-select-marked))))) - (set (make-local-variable 'reftex-last-line) - (+ (count-lines (point-min) (point)) (if (bolp) 1 0))) - (set (make-local-variable 'reftex-last-data) reftex--last-data) + (setq-local reftex-last-line + (+ (count-lines (point-min) (point)) (if (bolp) 1 0))) + (setq-local reftex-last-data reftex--last-data) (reftex-kill-buffer "*RefTeX Help*") (setq reftex-callback-fwd (not reftex-callback-fwd)) ;; ;-))) (message "") diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el index 1cc6e27e780..fe5a32f15f0 100644 --- a/lisp/textmodes/reftex-toc.el +++ b/lisp/textmodes/reftex-toc.el @@ -1,6 +1,6 @@ ;;; reftex-toc.el --- RefTeX's table of contents mode -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2000, 2003-2024 Free Software Foundation, Inc. +;; Copyright (C) 1997-2024 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org @@ -125,13 +125,13 @@ Press `?' for a summary of important key bindings. Here are all local bindings. \\{reftex-toc-mode-map}" - (set (make-local-variable 'transient-mark-mode) t) - (set (make-local-variable 'revert-buffer-function) #'reftex-toc-revert) - (set (make-local-variable 'reftex-toc-include-labels-indicator) "") - (set (make-local-variable 'reftex-toc-max-level-indicator) - (if (= reftex-toc-max-level 100) - "ALL" - (int-to-string reftex-toc-max-level))) + (setq-local transient-mark-mode t) + (setq-local revert-buffer-function #'reftex-toc-revert) + (setq-local reftex-toc-include-labels-indicator "") + (setq-local reftex-toc-max-level-indicator + (if (= reftex-toc-max-level 100) + "ALL" + (int-to-string reftex-toc-max-level))) (setq mode-line-format (list "---- " 'mode-line-buffer-identification " " 'global-mode-string " (" mode-name ")" @@ -241,7 +241,7 @@ When called with a raw \\[universal-argument] prefix, rescan the document first. (switch-to-buffer "*toc*")) (or (eq major-mode 'reftex-toc-mode) (reftex-toc-mode)) - (set (make-local-variable 'reftex-docstruct-symbol) docstruct-symbol) + (setq-local reftex-docstruct-symbol docstruct-symbol) (setq reftex-toc-include-labels-indicator (if (eq reftex-toc-include-labels t) "ALL" diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el index 6974a4be4a7..efe38337001 100644 --- a/lisp/textmodes/reftex.el +++ b/lisp/textmodes/reftex.el @@ -1,6 +1,6 @@ ;;; reftex.el --- minor mode for doing \label, \ref, \cite, \index in LaTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2000, 2003-2024 Free Software Foundation, Inc. +;; Copyright (C) 1997-2024 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org @@ -2036,8 +2036,8 @@ IGNORE-WORDS List of words which should be removed from the string." ;; of font-lock) (rename-buffer newname t) ;; Good: we have the indirection functions - (set (make-local-variable 'font-lock-fontify-region-function) - #'reftex-select-font-lock-fontify-region) + (setq-local font-lock-fontify-region-function + #'reftex-select-font-lock-fontify-region) (let ((major-mode 'latex-mode)) (font-lock-mode 1))) (rename-buffer oldname)))) commit d9bd1718f9a3561f7aa233f105f78aaa7f8dc93a Author: Michael Albinus Date: Sat Jun 22 19:52:06 2024 +0200 Backport: Minor changes in tramp-tests.el * test/lisp/net/tramp-tests.el (tramp--test-shell-file-name): Use connection-local value. (tramp--test-shell-command-switch): New defun. (tramp-test28-process-file) (tramp-test34-explicit-shell-file-name): Use it. (tramp--test-supports-processes-p): Simplify. (tramp--test-check-files): Use `tramp-compat-seq-keep'. (tramp-test45-asynchronous-requests): Don't let-bind `shell-file-name'. (tramp-test45-asynchronous-requests): Adjust timer. (tramp-test45-asynchronous-requests): Add another test message. (cherry picked from commit c95caade15d295fa6cc31d337028faa15142b388) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 516ba53c0f3..08a3dd179e2 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -5066,10 +5066,13 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (defun tramp--test-shell-file-name () "Return default remote shell." - (if (file-exists-p - (concat - (file-remote-p ert-remote-temporary-file-directory) "/system/bin/sh")) - "/system/bin/sh" "/bin/sh")) + (let ((default-directory ert-remote-temporary-file-directory)) + (tramp-compat-connection-local-value shell-file-name))) + +(defun tramp--test-shell-command-switch () + "Return default remote shell command switch." + (let ((default-directory ert-remote-temporary-file-directory)) + (tramp-compat-connection-local-value shell-command-switch))) (ert-deftest tramp-test28-process-file () "Check `process-file'." @@ -5086,14 +5089,14 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (unwind-protect (progn ;; We cannot use "/bin/true" and "/bin/false"; those paths - ;; do not exist on hydra. + ;; do not exist on hydra and on MS Windows. (should (zerop (process-file "true"))) (should-not (zerop (process-file "false"))) (should-not (zerop (process-file "binary-does-not-exist"))) ;; Return exit code. (should (= 42 (process-file - (tramp--test-shell-file-name) - nil nil nil "-c" "exit 42"))) + (tramp--test-shell-file-name) nil nil nil + (tramp--test-shell-command-switch) "exit 42"))) ;; Return exit code in case the process is interrupted, ;; and there's no indication for a signal describing string. (unless (tramp--test-sshfs-p) @@ -5101,8 +5104,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (should (= (+ 128 2) (process-file - (tramp--test-shell-file-name) - nil nil nil "-c" "kill -2 $$"))))) + (tramp--test-shell-file-name) nil nil nil + (tramp--test-shell-command-switch) "kill -2 $$"))))) ;; Return string in case the process is interrupted and ;; there's an indication for a signal describing string. (unless (tramp--test-sshfs-p) @@ -5111,8 +5114,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (string-match-p (rx (| "Interrupt" "Signal 2")) (process-file - (tramp--test-shell-file-name) - nil nil nil "-c" "kill -2 $$"))))) + (tramp--test-shell-file-name) nil nil nil + (tramp--test-shell-command-switch) "kill -2 $$"))))) ;; Check DESTINATION. (dolist (destination `(nil t ,buffer)) @@ -6292,7 +6295,8 @@ INPUT, if non-nil, is a string sent to the process." (connection-local-set-profile-variables 'remote-sh `((explicit-shell-file-name . ,(tramp--test-shell-file-name)) - (explicit-sh-args . ("-c" "echo foo")))) + (explicit-sh-args + . (,(tramp--test-shell-command-switch) "echo foo")))) (connection-local-set-profiles `(:application tramp :protocol ,(file-remote-p default-directory 'method) @@ -7251,14 +7255,14 @@ This requires restrictions of file name syntax." (defun tramp--test-supports-processes-p () "Return whether the method under test supports external processes." - ;; We use it to enable/disable tests in a given test run, for - ;; example for remote processes on MS Windows. - (if (tramp-connection-property-p - tramp-test-vec "tramp--test-supports-processes-p") - (tramp-get-connection-property - tramp-test-vec "tramp--test-supports-processes-p") - (and (or (tramp--test-adb-p) (tramp--test-sh-p) (tramp--test-sshfs-p)) - (not (tramp--test-crypt-p))))) + (unless (tramp--test-crypt-p) + ;; We use it to enable/disable tests in a given test run, for + ;; example for remote processes on MS Windows. + (if (tramp-connection-property-p + tramp-test-vec "tramp--test-supports-processes-p") + (tramp-get-connection-property + tramp-test-vec "tramp--test-supports-processes-p") + (or (tramp--test-adb-p) (tramp--test-sh-p) (tramp--test-sshfs-p))))) (defun tramp--test-supports-set-file-modes-p () "Return whether the method under test supports setting file modes." @@ -7283,8 +7287,8 @@ This requires restrictions of file name syntax." (tmp-name1 (tramp--test-make-temp-name nil quoted)) (tmp-name2 (tramp--test-make-temp-name 'local quoted)) (files - (delq - nil (mapcar (lambda (x) (unless (string-empty-p x) x)) files))) + (tramp-compat-seq-keep + (lambda (x) (unless (string-empty-p x) x)) files)) (process-environment process-environment) (sorted-files (sort (copy-sequence files) #'string-lessp)) buffer) @@ -7724,7 +7728,6 @@ process sentinels. They shall not disturb each other." (define-key special-event-map [sigusr1] #'tramp--test-timeout-handler) (let* (;; For the watchdog. (default-directory (expand-file-name temporary-file-directory)) - (shell-file-name (tramp--test-shell-file-name)) ;; It doesn't work on w32 systems. (watchdog (start-process-shell-command @@ -7794,7 +7797,7 @@ process sentinels. They shall not disturb each other." "Stop timer %s %s" file (current-time-string)) ;; Adjust timer if it takes too much time. (when (> (- (float-time) time) timer-repeat) - (setq timer-repeat (* 1.1 timer-repeat)) + (setq timer-repeat (* 1.1 (- (float-time) time))) (setf (timer--repeat-delay timer) timer-repeat) (tramp--test-message "Increase timer %s" timer-repeat)))))))) @@ -7840,7 +7843,8 @@ process sentinels. They shall not disturb each other." (lambda (proc _state) (tramp--test-with-proper-process-name-and-buffer proc (tramp--test-message - "Process sentinel %s %s" proc (current-time-string))))))) + "Process sentinel %s %s" proc (current-time-string))))) + (tramp--test-message "Process started %s" proc))) ;; Send a string to the processes. Use a random order of ;; the buffers. Mix with regular operation. @@ -8300,6 +8304,8 @@ If INTERACTIVE is non-nil, the tests are run interactively." ;; * Implement `tramp-test31-interrupt-process' and ;; `tramp-test31-signal-process' for "adb", "sshfs" and for direct ;; async processes. Check, why they don't run stable. +;; * Check, why `tramp-test45-asynchronous-requests' often fails. The +;; famous reentrant error? ;; * Check, why direct async processes do not work for ;; `tramp-test45-asynchronous-requests'. commit 1728de5a77660dcde6b779b200e39fa96c214e28 Author: Michael Albinus Date: Sat Jun 22 19:49:45 2024 +0200 Backport: Tramp: Fix bug#71709, and other minor changes * lisp/net/tramp-message.el (tramp-backtrace): Print also in batch mode. * lisp/net/tramp.el (tramp-skeleton-file-exists-p): Check for property only. (tramp-skeleton-make-process): Don't set `default-directory'. (tramp-handle-make-process): Set it. (Bug#71709) (cherry picked from commit 8456cb9b698dfbfc90af82b3ebcd739fc22be4e4) diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index 6cd856c10e5..ecb9071eb57 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el @@ -585,7 +585,7 @@ An alternative method could be chosen with `tramp-file-name-with-method'." (tramp-make-tramp-file-name (make-tramp-file-name :method tramp-file-name-with-method :localname localname))) - ;; Remote file with multi-hop capable method.. + ;; Remote file with multi-hop capable method. ((tramp-multi-hop-p v) (tramp-make-tramp-file-name (make-tramp-file-name diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index a324c4fa826..1d6f47dc364 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -252,8 +252,9 @@ Also see `ignore'." (tramp-error vec tramp-permission-denied file) (tramp-error vec tramp-permission-denied "Permission denied: %s" file))) -;; Function `auth-info-password' is new in Emacs 29.1. However, it -;; doesn't obey cascaded functions, which is fixed in Emacs 30.1 only. +;; Function `auth-info-password' is new in Emacs 29.1. Finally, +;; Bug#49289 is fixed in Emacs 30.1 for the `secrets' and `plstore' +;; auth-sources backends. (defalias 'tramp-compat-auth-info-password (if (>= emacs-major-version 30) 'auth-info-password diff --git a/lisp/net/tramp-message.el b/lisp/net/tramp-message.el index 685b14d14db..8d6458ce07a 100644 --- a/lisp/net/tramp-message.el +++ b/lisp/net/tramp-message.el @@ -357,7 +357,9 @@ This function is meant for debugging purposes." (let ((tramp-verbose (if force 10 tramp-verbose))) (when (>= tramp-verbose 10) (tramp-message - vec-or-proc 10 "\n%s" (with-output-to-string (backtrace)))))) + ;; In batch-mode, we want to see it on stderr. + vec-or-proc (if (and force noninteractive) 1 10) + "\n%s" (with-output-to-string (backtrace)))))) (defsubst tramp-error (vec-or-proc signal fmt-string &rest arguments) "Emit an error. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index d9db17ea598..f97ed66c58b 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3477,7 +3477,7 @@ BODY is the backend specific code." (with-tramp-file-property v localname "file-exists-p" ;; Examine `file-attributes' cache to see if request can ;; be satisfied without remote operation. - (if (tramp-use-file-attributes v) + (if (tramp-file-property-p v localname "file-attributes") (not (null (tramp-get-file-property v localname "file-attributes"))) ,@body)))))) @@ -3594,8 +3594,7 @@ that a stederr file is supported. BODY is the backend specific code." (not (tramp-equal-remote default-directory stderr))) (signal 'file-error (list "Wrong stderr" stderr))) - (let ((default-directory tramp-compat-temporary-file-directory) - (name (tramp-get-unique-process-name name)) + (let ((name (tramp-get-unique-process-name name)) (buffer (if buffer (get-buffer-create buffer) @@ -5058,7 +5057,8 @@ should be set connection-local.") ;; Check for `tramp-sh-file-name-handler' and ;; `adb-file-name-handler-p', because something is different ;; between tramp-sh.el, and tramp-adb.el or tramp-sshfs.el. - (let* ((sh-file-name-handler-p (tramp-sh-file-name-handler-p v)) + (let* ((default-directory tramp-compat-temporary-file-directory) + (sh-file-name-handler-p (tramp-sh-file-name-handler-p v)) (adb-file-name-handler-p (tramp-adb-file-name-p v)) (env (mapcar (lambda (elt) @@ -5896,6 +5896,7 @@ Mostly useful to protect BODY from being interrupted by timers." ;; Be kind for old versions of Emacs. (if (member 'remote-file-error debug-ignored-errors) (throw 'non-essential 'non-essential) + ;(tramp-backtrace ,proc 'force) (tramp-error ,proc 'remote-file-error "Forbidden reentrant call of Tramp")) (with-tramp-suspended-timers commit 39aa286072924ebef68b068fa9d9afc8374ede86 Author: Eli Zaretskii Date: Sun Jun 23 07:42:23 2024 -0400 * src/puresize.h (BASE_PURESIZE): Increase. diff --git a/src/puresize.h b/src/puresize.h index 2a716872832..d7d8f0b4eec 100644 --- a/src/puresize.h +++ b/src/puresize.h @@ -47,7 +47,7 @@ INLINE_HEADER_BEGIN #endif #ifndef BASE_PURESIZE -#define BASE_PURESIZE (3000000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) +#define BASE_PURESIZE (3100000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA) #endif /* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */ commit 2d6ca28ce71ab81fb79d702f06b6ad47aa5de433 Author: Eli Zaretskii Date: Sun Jun 23 07:11:04 2024 -0400 Update emacs-module for Emacs 31 * src/module-env-31.h: New file. * src/module-env-30.h: * configure.ac: * src/emacs-module.h.in: Update emacs-module files for Emacs 31. diff --git a/configure.ac b/configure.ac index e87274a9858..ae756038e7d 100644 --- a/configure.ac +++ b/configure.ac @@ -5059,12 +5059,14 @@ AC_SUBST_FILE([module_env_snippet_27]) AC_SUBST_FILE([module_env_snippet_28]) AC_SUBST_FILE([module_env_snippet_29]) AC_SUBST_FILE([module_env_snippet_30]) +AC_SUBST_FILE([module_env_snippet_31]) module_env_snippet_25="$srcdir/src/module-env-25.h" module_env_snippet_26="$srcdir/src/module-env-26.h" module_env_snippet_27="$srcdir/src/module-env-27.h" module_env_snippet_28="$srcdir/src/module-env-28.h" module_env_snippet_29="$srcdir/src/module-env-29.h" module_env_snippet_30="$srcdir/src/module-env-30.h" +module_env_snippet_31="$srcdir/src/module-env-31.h" emacs_major_version=`AS_ECHO([$PACKAGE_VERSION]) | sed 's/[[.]].*//'` AC_SUBST([emacs_major_version]) diff --git a/src/emacs-module.h.in b/src/emacs-module.h.in index 690254bd28c..21e4ca7cfa1 100644 --- a/src/emacs-module.h.in +++ b/src/emacs-module.h.in @@ -198,6 +198,23 @@ struct emacs_env_30 @module_env_snippet_30@ }; +struct emacs_env_31 +{ +@module_env_snippet_25@ + +@module_env_snippet_26@ + +@module_env_snippet_27@ + +@module_env_snippet_28@ + +@module_env_snippet_29@ + +@module_env_snippet_30@ + +@module_env_snippet_31@ +}; + /* Every module should define a function as follows. */ extern int emacs_module_init (struct emacs_runtime *runtime) EMACS_NOEXCEPT diff --git a/src/module-env-30.h b/src/module-env-30.h index e75210c7f8e..e69de29bb2d 100644 --- a/src/module-env-30.h +++ b/src/module-env-30.h @@ -1,3 +0,0 @@ - /* Add module environment functions newly added in Emacs 30 here. - Before Emacs 30 is released, remove this comment and start - module-env-31.h on the master branch. */ diff --git a/src/module-env-31.h b/src/module-env-31.h new file mode 100644 index 00000000000..e9827b18382 --- /dev/null +++ b/src/module-env-31.h @@ -0,0 +1,3 @@ + /* Add module environment functions newly added in Emacs 31 here. + Before Emacs 31 is released, remove this comment and start + module-env-32.h on the master branch. */ commit c246de0d163354daeac58d13db320b4157166340 Author: Eli Zaretskii Date: Sun Jun 23 07:03:45 2024 -0400 * lisp/cus-edit.el (customize-changed-options-previous-release): Bump version. diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 469f4334b44..5fd3629e57d 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1280,7 +1280,7 @@ Show the buffer in another window, but don't select it." (unless (eq symbol basevar) (message "`%s' is an alias for `%s'" symbol basevar)))) -(defvar customize-changed-options-previous-release "29.4" +(defvar customize-changed-options-previous-release "30.1" "Version for `customize-changed' to refer back to by default.") ;; Packages will update this variable, so make it available. commit 39cded69a8e8198f1e21029ac197c5c0197f1649 Merge: 17f202939e9 720925046ac Author: Eli Zaretskii Date: Sun Jun 23 07:00:09 2024 -0400 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs commit 17f202939e9d28e207acfb95a5e93563efc0a834 Author: Eli Zaretskii Date: Sun Jun 23 06:56:48 2024 -0400 Bump Emacs version to 31.0.50 * README: * configure.ac: * nt/README.W32: * msdos/sed2v2.inp: * etc/refcards/ru-refcard.tex: * etc/NEWS: Bump Emacs version to 31.0.50. * etc/NEWS.30: New file. diff --git a/README b/README index 54da3587754..2fc84ca6620 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 30.0.60 of GNU Emacs, the extensible, +This directory tree holds version 31.0.50 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index b57bb65e0bf..e87274a9858 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ([2.65]) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT([GNU Emacs], [30.0.60], [bug-gnu-emacs@gnu.org], [], +AC_INIT([GNU Emacs], [31.0.50], [bug-gnu-emacs@gnu.org], [], [https://www.gnu.org/software/emacs/]) if test "$XCONFIGURE" = "android"; then diff --git a/etc/NEWS b/etc/NEWS new file mode 100644 index 00000000000..af32a93d9c4 --- /dev/null +++ b/etc/NEWS @@ -0,0 +1,74 @@ +GNU Emacs NEWS -- history of user-visible changes. + +Copyright (C) 2022-2024 Free Software Foundation, Inc. +See the end of the file for license conditions. + +Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. +If possible, use 'M-x report-emacs-bug'. + +This file is about changes in Emacs version 31. + +See file HISTORY for a list of GNU Emacs versions and release dates. +See files NEWS.30, NEWS.29, ..., NEWS.18, and NEWS.1-17 for changes +in older Emacs versions. + +You can narrow news to a specific version by calling 'view-emacs-news' +with a prefix argument or by typing 'C-u C-h C-n'. + +Temporary note: ++++ indicates that all relevant manuals in doc/ have been updated. +--- means no change in the manuals is needed. +When you add a new item, use the appropriate mark if you are sure it +applies, and please also update docstrings as needed. + + +* Installation Changes in Emacs 31.1 + + +* Startup Changes in Emacs 31.1 + + +* Changes in Emacs 31.1 + + +* Editing Changes in Emacs 31.1 + + +* Changes in Specialized Modes and Packages in Emacs 31.1 + + +* New Modes and Packages in Emacs 31.1 + + +* Incompatible Lisp Changes in Emacs 31.1 + + +* Lisp Changes in Emacs 31.1 + + +* Changes in Emacs 31.1 on Non-Free Operating Systems + + +---------------------------------------------------------------------- +This file is part of GNU Emacs. + +GNU Emacs is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. + +GNU Emacs is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Emacs. If not, see . + + +Local variables: +coding: utf-8 +mode: outline +mode: emacs-news +paragraph-separate: "[ ]" +end: diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex index a394688a8a0..a013f7695ed 100644 --- a/etc/refcards/ru-refcard.tex +++ b/etc/refcards/ru-refcard.tex @@ -40,7 +40,7 @@ \newlength{\ColThreeWidth} \setlength{\ColThreeWidth}{25mm} -\newcommand{\versionemacs}[0]{30} % version of Emacs this is for +\newcommand{\versionemacs}[0]{31} % version of Emacs this is for \newcommand{\cyear}[0]{2024} % copyright year \newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 3c719e3f9ac..1285afeddf1 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -67,7 +67,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "30.0.60"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "31.0.50"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 33e252f7e01..5f33898c215 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 30.0.60 for MS-Windows + Emacs version 31.0.50 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You commit 720925046ac662d24c923152af0200e7aeb82805 Merge: 774016b275e 66432341131 Author: Michael Albinus Date: Sun Jun 23 12:53:28 2024 +0200 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs commit 23e08245c3f807f0da4f9b92eee9bb897533c088 Author: Eli Zaretskii Date: Sun Jun 23 06:53:28 2024 -0400 ; Move etc/NEWS to etc/NEWS.30 diff --git a/etc/NEWS b/etc/NEWS.30 similarity index 100% rename from etc/NEWS rename to etc/NEWS.30 commit 774016b275ed37cc86cbe937008ee63e9c4d68b6 Merge: c95caade15d 60475a73d17 Author: Michael Albinus Date: Sun Jun 23 12:52:41 2024 +0200 Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs commit 66432341131ba598d9f7c3623613a8d196bbb876 Merge: 60475a73d17 dd0fc6aff60 Author: Eli Zaretskii Date: Sun Jun 23 06:52:27 2024 -0400 Merge from origin/emacs-30 dd0fc6aff60 New branch emacs-30 bc72c33ac38 * admin/admin.el: (set-version): Fix regexp for configure... commit dd0fc6aff602447d3e62d52a2a3b45b1a5733f28 Author: Eli Zaretskii Date: Sun Jun 23 06:48:54 2024 -0400 New branch emacs-30 * README: * configure.ac: * nt/README.W32: * etc/refcards/ru-refcard.tex: * msdos/sed2v2.inp: * lisp/cus-edit.el (customize-changed-options-previous-release): Cut the emacs-30 release branch. diff --git a/README b/README index c0b4df650e1..54da3587754 100644 --- a/README +++ b/README @@ -2,7 +2,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. -This directory tree holds version 30.0.50 of GNU Emacs, the extensible, +This directory tree holds version 30.0.60 of GNU Emacs, the extensible, customizable, self-documenting real-time display editor. The file INSTALL in this directory says how to build and install GNU diff --git a/configure.ac b/configure.ac index f56717f16a4..b57bb65e0bf 100644 --- a/configure.ac +++ b/configure.ac @@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see . AC_PREREQ([2.65]) dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el. -AC_INIT([GNU Emacs], [30.0.50], [bug-gnu-emacs@gnu.org], [], +AC_INIT([GNU Emacs], [30.0.60], [bug-gnu-emacs@gnu.org], [], [https://www.gnu.org/software/emacs/]) if test "$XCONFIGURE" = "android"; then diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex index 0fc4363ec05..a394688a8a0 100644 --- a/etc/refcards/ru-refcard.tex +++ b/etc/refcards/ru-refcard.tex @@ -40,7 +40,7 @@ \newlength{\ColThreeWidth} \setlength{\ColThreeWidth}{25mm} -\newcommand{\versionemacs}[0]{29} % version of Emacs this is for +\newcommand{\versionemacs}[0]{30} % version of Emacs this is for \newcommand{\cyear}[0]{2024} % copyright year \newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index 19449afbd2b..469f4334b44 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -1280,7 +1280,7 @@ Show the buffer in another window, but don't select it." (unless (eq symbol basevar) (message "`%s' is an alias for `%s'" symbol basevar)))) -(defvar customize-changed-options-previous-release "29.1" +(defvar customize-changed-options-previous-release "29.4" "Version for `customize-changed' to refer back to by default.") ;; Packages will update this variable, so make it available. diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 9f8bca1a987..3c719e3f9ac 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -67,7 +67,7 @@ /^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/ /^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/ /^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/ -/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "30.0.50"/ +/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "30.0.60"/ /^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/ /^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/ /^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/ diff --git a/nt/README.W32 b/nt/README.W32 index 4760d799498..33e252f7e01 100644 --- a/nt/README.W32 +++ b/nt/README.W32 @@ -1,7 +1,7 @@ Copyright (C) 2001-2024 Free Software Foundation, Inc. See the end of the file for license conditions. - Emacs version 30.0.50 for MS-Windows + Emacs version 30.0.60 for MS-Windows This README file describes how to set up and run a precompiled distribution of the latest version of GNU Emacs for MS-Windows. You commit bc72c33ac387a0a8cee5a9c0796db35c1c675297 Author: Eli Zaretskii Date: Sun Jun 23 06:42:29 2024 -0400 * admin/admin.el: (set-version): Fix regexp for configure.ac. diff --git a/admin/admin.el b/admin/admin.el index 7fa2727aeb7..a4d3720ab69 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -110,7 +110,7 @@ Root must be the root of an Emacs source tree." (submatch (1+ (in "0-9.")))))) (set-version-in-file root "configure.ac" version (rx (and "AC_INIT" (1+ (not (in ?,))) - ?, (0+ space) + ?, (0+ space) ?\[ (submatch (1+ (in "0-9.")))))) (set-version-in-file root "nt/README.W32" version (rx (and "version" (1+ space) commit 60475a73d17d293f5c1e82bc5b3c058b414266e8 Author: Po Lu Date: Sun Jun 23 16:41:36 2024 +0800 Disable Ffile_system_info for Android special directories * src/fileio.c (Ffile_system_info): Return Qnil if FILENAME refers to a special directory. diff --git a/src/fileio.c b/src/fileio.c index 9955f83e625..7afe3e75737 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -6531,7 +6531,18 @@ If the underlying system call fails, value is nil. */) || defined STAT_STATFS4 || defined STAT_STATVFS \ || defined STAT_STATVFS64 struct fs_usage u; - if (get_fs_usage (SSDATA (ENCODE_FILE (filename)), NULL, &u) != 0) + const char *name; + + name = SSDATA (ENCODE_FILE (filename)); + +#if defined HAVE_ANDROID && !defined ANDROID_STUBIFY + /* With special directories, this information is unavailable. */ + if (android_is_special_directory (name, "/assets") + || android_is_special_directory (name, "/content")) + return Qnil; +#endif /* defined HAVE_ANDROID && !defined ANDROID_STUBIFY */ + + if (get_fs_usage (name, NULL, &u) != 0) return errno == ENOSYS ? Qnil : file_attribute_errno (filename, errno); return list3 (blocks_to_bytes (u.fsu_blocksize, u.fsu_blocks, false), blocks_to_bytes (u.fsu_blocksize, u.fsu_bfree, false), commit 5f8a9cd4b6f4441c158a750ad7c5b937b559edd4 Author: Martin Rudalics Date: Sun Jun 23 10:26:57 2024 +0200 Fix a bug in 'switch-to-buffer' * lisp/window.el (switch-to-buffer): When asked to switch to the buffer of the selected window, 'switch-to-buffer-obey-display-actions' is non-nil and 'pop-to-buffer' uses the selected window, don't try to restore window start and point from 'window-prev-buffers' (Bug#71616). diff --git a/lisp/window.el b/lisp/window.el index cb2eea11d13..0dc9421fde7 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -9171,9 +9171,14 @@ Return the buffer switched to." (pop-to-buffer buffer norecord))) (t (when switch-to-buffer-obey-display-actions - (let ((selected-window (selected-window))) + (let* ((selected-window (selected-window)) + (old-window-buffer (window-buffer selected-window))) (pop-to-buffer-same-window buffer norecord) - (when (eq (selected-window) selected-window) + ;; Do not ask for setting start and point when showing the + ;; same buffer in the old selected window (Bug#71616). + (when (and (eq (selected-window) selected-window) + (not (eq (window-buffer selected-window) + old-window-buffer))) (setq set-window-start-and-point t)))) (when set-window-start-and-point commit c95caade15d295fa6cc31d337028faa15142b388 Author: Michael Albinus Date: Sat Jun 22 19:52:06 2024 +0200 Minor changes in tramp-tests.el * test/lisp/net/tramp-tests.el (tramp--test-shell-file-name): Use connection-local value. (tramp--test-shell-command-switch): New defun. (tramp-test28-process-file) (tramp-test34-explicit-shell-file-name): Use it. (tramp--test-supports-processes-p): Simplify. (tramp--test-check-files): Use `tramp-compat-seq-keep'. (tramp-test45-asynchronous-requests): Don't let-bind `shell-file-name'. (tramp-test45-asynchronous-requests): Adjust timer. (tramp-test45-asynchronous-requests): Add another test message. diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 516ba53c0f3..08a3dd179e2 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -5066,10 +5066,13 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (defun tramp--test-shell-file-name () "Return default remote shell." - (if (file-exists-p - (concat - (file-remote-p ert-remote-temporary-file-directory) "/system/bin/sh")) - "/system/bin/sh" "/bin/sh")) + (let ((default-directory ert-remote-temporary-file-directory)) + (tramp-compat-connection-local-value shell-file-name))) + +(defun tramp--test-shell-command-switch () + "Return default remote shell command switch." + (let ((default-directory ert-remote-temporary-file-directory)) + (tramp-compat-connection-local-value shell-command-switch))) (ert-deftest tramp-test28-process-file () "Check `process-file'." @@ -5086,14 +5089,14 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (unwind-protect (progn ;; We cannot use "/bin/true" and "/bin/false"; those paths - ;; do not exist on hydra. + ;; do not exist on hydra and on MS Windows. (should (zerop (process-file "true"))) (should-not (zerop (process-file "false"))) (should-not (zerop (process-file "binary-does-not-exist"))) ;; Return exit code. (should (= 42 (process-file - (tramp--test-shell-file-name) - nil nil nil "-c" "exit 42"))) + (tramp--test-shell-file-name) nil nil nil + (tramp--test-shell-command-switch) "exit 42"))) ;; Return exit code in case the process is interrupted, ;; and there's no indication for a signal describing string. (unless (tramp--test-sshfs-p) @@ -5101,8 +5104,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (should (= (+ 128 2) (process-file - (tramp--test-shell-file-name) - nil nil nil "-c" "kill -2 $$"))))) + (tramp--test-shell-file-name) nil nil nil + (tramp--test-shell-command-switch) "kill -2 $$"))))) ;; Return string in case the process is interrupted and ;; there's an indication for a signal describing string. (unless (tramp--test-sshfs-p) @@ -5111,8 +5114,8 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." (string-match-p (rx (| "Interrupt" "Signal 2")) (process-file - (tramp--test-shell-file-name) - nil nil nil "-c" "kill -2 $$"))))) + (tramp--test-shell-file-name) nil nil nil + (tramp--test-shell-command-switch) "kill -2 $$"))))) ;; Check DESTINATION. (dolist (destination `(nil t ,buffer)) @@ -6292,7 +6295,8 @@ INPUT, if non-nil, is a string sent to the process." (connection-local-set-profile-variables 'remote-sh `((explicit-shell-file-name . ,(tramp--test-shell-file-name)) - (explicit-sh-args . ("-c" "echo foo")))) + (explicit-sh-args + . (,(tramp--test-shell-command-switch) "echo foo")))) (connection-local-set-profiles `(:application tramp :protocol ,(file-remote-p default-directory 'method) @@ -7251,14 +7255,14 @@ This requires restrictions of file name syntax." (defun tramp--test-supports-processes-p () "Return whether the method under test supports external processes." - ;; We use it to enable/disable tests in a given test run, for - ;; example for remote processes on MS Windows. - (if (tramp-connection-property-p - tramp-test-vec "tramp--test-supports-processes-p") - (tramp-get-connection-property - tramp-test-vec "tramp--test-supports-processes-p") - (and (or (tramp--test-adb-p) (tramp--test-sh-p) (tramp--test-sshfs-p)) - (not (tramp--test-crypt-p))))) + (unless (tramp--test-crypt-p) + ;; We use it to enable/disable tests in a given test run, for + ;; example for remote processes on MS Windows. + (if (tramp-connection-property-p + tramp-test-vec "tramp--test-supports-processes-p") + (tramp-get-connection-property + tramp-test-vec "tramp--test-supports-processes-p") + (or (tramp--test-adb-p) (tramp--test-sh-p) (tramp--test-sshfs-p))))) (defun tramp--test-supports-set-file-modes-p () "Return whether the method under test supports setting file modes." @@ -7283,8 +7287,8 @@ This requires restrictions of file name syntax." (tmp-name1 (tramp--test-make-temp-name nil quoted)) (tmp-name2 (tramp--test-make-temp-name 'local quoted)) (files - (delq - nil (mapcar (lambda (x) (unless (string-empty-p x) x)) files))) + (tramp-compat-seq-keep + (lambda (x) (unless (string-empty-p x) x)) files)) (process-environment process-environment) (sorted-files (sort (copy-sequence files) #'string-lessp)) buffer) @@ -7724,7 +7728,6 @@ process sentinels. They shall not disturb each other." (define-key special-event-map [sigusr1] #'tramp--test-timeout-handler) (let* (;; For the watchdog. (default-directory (expand-file-name temporary-file-directory)) - (shell-file-name (tramp--test-shell-file-name)) ;; It doesn't work on w32 systems. (watchdog (start-process-shell-command @@ -7794,7 +7797,7 @@ process sentinels. They shall not disturb each other." "Stop timer %s %s" file (current-time-string)) ;; Adjust timer if it takes too much time. (when (> (- (float-time) time) timer-repeat) - (setq timer-repeat (* 1.1 timer-repeat)) + (setq timer-repeat (* 1.1 (- (float-time) time))) (setf (timer--repeat-delay timer) timer-repeat) (tramp--test-message "Increase timer %s" timer-repeat)))))))) @@ -7840,7 +7843,8 @@ process sentinels. They shall not disturb each other." (lambda (proc _state) (tramp--test-with-proper-process-name-and-buffer proc (tramp--test-message - "Process sentinel %s %s" proc (current-time-string))))))) + "Process sentinel %s %s" proc (current-time-string))))) + (tramp--test-message "Process started %s" proc))) ;; Send a string to the processes. Use a random order of ;; the buffers. Mix with regular operation. @@ -8300,6 +8304,8 @@ If INTERACTIVE is non-nil, the tests are run interactively." ;; * Implement `tramp-test31-interrupt-process' and ;; `tramp-test31-signal-process' for "adb", "sshfs" and for direct ;; async processes. Check, why they don't run stable. +;; * Check, why `tramp-test45-asynchronous-requests' often fails. The +;; famous reentrant error? ;; * Check, why direct async processes do not work for ;; `tramp-test45-asynchronous-requests'. commit 8456cb9b698dfbfc90af82b3ebcd739fc22be4e4 Author: Michael Albinus Date: Sat Jun 22 19:49:45 2024 +0200 Tramp: Fix bug#71709, and other minor changes * lisp/net/tramp-message.el (tramp-backtrace): Print also in batch mode. * lisp/net/tramp.el (tramp-skeleton-file-exists-p): Check for property only. (tramp-skeleton-make-process): Don't set `default-directory'. (tramp-handle-make-process): Set it. (Bug#71709) diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index 6cd856c10e5..ecb9071eb57 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el @@ -585,7 +585,7 @@ An alternative method could be chosen with `tramp-file-name-with-method'." (tramp-make-tramp-file-name (make-tramp-file-name :method tramp-file-name-with-method :localname localname))) - ;; Remote file with multi-hop capable method.. + ;; Remote file with multi-hop capable method. ((tramp-multi-hop-p v) (tramp-make-tramp-file-name (make-tramp-file-name diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index a324c4fa826..1d6f47dc364 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -252,8 +252,9 @@ Also see `ignore'." (tramp-error vec tramp-permission-denied file) (tramp-error vec tramp-permission-denied "Permission denied: %s" file))) -;; Function `auth-info-password' is new in Emacs 29.1. However, it -;; doesn't obey cascaded functions, which is fixed in Emacs 30.1 only. +;; Function `auth-info-password' is new in Emacs 29.1. Finally, +;; Bug#49289 is fixed in Emacs 30.1 for the `secrets' and `plstore' +;; auth-sources backends. (defalias 'tramp-compat-auth-info-password (if (>= emacs-major-version 30) 'auth-info-password diff --git a/lisp/net/tramp-message.el b/lisp/net/tramp-message.el index 685b14d14db..8d6458ce07a 100644 --- a/lisp/net/tramp-message.el +++ b/lisp/net/tramp-message.el @@ -357,7 +357,9 @@ This function is meant for debugging purposes." (let ((tramp-verbose (if force 10 tramp-verbose))) (when (>= tramp-verbose 10) (tramp-message - vec-or-proc 10 "\n%s" (with-output-to-string (backtrace)))))) + ;; In batch-mode, we want to see it on stderr. + vec-or-proc (if (and force noninteractive) 1 10) + "\n%s" (with-output-to-string (backtrace)))))) (defsubst tramp-error (vec-or-proc signal fmt-string &rest arguments) "Emit an error. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index d9db17ea598..f97ed66c58b 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3477,7 +3477,7 @@ BODY is the backend specific code." (with-tramp-file-property v localname "file-exists-p" ;; Examine `file-attributes' cache to see if request can ;; be satisfied without remote operation. - (if (tramp-use-file-attributes v) + (if (tramp-file-property-p v localname "file-attributes") (not (null (tramp-get-file-property v localname "file-attributes"))) ,@body)))))) @@ -3594,8 +3594,7 @@ that a stederr file is supported. BODY is the backend specific code." (not (tramp-equal-remote default-directory stderr))) (signal 'file-error (list "Wrong stderr" stderr))) - (let ((default-directory tramp-compat-temporary-file-directory) - (name (tramp-get-unique-process-name name)) + (let ((name (tramp-get-unique-process-name name)) (buffer (if buffer (get-buffer-create buffer) @@ -5058,7 +5057,8 @@ should be set connection-local.") ;; Check for `tramp-sh-file-name-handler' and ;; `adb-file-name-handler-p', because something is different ;; between tramp-sh.el, and tramp-adb.el or tramp-sshfs.el. - (let* ((sh-file-name-handler-p (tramp-sh-file-name-handler-p v)) + (let* ((default-directory tramp-compat-temporary-file-directory) + (sh-file-name-handler-p (tramp-sh-file-name-handler-p v)) (adb-file-name-handler-p (tramp-adb-file-name-p v)) (env (mapcar (lambda (elt) @@ -5896,6 +5896,7 @@ Mostly useful to protect BODY from being interrupted by timers." ;; Be kind for old versions of Emacs. (if (member 'remote-file-error debug-ignored-errors) (throw 'non-essential 'non-essential) + ;(tramp-backtrace ,proc 'force) (tramp-error ,proc 'remote-file-error "Forbidden reentrant call of Tramp")) (with-tramp-suspended-timers