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!

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/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 94e9d2760ec..120c957ff86 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 @@ -649,6 +650,14 @@ both using the minibuffer. When this hook runs, the newly created indirect buffer is the current buffer. +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 diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 622578bcf1c..56f7b7bdfad 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -841,7 +841,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. 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/descr-text.el b/lisp/descr-text.el index 0f01ad676ae..16971aa6611 100644 --- a/lisp/descr-text.el +++ b/lisp/descr-text.el @@ -701,6 +701,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 diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el index 00c9e5438b8..2d5a1b5e77b 100644 --- a/lisp/emacs-lisp/nadvice.el +++ b/lisp/emacs-lisp/nadvice.el @@ -313,7 +313,7 @@ different, but `function-equal' will hopefully ignore those differences.") (defmacro add-function (how place function &optional props) ;; TODO: ;; - maybe let `how' 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. @@ -352,7 +352,7 @@ is also interactive. There are 3 cases: (declare ;;(indent 2) (debug (form [&or symbolp ("local" form) ("var" sexp) gv-place] - form &optional form))) + form &optional form))) `(advice--add-function ,how (gv-ref ,(advice--normalize-place place)) ,function ,props)) diff --git a/lisp/image/image-converter.el b/lisp/image/image-converter.el index 9440c623f90..9ce46f01a33 100644 --- a/lisp/image/image-converter.el +++ b/lisp/image/image-converter.el @@ -244,20 +244,22 @@ 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)) + (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)) (concat image-convert-to-format - ":-"))))) + ":-")))))) ;; SOURCE is a file name. (apply #'call-process (car command) nil t nil @@ -272,18 +274,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" image-convert-to-format - "-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" image-convert-to-format + "-f" "image2pipe" "-"))))) (apply #'call-process (car command) nil '(t nil) nil diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index 3f3e503a3f3..30ba4153a9e 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -2074,7 +2074,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 diff --git a/src/fns.c b/src/fns.c index 7553a094468..f30b2f6fb3c 100644 --- a/src/fns.c +++ b/src/fns.c @@ -3073,7 +3073,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