[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master ec3ea8c036a 2/5: Merge from origin/emacs-29
From: |
Eli Zaretskii |
Subject: |
master ec3ea8c036a 2/5: Merge from origin/emacs-29 |
Date: |
Sat, 2 Sep 2023 04:39:25 -0400 (EDT) |
branch: master
commit ec3ea8c036a4dd4d7b331081320502c6c8ff1961
Merge: e0eca0eb98d 648a5e33e80
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-29
648a5e33e80 Update to Org 9.6.8-3-g21171d
458442fe78c Escape percent character in treesit--inspect-name (bug#65...
bc0426ce8ed Don't add an extraneous slash in remote PATH list in Eshell
34f7a47c9ce Fix Tramp on MS Windows
ea5fd6c96bc * Fix native disassemble on Windows platforms (bug#65455)
91d2d8439bb * Handle missing eln file when trying to disassble (bug#6...
e7ac50a1539 * lisp/emacs-lisp/comp.el (comp--native-compile): Fix OUT...
45cf3a0cede Update to Transient v0.4.3
31d3808fb9d Adapt Eshell manual
0c50af054f9 Fix applying patches with Git on MS-Windows
# Conflicts:
# doc/misc/transient.texi
# test/lisp/eshell/esh-util-tests.el
---
doc/misc/eshell.texi | 3 ++-
doc/misc/transient.texi | 25 -------------------------
etc/refcards/orgcard.tex | 2 +-
lisp/emacs-lisp/comp.el | 3 ++-
lisp/emacs-lisp/disass.el | 17 ++++++++---------
lisp/eshell/esh-util.el | 2 +-
lisp/net/tramp-sh.el | 3 ++-
lisp/org/oc-basic.el | 2 +-
lisp/org/org-element.el | 18 +++---------------
lisp/org/org-version.el | 4 ++--
lisp/org/org.el | 25 ++++++++++++++++---------
lisp/treesit.el | 3 ++-
lisp/vc/vc-git.el | 10 +++++++++-
lisp/vc/vc.el | 21 +++++++++++++++++----
test/lisp/eshell/esh-util-tests.el | 30 ++++++++++++++++++++++++++++++
15 files changed, 96 insertions(+), 72 deletions(-)
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index d3c055715f5..7a563bc794c 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -334,7 +334,8 @@ As with other shells, you can escape special characters and
spaces by
prefixing the character with a backslash (@samp{\}), or by surrounding
the string with apostrophes (@samp{''}) or double quotes (@samp{""}).
This is needed especially for file names with special characters like
-pipe (@samp{|}), which could be part of remote file names.
+pipe (@samp{|}) or square brackets (@samp{[} or @samp{]}), which could
+be part of remote file names.
When you escape a character with @samp{\} outside of any quotes, the
result is the literal character immediately following it. For
diff --git a/doc/misc/transient.texi b/doc/misc/transient.texi
index e06f7759d1b..f7a3cffad2f 100644
--- a/doc/misc/transient.texi
+++ b/doc/misc/transient.texi
@@ -290,18 +290,6 @@ cannot be interrupted with prefix commands.)
@node Usage
@chapter Usage
-@menu
-* Invoking Transients::
-* Aborting and Resuming Transients::
-* Common Suffix Commands::
-* Saving Values::
-* Using History::
-* Getting Help for Suffix Commands::
-* Enabling and Disabling Suffixes::
-* Other Commands::
-* Configuration::
-@end menu
-
@node Invoking Transients
@section Invoking Transients
@@ -1014,14 +1002,6 @@ signal an error.
@node Defining New Commands
@chapter Defining New Commands
-@menu
-* Defining Transients::
-* Binding Suffix and Infix Commands::
-* Defining Suffix and Infix Commands::
-* Using Infix Arguments::
-* Transient State::
-@end menu
-
@node Defining Transients
@section Defining Transients
@@ -2251,11 +2231,6 @@ available depending on user preference.
@node Related Abstractions and Packages
@chapter Related Abstractions and Packages
-@menu
-* Comparison With Prefix Keys and Prefix Arguments::
-* Comparison With Other Packages::
-@end menu
-
@node Comparison With Prefix Keys and Prefix Arguments
@section Comparison With Prefix Keys and Prefix Arguments
diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex
index dd8cae5ce5e..23a2f73dba7 100644
--- a/etc/refcards/orgcard.tex
+++ b/etc/refcards/orgcard.tex
@@ -1,5 +1,5 @@
% Reference Card for Org Mode
-\def\orgversionnumber{9.6.7}
+\def\orgversionnumber{9.6.8}
\def\versionyear{2023} % latest update
\input emacsver.tex
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index ad0077dadda..bb4552459dd 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -4177,7 +4177,8 @@ the deferred compilation mechanism."
(symbols-with-pos-enabled t)
;; Have byte compiler signal an error when compilation fails.
(byte-compile-debug t)
- (comp-ctxt (make-comp-ctxt :output output
+ (comp-ctxt (make-comp-ctxt :output (when output
+ (expand-file-name output))
:with-late-load with-late-load)))
(comp-log "\n\n" 1)
(unwind-protect
diff --git a/lisp/emacs-lisp/disass.el b/lisp/emacs-lisp/disass.el
index dd59a2e02e1..73777d7e701 100644
--- a/lisp/emacs-lisp/disass.el
+++ b/lisp/emacs-lisp/disass.el
@@ -92,17 +92,16 @@ redefine OBJECT if it is a symbol."
(subr-native-elisp-p obj))
(progn
(require 'comp)
- (call-process "objdump" nil (current-buffer) t "-S"
- (native-comp-unit-file (subr-native-comp-unit
obj)))
+ (let ((eln (native-comp-unit-file (subr-native-comp-unit obj))))
+ (if (file-exists-p eln)
+ (call-process "objdump" nil (current-buffer) t "-S" eln)
+ (error "Missing eln file for #<subr %s>" name)))
(goto-char (point-min))
- (re-search-forward (concat "^.*"
+ (re-search-forward (concat "^.*<_?"
(regexp-quote
- (concat "<"
- (when (eq system-type
'darwin)
- "_")
- (comp-c-func-name
- (subr-name obj) "F" t)
- ">:"))))
+ (comp-c-func-name
+ (subr-name obj) "F" t))
+ ">:"))
(beginning-of-line)
(delete-region (point-min) (point))
(when (re-search-forward "^.*<.*>:" nil t 2)
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index ef10d89afc7..d5a75b0d715 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -361,7 +361,7 @@ as the $PATH was actually specified."
(eshell-under-windows-p))
(push "." path))
(if (and remote (not literal-p))
- (mapcar (lambda (x) (file-name-concat remote x)) path)
+ (mapcar (lambda (x) (concat remote x)) path)
path))))
(defun eshell-set-path (path)
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 0599f89655c..c00234d43da 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -2831,7 +2831,8 @@ the result will be a local, non-Tramp, file name."
(with-parsed-tramp-file-name name nil
;; If connection is not established yet, run the real handler.
(if (not (tramp-connectable-p v))
- (tramp-run-real-handler #'expand-file-name (list name))
+ (tramp-drop-volume-letter
+ (tramp-run-real-handler #'expand-file-name (list name)))
(unless (tramp-run-real-handler #'file-name-absolute-p (list localname))
(setq localname (concat "~/" localname)))
;; Tilde expansion if necessary. This needs a shell which
diff --git a/lisp/org/oc-basic.el b/lisp/org/oc-basic.el
index 1c8c37aa941..5c9aad8f6a5 100644
--- a/lisp/org/oc-basic.el
+++ b/lisp/org/oc-basic.el
@@ -162,7 +162,7 @@ Return a hash table with citation references as keys and
fields alist as values.
(puthash (cdr (assq 'id item))
(mapcar (pcase-lambda (`(,field . ,value))
(pcase field
- ((or 'author 'editors)
+ ((or 'author 'editor)
;; Author and editors are arrays of
;; objects, each of them designing a
;; person. These objects may contain
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index 296468eed1a..0debd1a6818 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -6705,20 +6705,8 @@ The function returns the new value of
`org-element--cache-change-warning'."
(setq org-element--cache-change-tic (buffer-chars-modified-tick))
(setq org-element--cache-last-buffer-size (buffer-size))
(goto-char beg)
- (beginning-of-line)
- (let ((bottom (save-excursion
- (goto-char end)
- (if (and (bolp)
- ;; When beg == end, still extent to eol.
- (> (point) beg))
- ;; FIXME: Potential pitfall.
- ;; We are appending to an element end.
- ;; Unless the last inserted char is not
- ;; newline, the next element is not broken
- ;; and does not need to be purged from the
- ;; cache.
- end
- (line-end-position)))))
+ (forward-line 0)
+ (let ((bottom (save-excursion (goto-char end) (line-end-position))))
(prog1
;; Use the worst change warning to not miss important edits.
;; This function is called before edit and after edit by
@@ -7859,7 +7847,7 @@ element ending there."
(setq cached-only nil))
(let (element)
(when (org-element--cache-active-p)
- (if (not org-element--cache) (org-element-cache-reset)
+ (if (not (org-with-base-buffer nil org-element--cache))
(org-element-cache-reset)
(unless cached-only (org-element--cache-sync (current-buffer) pom))))
(setq element (if cached-only
(when (and (org-element--cache-active-p)
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el
index 57e406b24fc..3b58ea06818 100644
--- a/lisp/org/org-version.el
+++ b/lisp/org/org-version.el
@@ -5,13 +5,13 @@
(defun org-release ()
"The release version of Org.
Inserted by installing Org mode or when a release is made."
- (let ((org-release "9.6.7"))
+ (let ((org-release "9.6.8"))
org-release))
;;;###autoload
(defun org-git-version ()
"The Git version of Org mode.
Inserted by installing Org or when a release is made."
- (let ((org-git-version "release_9.6.7-13-g99cc96"))
+ (let ((org-git-version "release_9.6.8-3-g21171d"))
org-git-version))
(provide 'org-version)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index f56aa4f6f69..2c15a37e9c1 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -9,7 +9,7 @@
;; URL: https://orgmode.org
;; Package-Requires: ((emacs "26.1"))
-;; Version: 9.6.7
+;; Version: 9.6.8
;; This file is part of GNU Emacs.
;;
@@ -6322,7 +6322,10 @@ unconditionally."
(if (not level) (outline-next-heading) ;before first headline
(org-back-to-heading invisible-ok)
(when (equal arg '(16)) (org-up-heading-safe))
- (org-end-of-subtree)))
+ (org-end-of-subtree invisible-ok 'to-heading)))
+ ;; At `point-max', if the file does not have ending newline,
+ ;; create one, so that we are not appending stars at non-empty
+ ;; line.
(unless (bolp) (insert "\n"))
(when (and blank? (save-excursion
(backward-char)
@@ -6334,7 +6337,9 @@ unconditionally."
(backward-char))
(unless (and blank? (org-previous-line-empty-p))
(org-N-empty-lines-before-current (if blank? 1 0)))
- (insert stars " ")
+ (insert stars " " "\n")
+ ;; Move point after stars.
+ (backward-char)
;; When INVISIBLE-OK is non-nil, ensure newly created headline
;; is visible.
(unless invisible-ok
@@ -14753,12 +14758,12 @@ is considered `day' (i.e. only `bracket', `day', and
`after' return
values are possible).
When matching, the match groups are the following:
- group 1: year, if any
- group 2: month, if any
- group 3: day number, if any
- group 4: day name, if any
- group 5: hours, if any
- group 6: minutes, if any"
+ group 2: year, if any
+ group 3: month, if any
+ group 4: day number, if any
+ group 5: day name, if any
+ group 7: hours, if any
+ group 8: minutes, if any"
(let* ((regexp
(if extended
(if (eq extended 'agenda)
@@ -17662,6 +17667,8 @@ If INDENT is non-nil, call `newline-and-indent' with
ARG to
indent unconditionally; otherwise, call `newline' with ARG and
INTERACTIVE, which can trigger indentation if
`electric-indent-mode' is enabled."
+ (when interactive
+ (org-fold-check-before-invisible-edit 'insert))
(if indent
(org-newline-and-indent arg)
(newline arg interactive)))
diff --git a/lisp/treesit.el b/lisp/treesit.el
index 1c96edbdbc7..d7032b16dab 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -2641,7 +2641,8 @@ in `treesit-parser-list'."
'bold nil))
name
(if (treesit-node-check node 'named) ")" "\""))))
- (setq treesit--inspect-name name)
+ ;; Escape the percent character for mode-line. (Bug#65540)
+ (setq treesit--inspect-name (string-replace "%" "%%" name))
(force-mode-line-update)
(when arg
(if node-list
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index c689eec444b..9a78264d8ff 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -1120,7 +1120,15 @@ It is based on `log-edit-mode', and has Git-specific
extensions."
(t (push file-name to-stash)))
(setq pos (point))))))
(unless (string-empty-p vc-git-patch-string)
- (let ((patch-file (make-nearby-temp-file "git-patch")))
+ (let ((patch-file (make-nearby-temp-file "git-patch"))
+ ;; Temporarily countermand the let-binding at the
+ ;; beginning of this function.
+ (coding-system-for-write
+ (coding-system-change-eol-conversion
+ ;; On DOS/Windows, it is important for the patch file
+ ;; to have the Unix EOL format, because Git expects
+ ;; that, even on Windows.
+ (or pcsw vc-git-commits-coding-system) 'unix)))
(with-temp-file patch-file
(insert vc-git-patch-string))
(unwind-protect
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index be7fa46c28e..2f4b028bb4a 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1883,7 +1883,9 @@ in the output buffer."
(vc-run-delayed (vc-diff-finish (current-buffer) nil))))
(defun vc-diff-internal (async vc-fileset rev1 rev2 &optional verbose buffer)
- "Report diffs between two revisions of a fileset.
+ "Report diffs between revisions REV1 and REV2 of a fileset in VC-FILESET.
+ASYNC non-nil means run the backend's commands asynchronously if possible.
+VC-FILESET should have the format described in `vc-deduce-fileset'.
Output goes to the buffer BUFFER, which defaults to *vc-diff*.
BUFFER, if non-nil, should be a buffer or a buffer name.
Return t if the buffer had changes, nil otherwise."
@@ -1899,15 +1901,26 @@ Return t if the buffer had changes, nil otherwise."
;; but the only way to set it for each file included would
;; be to call the back end separately for each file.
(coding-system-for-read
- (if files (vc-coding-system-for-diff (car files)) 'undecided))
+ ;; Force the EOL conversion to be -unix, in case the files
+ ;; to be compared have DOS EOLs. In that case, EOL
+ ;; conversion will produce a patch file that will either
+ ;; fail to apply, or will change the EOL format of some of
+ ;; the lines in the patched file.
+ (coding-system-change-eol-conversion
+ (if files (vc-coding-system-for-diff (car files)) 'undecided)
+ 'unix))
(orig-diff-buffer-clone
(if revert-buffer-in-progress-p
(clone-buffer
(generate-new-buffer-name " *vc-diff-clone*") nil))))
;; On MS-Windows and MS-DOS, Diff is likely to produce DOS-style
;; EOLs, which will look ugly if (car files) happens to have Unix
- ;; EOLs.
- (if (memq system-type '(windows-nt ms-dos))
+ ;; EOLs. But for Git, we must force Unix EOLs in the diffs, since
+ ;; Git always produces Unix EOLs in the parts that didn't come
+ ;; from the file, and wants to see any CR characters when applying
+ ;; patches.
+ (if (and (memq system-type '(windows-nt ms-dos))
+ (not (eq (car vc-fileset) 'Git)))
(setq coding-system-for-read
(coding-system-change-eol-conversion coding-system-for-read
'dos)))
diff --git a/test/lisp/eshell/esh-util-tests.el
b/test/lisp/eshell/esh-util-tests.el
index fe4eb9f31dd..7bd71b260ff 100644
--- a/test/lisp/eshell/esh-util-tests.el
+++ b/test/lisp/eshell/esh-util-tests.el
@@ -19,9 +19,15 @@
;;; Code:
+(require 'tramp)
(require 'ert)
(require 'esh-util)
+(require 'eshell-tests-helpers
+ (expand-file-name "eshell-tests-helpers"
+ (file-name-directory (or load-file-name
+ default-directory))))
+
;;; Tests:
(ert-deftest esh-util-test/eshell-stringify/string ()
@@ -156,4 +162,28 @@
(ert-deftest esh-util-test/eshell-printable-size/human-readable-arg ()
(should-error (eshell-printable-size 0 999 nil t)))
+(ert-deftest esh-util-test/path/get ()
+ "Test that getting the Eshell path returns the expected results."
+ (let ((expected-path (butlast (exec-path))))
+ (should (equal (eshell-get-path)
+ (if (eshell-under-windows-p)
+ (cons "." expected-path)
+ expected-path)))
+ (should (equal (eshell-get-path 'literal)
+ expected-path))))
+
+(ert-deftest esh-util-test/path/get-remote ()
+ "Test that getting the remote Eshell path returns the expected results."
+ (let* ((default-directory ert-remote-temporary-file-directory)
+ (expected-path (butlast (exec-path))))
+ ;; Make sure we don't have a doubled directory separator.
+ (should (seq-every-p (lambda (i) (not (string-match-p "//" i)))
+ (eshell-get-path)))
+ (should (equal (eshell-get-path)
+ (mapcar (lambda (i)
+ (concat (file-remote-p default-directory) i))
+ expected-path)))
+ (should (equal (eshell-get-path 'literal)
+ expected-path))))
+
;;; esh-util-tests.el ends here