From 6f22631a63e95c8264c5eda269e12400a1bcb9ca Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 29 Jun 2022 13:41:59 -0400 Subject: [PATCH 1/7] * doc/emacs/buffers.texi (Indirect Buffers): Mention modification hook quirk --- doc/emacs/buffers.texi | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 8a8584689fc..a1ad4926be7 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -616,10 +616,11 @@ select it in another window (@code{clone-indirect-buffer-other-window}). The text of the indirect buffer is always identical to the text of its base buffer; changes made by editing either one are visible immediately -in the other. But in all other respects, the indirect buffer and its +in the other. ``Text'' here includes both the characters and their text +properties. But in all other respects, the indirect buffer and its base buffer are completely separate. They can have different names, different values of point, different narrowing, different markers, -different major modes, and different local variables. +different overlays, different major modes, and different local variables. An indirect buffer cannot visit a file, but its base buffer can. If you try to save the indirect buffer, that actually works by saving the @@ -645,6 +646,14 @@ buffer in another window. These functions run the hook named @var{indirect-name} from a buffer @var{base-buffer}, prompting for both using the minibuffer. +Note: When a modification is made to the text of a buffer, the +modification hooks are run only in the base buffer, because most of +the functions on those hooks are not prepared to work correctly in +indirect buffers. So if you need a modification hook function in an +indirect buffer, you need to manually add that function to the hook +@emph{in the base buffer} and then make the function operate in the +desired indirect buffer. + @node Buffer Convenience @section Convenience Features and Customization of Buffer Handling From f5421104e9753a2d3ead19ba31ac5ed1f3a5c03a Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 30 Jun 2022 13:50:34 +0300 Subject: [PATCH 2/7] Fix external image conversion on MS-Windows * lisp/image/image-converter.el (image-converter--convert-magick) (image-converter--convert): Force encoding/decoding to avoid any text or EOL conversions, since we are reading/writing binary data. (Bug#56317) --- lisp/image/image-converter.el | 40 +++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/lisp/image/image-converter.el b/lisp/image/image-converter.el index 460ff16adb0..d3d560f0219 100644 --- a/lisp/image/image-converter.el +++ b/lisp/image/image-converter.el @@ -227,19 +227,21 @@ Only suffixes that map to `image-mode' are returned." (cadr (split-string (symbol-name image-format) "/")))) (defun image-converter--convert-magick (type source image-format) - (let ((command (image-converter--value type :command))) + (let ((command (image-converter--value type :command)) + (coding-system-for-read 'no-conversion)) (unless (zerop (if image-format ;; We have the image data in SOURCE. (progn (insert source) - (apply #'call-process-region (point-min) (point-max) - (car command) t t nil - (append - (cdr command) - (list (format "%s:-" - (image-converter--mime-type - image-format)) - "png:-")))) + (let ((coding-system-for-write 'no-conversion)) + (apply #'call-process-region (point-min) (point-max) + (car command) t t nil + (append + (cdr command) + (list (format "%s:-" + (image-converter--mime-type + image-format)) + "png:-"))))) ;; SOURCE is a file name. (apply #'call-process (car command) nil t nil @@ -252,18 +254,20 @@ Only suffixes that map to `image-mode' are returned." (cl-defmethod image-converter--convert ((type (eql 'ffmpeg)) source image-format) "Convert using ffmpeg." - (let ((command (image-converter--value type :command))) + (let ((command (image-converter--value type :command)) + (coding-system-for-read 'no-conversion)) (unless (zerop (if image-format (progn (insert source) - (apply #'call-process-region - (point-min) (point-max) (car command) - t '(t nil) nil - (append - (cdr command) - (list "-i" "-" - "-c:v" "png" - "-f" "image2pipe" "-")))) + (let ((coding-system-for-write 'no-conversion)) + (apply #'call-process-region + (point-min) (point-max) (car command) + t '(t nil) nil + (append + (cdr command) + (list "-i" "-" + "-c:v" "png" + "-f" "image2pipe" "-"))))) (apply #'call-process (car command) nil '(t nil) nil From 9ffbbddf8e1c3878d8fe3324bfaa7687a456e505 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Thu, 30 Jun 2022 14:31:04 +0200 Subject: [PATCH 3/7] * admin/make-tarball.txt: Minor clarifications. --- admin/make-tarball.txt | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt index 98001e24e7d..6990f27bfa0 100644 --- a/admin/make-tarball.txt +++ b/admin/make-tarball.txt @@ -15,8 +15,8 @@ Steps to take before starting on the first pretest in any release sequence: 2. Consider increasing the value of the variable 'customize-changed-options-previous-release' in cus-edit.el to refer to a newer version of Emacs. (This is now done when cutting - the release branch, see admin/release-branch.txt.) - Commit cus-edit.el if changed. + the release branch, see admin/release-branch.txt, but it can't + hurt to double check its value.) Commit cus-edit.el if changed. 3. Remove any old pretests from https://alpha.gnu.org/gnu/emacs/pretest. You can use 'gnupload --delete' (see below for more gnupload details). @@ -24,8 +24,8 @@ Steps to take before starting on the first pretest in any release sequence: General steps (for each step, check for possible errors): -1. git pull # fetch from the repository - git status # check for locally modified files +1. git pull # fetch from the repository + git status # check for locally modified files Ensure that you have a clean, unmodified state. If you switched in-place from another branch to the release branch, @@ -49,6 +49,9 @@ General steps (for each step, check for possible errors): files will end up in the tarball. Otherwise, the *.eln files might not build correctly on the user's system. + ./autogen.sh + ./configure --with-native-compilation && make + For a release (as opposed to pretest), delete any left-over "---" and "+++" markers from etc/NEWS, as well as the "Temporary note" section at the beginning of that file, and commit etc/NEWS if it @@ -284,7 +287,8 @@ General steps (for each step, check for possible errors): https://alpha.gnu.org/gnu/emacs/pretest/ for a pretest, or https://ftp.gnu.org/gnu/emacs/ for a release. - Download them and check the signatures. Check they build. + Download them and check the signatures and SHA1/SHA256 checksums. + Check they build. 11. Send an announcement to: emacs-devel, and bcc: info-gnu-emacs@gnu.org. For a pretest, also bcc: platform-testers@gnu.org. @@ -302,12 +306,20 @@ General steps (for each step, check for possible errors): To create the included SHA1 and SHA256 checksums, run: - sha1sum emacs-NEW.tar.xz - sha256sum emacs-NEW.tar.xz + sha1sum emacs-NEW.tar.xz + sha256sum emacs-NEW.tar.xz + + You can optionally sign the announcement email, probably using the + same PGP key that you used for signing the tarball. + (Use e.g. `M-x mml-secure-message-sign' in `message-mode' to sign + an email.) 12. After a release, update the Emacs pages as described below. -13. Bump the Emacs version on the release branch. +13. After a release, bump the Emacs version on the release branch. + There is no need to bump the version after a pretest; the version + is bumped before the next pretest or release instead. + If the released version was XX.Y, use 'set-version' from admin/admin.el to bump the version on the release branch to XX.Y.50. Commit the changes. @@ -315,8 +327,8 @@ General steps (for each step, check for possible errors): UPDATING THE EMACS WEB PAGES AFTER A RELEASE As soon as possible after a release, the Emacs web pages at -https://www.gnu.org/software/emacs/ should be updated. (See -admin/notes/www for general information.) +https://www.gnu.org/software/emacs/ should be updated. +(See admin/notes/www for general information.) The pages to update are: @@ -332,7 +344,7 @@ looks like this:
-

Emacs 27.1 is out, download it here!

+

Emacs 28.1 is out, download it here!

From dc3cb749f3d7aa5c807049f62141168e0ee580f2 Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Thu, 30 Jun 2022 22:37:21 +0200 Subject: [PATCH 4/7] Remove obsolete cust-print from elisp index * doc/lispref/edebug.texi (Printing in Edebug): Remove obsolete library "cust-print" from index. --- doc/lispref/edebug.texi | 1 - 1 file changed, 1 deletion(-) diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index ed57802bed3..8f38e576242 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -832,7 +832,6 @@ you continue execution, and recreated next time it is needed. @cindex printing (Edebug) @cindex printing circular structures -@pindex cust-print If an expression in your program produces a value containing circular list structure, you may get an error when Edebug attempts to print it. From 6908309827c573288a029b74aa999adc057958be Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Thu, 30 Jun 2022 23:15:54 +0200 Subject: [PATCH 5/7] Doc fixes: don't refer to some obsolete items * admin/notes/multi-tty: * lisp/chistory.el (command-history): * lisp/emacs-lisp/nadvice.el: * lisp/vc/diff-mode.el: Doc fix; don't refer to obsolete variables and functions. --- admin/notes/multi-tty | 2 +- lisp/chistory.el | 4 ++-- lisp/emacs-lisp/nadvice.el | 2 +- lisp/vc/diff-mode.el | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index 9b3f1606a1b..84bc1b77d4e 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -474,7 +474,7 @@ THINGS TO DO definition. Exceptions found so far: x-select-text and - x-selection-value (old name: x-cut-buffer-or-selection-value). + x-selection-value. ** Have a look at fatal_error_hook. diff --git a/lisp/chistory.el b/lisp/chistory.el index dd0f4997433..33b21422114 100644 --- a/lisp/chistory.el +++ b/lisp/chistory.el @@ -165,11 +165,11 @@ The buffer for that command is the previous current buffer." "Examine commands from variable `command-history' in a buffer. The number of commands listed is controlled by `list-command-history-max'. The command history is filtered by `list-command-history-filter' if non-nil. -Use \\\\[command-history-repeat] to repeat the command on the current line. +Use \\\\[command-history-repeat] to repeat the command on the current line. Otherwise much like Emacs-Lisp Mode except that there is no self-insertion and digits provide prefix arguments. Tab does not indent. -\\{command-history-map} +\\{command-history-mode-map} This command always recompiles the Command History listing and runs the normal hook `command-history-hook'." diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el index 212499d10b0..eae4a0f0ec8 100644 --- a/lisp/emacs-lisp/nadvice.el +++ b/lisp/emacs-lisp/nadvice.el @@ -277,7 +277,7 @@ different, but `function-equal' will hopefully ignore those differences.") (defmacro add-function (where place function &optional props) ;; TODO: ;; - maybe let `where' specify some kind of predicate and use it - ;; to implement things like mode-local or eieio-defmethod. + ;; to implement things like mode-local or cl-defmethod. ;; Of course, that only makes sense if the predicates of all advices can ;; be combined and made more efficient. ;; :before is like a normal add-hook on a normal hook. diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index cd1e1b9d087..f366261ae05 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -2053,7 +2053,7 @@ For use in `add-log-current-defun-function'." (re-search-forward "^[^ ]" nil t)) (pcase-let ((`(,buf ,_line-offset ,pos ,src ,dst ,switched) (ignore-errors ;Signals errors in place of prompting. - ;; Use `noprompt' since this is used in which-func-mode + ;; Use `noprompt' since this is used in which-function-mode ;; and such. (diff-find-source-location nil nil 'noprompt)))) (when buf From 7e33618bbc07b65c36744db8e7ef219d2d942456 Mon Sep 17 00:00:00 2001 From: Brennan Vincent Date: Thu, 30 Jun 2022 14:24:48 -0400 Subject: [PATCH 6/7] ; * src/fns.c (Frequire): Fix a typo in the doc string. (Bug#56328) Copyright-paperwork-exempt: yes --- src/fns.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fns.c b/src/fns.c index 65dc3b61f2b..b2b209e1e8a 100644 --- a/src/fns.c +++ b/src/fns.c @@ -3112,7 +3112,7 @@ dynamic module files, in that order; but the function will not try to load the file without any suffix. See `get-load-suffixes' for the complete list of suffixes. -To find the file, this function searches that directories in `load-path'. +To find the file, this function searches the directories in `load-path'. If the optional third argument NOERROR is non-nil, then, if the file is not found, the function returns nil instead of signaling From 1c3d107cb5367098d592b69d02beedd7aa9ded16 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Fri, 1 Jul 2022 17:17:36 +0300 Subject: [PATCH 7/7] Fix "C-u C-x =" for SPC * lisp/descr-text.el (describe-char): Don't report 'nobreak-space' face for SPC. (Bug#56337) --- lisp/descr-text.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/descr-text.el b/lisp/descr-text.el index 4234deb73af..7427817a8ec 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -690,6 +690,7 @@ The character information includes: (looking-at-p "[ \t]+$"))) 'trailing-whitespace) ((and nobreak-char-display char + (> char 127) (eq (get-char-code-property char 'general-category) 'Zs)) 'nobreak-space) ((and nobreak-char-display char