[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[AUCTeX-diffs] [elpa] externals/auctex bf30c11 05/62: Make "%o" compatib
From: |
Tassilo Horn |
Subject: |
[AUCTeX-diffs] [elpa] externals/auctex bf30c11 05/62: Make "%o" compatible again with file name with spaces |
Date: |
Sun, 20 Dec 2020 10:39:50 -0500 (EST) |
branch: externals/auctex
commit bf30c1106f87ed14ec09e9c735f37c071743c802
Author: Ikumi Keita <ikumi@ikumi.que.jp>
Commit: Tassilo Horn <tsdh@gnu.org>
Make "%o" compatible again with file name with spaces
* tex-buf.el (TeX-active-master-with-quotes): Rename from
`TeX--master-or-region-file-with-extra-quotes' and make public.
Incorporate adjust of `TeX-expand-pos' from `TeX-command-expand'.
(TeX-command-expand): Simplify.
* tex.el (TeX-expand-list-builtin): Use renamed function instead of
`TeX-active-master'.
* tests/tex/command-expansion.el (TeX-command-expand-skip-file-name):
Include "%o" in test.
(TeX-command-expand-file-name-with-spaces): New test.
(TeX-command-detokenize): Add case where `TeX-master' has space.
---
tests/tex/command-expansion.el | 54 +++++++++++++++++++++++++--------
tex-buf.el | 68 ++++++++++++++++++++++--------------------
tex.el | 25 ++++++++--------
3 files changed, 88 insertions(+), 59 deletions(-)
diff --git a/tests/tex/command-expansion.el b/tests/tex/command-expansion.el
index bb5c7d4..3b2779d 100644
--- a/tests/tex/command-expansion.el
+++ b/tests/tex/command-expansion.el
@@ -88,13 +88,20 @@
;; Skip on w32 because the quoting style of `shell-quote-argument'
;; is different.
(skip-unless (not (eq system-type 'windows-nt)))
- (should (string=
- (let ((major-mode 'latex-mode)
- (TeX-engine 'default)
- (TeX-master "/tmp/abc")
- (TeX-command-extra-options " \"\\foo\""))
- (TeX-command-expand "%`%(extraopts)%' %T"))
- " \"\\foo\" \"\\input\" \\\\detokenize\\{\\ abc.tex\\ \\}")))
+ (let ((major-mode 'latex-mode)
+ (TeX-engine 'default)
+ (TeX-command-extra-options " \"\\foo\"")
+ TeX-master)
+
+ (setq TeX-master "/tmp/abc")
+ (should (string=
+ (TeX-command-expand "%`%(extraopts)%' %T")
+ " \"\\foo\" \"\\input\" \\\\detokenize\\{\\ abc.tex\\ \\}"))
+
+ (setq TeX-master "/tmp/abc def")
+ (should (string=
+ (TeX-command-expand "%`%(extraopts)%' %T")
+ " \"\\foo\" \"\\input\" \\\\detokenize\\{\\ \\\"abc\\
def.tex\\\"\\ \\}"))))
(ert-deftest TeX-command-expand-skip-file-name ()
"Check whether file name is not subject to further expansion.
@@ -105,6 +112,7 @@ See
<https://lists.gnu.org/r/bug-auctex/2014-08/msg00012.html>."
;; is different.
(skip-unless (not (eq system-type 'windows-nt)))
(let ((TeX-master "abc-def")
+ (TeX-output-extension "pdf")
(TeX-expand-list '(("-" (lambda () ":")))))
(should (string=
(TeX-command-expand "%s")
@@ -121,12 +129,9 @@ See
<https://lists.gnu.org/r/bug-auctex/2014-08/msg00012.html>."
(should (string=
(TeX-command-expand "%f")
(TeX-master-file "ps" t)))
- ;; The expander of "%o" does not yet cater for this possible endless
- ;; loop.
- ;; (should (string=
- ;; (TeX-command-expand "%o")
- ;; (TeX-master-file "pdf" t)))
- ))
+ (should (string=
+ (TeX-command-expand "%o")
+ (TeX-master-file "pdf" t)))))
(ert-deftest TeX-command-expand-active-master ()
"Test whether `TeX-active-master' is valid argument for
`TeX-command-expand'."
@@ -144,4 +149,27 @@ See
<https://lists.gnu.org/r/bug-auctex/2014-08/msg00012.html>."
(TeX-command-expand "%s")
TeX-region))))
+(ert-deftest TeX-command-expand-file-name-with-spaces ()
+ "Test whether file name with spaces is quoted correctly."
+ (let ((TeX-master "abc def")
+ (TeX-output-extension "pdf"))
+ (should (string=
+ (TeX-command-expand "%s")
+ (shell-quote-argument TeX-master)))
+ (should (string=
+ (TeX-command-expand "%t")
+ (shell-quote-argument (TeX-master-file "tex" t))))
+ (should (string=
+ (TeX-command-expand "%T")
+ (shell-quote-argument (TeX-master-file "tex" t))))
+ (should (string=
+ (TeX-command-expand "%d")
+ (shell-quote-argument (TeX-master-file "dvi" t))))
+ (should (string=
+ (TeX-command-expand "%f")
+ (shell-quote-argument (TeX-master-file "ps" t))))
+ (should (string=
+ (TeX-command-expand "%o")
+ (shell-quote-argument (TeX-master-file "pdf" t))))))
+
;;; command-expansion.el ends here
diff --git a/tex-buf.el b/tex-buf.el
index 134bf36..9b04a07 100644
--- a/tex-buf.el
+++ b/tex-buf.el
@@ -557,13 +557,6 @@ without further expansion."
arguments (cdr (cdr entry)) ;Remaining elements
string (save-match-data
(cond
- ((eq expansion #'TeX-active-master)
- (let ((res (apply
#'TeX--master-or-region-file-with-extra-quotes arguments)))
- ;; Advance past the file name in order to
- ;; prevent expanding any substring of it.
- (setq TeX-expand-pos
- (+ TeX-expand-pos (length res)))
- res))
((functionp expansion)
(apply expansion arguments))
((boundp expansion)
@@ -575,7 +568,7 @@ without further expansion."
(replace-match string t t TeX-expand-command))))
TeX-expand-command))
-(defun TeX--master-or-region-file-with-extra-quotes
+(defun TeX-active-master-with-quotes
(&optional extension nondirectory ask extra)
"Return the current master or region file name with quote for shell.
Pass arguments EXTENSION NONDIRECTORY ASK to `TeX-active-master'.
@@ -587,31 +580,40 @@ the following three conditions are met:
1. compiling with standard (pdf)LaTeX or upLaTeX
2. \" \\input\" is supplemented
3. EXTRA is non-nil (default when expanding \"%T\")
-
-Helper function of `TeX-command-expand'."
- (shell-quote-argument
- (let* ((raw (TeX-active-master extension nondirectory ask))
- ;; String `TeX-command-text' means that the file name is
- ;; given through \input command.
- (quote-for-space (if (and (stringp TeX-command-text)
- (string-match " " raw))
- "\"" "")))
- (format
- (if (and extra
- (stringp TeX-command-text)
- (memq major-mode '(latex-mode doctex-mode))
- (memq TeX-engine '(default uptex)))
- ;; Since TeXLive 2018, the default encoding for LaTeX
- ;; files has been changed to UTF-8 if used with
- ;; classic TeX or pdfTeX. I.e.,
- ;; \usepackage[utf8]{inputenc} is enabled by default
- ;; in (pdf)latex.
- ;; c.f. LaTeX News issue 28
- ;; Due to this change, \detokenize is required to
- ;; recognize non-ascii characters in the file name
- ;; when \input precedes.
- "\\detokenize{ %s }" "%s")
- (concat quote-for-space raw quote-for-space)))))
+Adjust dynamically bound variable `TeX-expand-pos' to avoid possible
+infinite loop in `TeX-command-expand'.
+
+Helper function of `TeX-command-expand'. Use only within entries in
+`TeX-expand-list-builtin' and `TeX-expand-list'."
+ (let ((res
+ (shell-quote-argument
+ (let* ((raw (TeX-active-master extension nondirectory ask))
+ ;; String `TeX-command-text' means that the file name is
+ ;; given through \input command.
+ (quote-for-space (if (and (stringp TeX-command-text)
+ (string-match " " raw))
+ "\"" "")))
+ (format
+ (if (and extra
+ (stringp TeX-command-text)
+ (memq major-mode '(latex-mode doctex-mode))
+ (memq TeX-engine '(default uptex)))
+ ;; Since TeXLive 2018, the default encoding for LaTeX
+ ;; files has been changed to UTF-8 if used with
+ ;; classic TeX or pdfTeX. I.e.,
+ ;; \usepackage[utf8]{inputenc} is enabled by default
+ ;; in (pdf)latex.
+ ;; c.f. LaTeX News issue 28
+ ;; Due to this change, \detokenize is required to
+ ;; recognize non-ascii characters in the file name
+ ;; when \input precedes.
+ "\\detokenize{ %s }" "%s")
+ (concat quote-for-space raw quote-for-space))))))
+ ;; Advance past the file name in order to
+ ;; prevent expanding any substring of it.
+ (setq TeX-expand-pos
+ (+ TeX-expand-pos (length res)))
+ res))
(defun TeX-check-files (derived originals extensions)
"Check if DERIVED is newer than any of the ORIGINALS.
diff --git a/tex.el b/tex.el
index efcb8e1..dd74f07 100644
--- a/tex.el
+++ b/tex.el
@@ -80,7 +80,6 @@
(defvar TeX-mode-map)
(defvar TeX-mode-p)
(defvar TeX-output-extension)
-(defvar TeX-output-extension)
(defvar TeX-source-correlate-mode)
(defvar TeX-source-specials-places)
(defvar TeX-source-specials-tex-flags)
@@ -590,10 +589,11 @@ string."
(or (if TeX-source-correlate-output-page-function
(funcall TeX-source-correlate-output-page-function))
"1")))
- ;; `TeX-active-master' calls either calls`TeX-master-file' or
- ;; `TeX-region-file' returning the master or region file.
- ("%s" TeX-active-master nil t)
- ("%t" TeX-active-master t t)
+ ;; `TeX-active-master-with-quotes' calls either `TeX-master-file'
+ ;; or `TeX-region-file' returning the master or region file, and
+ ;; adds suitable quotes for use in shell command line.
+ ("%s" TeX-active-master-with-quotes nil t)
+ ("%t" TeX-active-master-with-quotes t t)
;; If any TeX codes appear in the interval between %` and %', move
;; all of them after the interval and supplement " \input". The
;; appearance is marked by leaving the bind to `TeX-command-text'
@@ -636,15 +636,14 @@ string."
(setq TeX-expand-pos (+ TeX-expand-pos (length
TeX-command-text) 9))
(concat TeX-command-text " \"\\input\""))
"")))
- ;; The fourth argument of t is actually for wrapper function
- ;; provided by `TeX--master-or-region-file-with-extra-quotes'.
- ;; See its doc string as well as the comments in
- ;; `TeX-command-expand'.
- ("%T" TeX-active-master t t nil t)
+ ;; The fourth argument of t directs to supply "\detokenize{}" when
+ ;; necessary. See doc string and comment of
+ ;; `TeX-active-master-with-quotes'.
+ ("%T" TeX-active-master-with-quotes t t nil t)
("%n" TeX-current-line)
- ("%d" TeX-active-master "dvi" t)
- ("%f" TeX-active-master "ps" t)
- ("%o" (lambda nil (TeX-active-master (TeX-output-extension) t)))
+ ("%d" TeX-active-master-with-quotes "dvi" t)
+ ("%f" TeX-active-master-with-quotes "ps" t)
+ ("%o" (lambda nil (TeX-active-master-with-quotes (TeX-output-extension)
t)))
;; for source specials the file name generated for the xdvi
;; command needs to be relative to the master file, just in
;; case the file is in a different subdirectory
- [AUCTeX-diffs] [elpa] externals/auctex a92fe0b 59/62: Add new style/scholax.el, (continued)
- [AUCTeX-diffs] [elpa] externals/auctex a92fe0b 59/62: Add new style/scholax.el, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex 92de017 53/62: ; Fix byte-compile warnings in styles, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex ec263fc 54/62: ; Fix byte-compile warnings, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex eb40d5e 57/62: ; Fix doc string, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex 3db4ed7 58/62: ; * tex-bar.el: Enable lexical binding., Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex 352de40 50/62: ; Fix byte-compile warnings in styles, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex 8afd11e 03/62: ; Silence the compiler, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex e9af4f1 14/62: * style/fancyvrb.el: Replace dynamically bound `optional'., Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex cebf8cc 16/62: Enable lexical-binding for texmathp.el, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex 4c1430a 20/62: Add new style/appendix.el, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex bf30c11 05/62: Make "%o" compatible again with file name with spaces,
Tassilo Horn <=
- [AUCTeX-diffs] [elpa] externals/auctex b41e063 62/62: Merge remote-tracking branch 'origin/master' into externals/auctex, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex fc037de 44/62: ; Fix byte-compiler warnings in styles, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex 6f232c3 52/62: ; Fix byte-compile warnings in styles, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex ced4b1a 10/62: Adapt styles to lexical-binding, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex bacae01 45/62: ; Fix byte-compiler warnings in styles, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex e8528e0 56/62: Update style/subfiles.el to package version 2.1, Tassilo Horn, 2020/12/20
- [AUCTeX-diffs] [elpa] externals/auctex a5c2dd9 61/62: Document lexical binding changes., Tassilo Horn, 2020/12/20