Hello community, here is the log from the commit of package emacs-auctex for openSUSE:Factory checked in at 2018-07-25 16:14:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/emacs-auctex (Old) and /work/SRC/openSUSE:Factory/.emacs-auctex.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "emacs-auctex" Wed Jul 25 16:14:23 2018 rev:36 rq:625210 version:12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/emacs-auctex/emacs-auctex.changes 2018-04-20 17:31:01.807144468 +0200 +++ /work/SRC/openSUSE:Factory/.emacs-auctex.new/emacs-auctex.changes 2018-07-25 16:14:33.154092532 +0200 @@ -1,0 +2,7 @@ +Wed Jul 25 08:47:45 UTC 2018 - wer...@suse.de + +- Add patches/commits from upstream utf8-names-3b1ffcd8.patch and + utf8-names-a8ea1273.patch to be able handle files names with + UTF-8 characters as well + +------------------------------------------------------------------- New: ---- utf8-names-3b1ffcd8.patch utf8-names-a8ea1273.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ emacs-auctex.spec ++++++ --- /var/tmp/diff_new_pack.EaGsTo/_old 2018-07-25 16:14:33.758093714 +0200 +++ /var/tmp/diff_new_pack.EaGsTo/_new 2018-07-25 16:14:33.762093722 +0200 @@ -45,7 +45,8 @@ # Allows to select printer instance # PATCH-FEATURE-UPSTREAM dvips.patch Patch0: dvips.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-build +Patch10: utf8-names-3b1ffcd8.patch +Patch11: utf8-names-a8ea1273.patch BuildArch: noarch %description @@ -68,6 +69,8 @@ %prep %setup -n auctex-%{version} %patch0 +%patch10 +%patch11 %build unset ${!LC_*} ++++++ utf8-names-3b1ffcd8.patch ++++++ Based on 3b1ffcd8c3387f67fd9be5e1da73d780dffbdd51 Mon Sep 17 00:00:00 2001 From: Ikumi Keita <ik...@ikumi.que.jp> Date: Mon, 28 May 2018 14:46:52 +0900 Subject: [PATCH] TL 2018 non-ascii file name fix for preview-latex * preview.el.in (preview-LaTeX-command): Wrap file name after implicit \input in \detokenize{}. (preview-cache-preamble): Arrange the ini file code so that non-ascii file name can be used with generated format file. Be careful not to lose capability of handling file name with space. (preview-undump-replacements): Use new TeX macro defined in the above ini file code to accept even unusual file name with non-ascii character or space. Delegate quoting of format name to `TeX-inline-preview-internal' so that non-ascii character will not be quoted twice. (TeX-inline-preview-internal): Adjust to the above change. --- preview.el.in | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) --- preview.el.in +++ preview.el.in 2018-07-25 08:32:38.554859129 +0000 @@ -2227,7 +2227,14 @@ list of LaTeX commands is inserted just (defcustom preview-LaTeX-command '("%`%l \"\\nonstopmode\\nofiles\ \\PassOptionsToPackage{" ("," . preview-required-option-list) "}{preview}\ \\AtBeginDocument{\\ifx\\ifPreview\\undefined" -preview-default-preamble "\\fi}\"%' %t") +preview-default-preamble "\\fi}\"%' \"{\\detokenize{\" %t \"}}\"") + ;; 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 is supplemented + ;; implicitly by %`-%' pair. "*Command used for starting a preview. See description of `TeX-command-list' for details." :group 'preview-latex @@ -3302,8 +3309,12 @@ This is passed through `preview-do-repla (defcustom preview-undump-replacements '(("\\`\\([^ ]+\\)\ - .*? \"\\\\input\" \\(.*\\)\\'" - . ("\\1 -interaction=nonstopmode \"&" preview-format-name "\" \\2"))) + .*? \"\\\\input\" \"{\\\\detokenize{\" \\(.*\\) \"}}\"\\'" + . ("\\1 -interaction=nonstopmode " preview-format-name + " \"/AUCTEXINPUT{\" \\2 \"}\""))) + ;; See the ini file code below in `preview-cache-preamble' for the + ;; wierd /AUCTEXINPUT construct. In short, it is crafted so that + ;; dumped format file can read file of non-ascii name. "Use a dumped format for reading preamble." :group 'preview-latex :type '(repeat @@ -3347,8 +3358,11 @@ If FORMAT-CONS is non-nil, a previous fo ;; in the tools bundle is an empty file. (write-region "\\ifx\\pdfoutput\\undefined\\else\ \\let\\PREVIEWdump\\dump\\def\\dump{% -\\edef\\next{{\\catcode`\\ 9 \\pdfoutput=\\the\\pdfoutput\\relax\ -\\the\\everyjob}}\\everyjob\\next\\catcode`\\ 10 \\let\\dump\\PREVIEWdump\\dump}\\fi\\input mylatex.ltx \\relax\n" nil dump-file) +\\edef\\next{{\\pdfoutput=\\the\\pdfoutput\\relax\ +\\the\\everyjob}}\\everyjob\\next\\catcode`\\ 10 % +\\catcode`/ 0 % +\\def\\AUCTEXINPUT##1{\\catcode`/ 12\\relax\\catcode`\\ 9\\relax\\input{\\detokenize{##1}}}% +\\let\\dump\\PREVIEWdump\\dump}\\fi\\input mylatex.ltx \\relax%\n" nil dump-file) (TeX-save-document master) (prog1 (preview-generate-preview @@ -3535,9 +3549,10 @@ internal parameters, STR may be a log to (set-buffer commandbuff) (let* ((preview-format-name (shell-quote-argument - (preview-dump-file-name - (file-name-nondirectory master)))) - (process-environment process-environment) + (concat "&" + (preview-dump-file-name + (file-name-nondirectory master))))) + (process-environment (copy-sequence process-environment)) (process (progn ;; Fix Bug#20773, Bug#27088. ++++++ utf8-names-a8ea1273.patch ++++++ Based on a8ea1273fd95da5702fe95ad3f41d151b621bc72 Mon Sep 17 00:00:00 2001 From: Ikumi Keita <ik...@ikumi.que.jp> Date: Mon, 28 May 2018 14:39:26 +0900 Subject: [PATCH] Accept non-ascii file name in accord with change in TL 2018 * tex.el (TeX-expand-list-builtin): Add new entry %T. Same as %t, except to enclose with \detokenize{} for non UTF-8 LaTeX when \input is supplmented. Adjust the entries %` and %' so that \input is supplemented only when any TeX code is present between them and leave the bind to `TeX-command-text' for later examination. The bind to `TeX-command-pos' is no longer retained. (TeX-command-list): Use %T for "LaTeX". Adjust "TeX" and "AmSTeX" as the same with "LaTeX" in the aspect that user can supply one's own TeX code, as well as any command line options, through `TeX-command-extra-options'. * tex-buf.el (TeX--master-or-region-file-with-extra-quotes): New function to act as a wrapper of `TeX-master-file' and `TeX-region-file' inside `TeX-command-expand'. (TeX-command-expand): Use the above function as the value of `file' and get rid of tricky temporal overriding of `file' with lambda form. (TeX-region-create): Make the first line parsing of %&FORMAT construct, if any, to be valid even for region compilation. Discard text properties when constructing the content of _region_.tex. Drop bind check for `buffer-file-coding-system'. * tests/tex/command-expansion.el (TeX-command-expansion): Reflect the change that \input is not necessarily supplemented now by %`-%' pair in `TeX-command-expand'. --- tex-buf.el | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++---------- tex.el | 38 +++++++++++++++++------------ 2 files changed, 88 insertions(+), 28 deletions(-) --- tex-buf.el +++ tex-buf.el 2018-07-25 08:47:13.599124117 +0000 @@ -554,12 +554,8 @@ without further expansion." (let (pat pos ;;FIXME: Should this be dynamically scoped? entry TeX-command-text TeX-command-pos - ;; FIXME: This variable appears to be unused! - (file `(lambda (&rest args) - (shell-quote-argument - (concat (and (stringp TeX-command-pos) TeX-command-pos) - (apply #',file args) - (and (stringp TeX-command-pos) TeX-command-pos))))) + (orig-file file) + (file #'TeX--master-or-region-file-with-extra-quotes) expansion-res case-fold-search string expansion arguments) (setq list (cons (list "%%" (lambda nil @@ -597,6 +593,47 @@ without further expansion." (replace-match string t t command))))) command) +(defun TeX--master-or-region-file-with-extra-quotes + (&optional extension nondirectory ask extra) + "Return file name with quote for shell. +Wrapper for `TeX-master-file' or `TeX-region-file' to be used in +`TeX-command-expand'. +It is assumed that `orig-file' has dynamic binding of the value of +`TeX-master-file' or `TeX-region-file'. Pass EXTENSION, NONDIRECTORY +and ASK to that function as-is, and arrange the returned file name for +use with command shell. +Enclose the file name with space within quotes `\"' first when +\" \\input\" is supplemented (indicated by dynamically binded +variable `TeX-command-text' having string value.) +Enclose the file name within \\detokenize{} when 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\")" + (shell-quote-argument + (let* ((raw (funcall orig-file 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))))) + (defun TeX-check-files (derived originals extensions) "Check if DERIVED is newer than any of the ORIGINALS. Try each original with each member of EXTENSIONS, in all directories @@ -2104,8 +2141,10 @@ original file." (if (not (re-search-forward TeX-header-end nil t)) "" (re-search-forward "[\r\n]" nil t) - (buffer-substring (point-min) (point))))))))) + (buffer-substring-no-properties + (point-min) (point))))))))) (header-offset 0) + first-line ;; We search for the trailer from the master file, if it is ;; not present in the region. (trailer-offset 0) @@ -2125,21 +2164,36 @@ original file." ;;(beginning-of-line 1) (re-search-backward "[\r\n]" nil t) (setq trailer-offset (TeX-current-offset)) - (buffer-substring (point) (point-max)))))))))) + (buffer-substring-no-properties + (point) (point-max)))))))))) ;; file name should be relative to master (setq original (TeX-quote-filename (file-relative-name original (TeX-master-directory))) master-name (TeX-quote-filename master-name)) + + ;; If the first line begins with "%&", put that line separately on + ;; the very first line of the region file so that the first line + ;; parsing will work. + (setq first-line (if (and (> (length header) 1) + (string= (substring header 0 2) "%&")) + ;; This would work even if header has no newline. + (substring header 0 (string-match "\n" header)) + "")) + (unless (string= first-line "") + ;; Remove first-line from header. + (setq header (substring header (length first-line))) + (setq first-line (concat first-line "\n"))) + (with-current-buffer file-buffer (setq buffer-read-only t buffer-undo-list t) (setq original-content (buffer-string)) (let ((inhibit-read-only t)) (erase-buffer) - (when (boundp 'buffer-file-coding-system) - (setq buffer-file-coding-system - (with-current-buffer master-buffer buffer-file-coding-system))) - (insert "\\message{ !name(" master-name ")}" + (setq buffer-file-coding-system + (with-current-buffer master-buffer buffer-file-coding-system)) + (insert first-line + "\\message{ !name(" master-name ")}" header TeX-region-extra "\n\\message{ !name(" original ") !offset(") --- tex.el +++ tex.el 2018-07-25 08:47:13.599124117 +0000 @@ -121,10 +121,10 @@ If nil, none is specified." ;; `TeX-expand-list-builtin' for a description of the % escapes (defcustom TeX-command-list - '(("TeX" "%(PDF)%(tex) %(file-line-error) %(extraopts) %`%S%(PDFout)%(mode)%' %t" + '(("TeX" "%(PDF)%(tex) %(file-line-error) %`%(extraopts) %S%(PDFout)%(mode)%' %t" TeX-run-TeX nil (plain-tex-mode ams-tex-mode texinfo-mode) :help "Run plain TeX") - ("LaTeX" "%`%l%(mode)%' %t" + ("LaTeX" "%`%l%(mode)%' %T" TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX") ;; Not part of standard TeX. @@ -132,7 +132,7 @@ If nil, none is specified." (texinfo-mode) :help "Run Makeinfo with Info output") ("Makeinfo HTML" "makeinfo %(extraopts) --html %t" TeX-run-compile nil (texinfo-mode) :help "Run Makeinfo with HTML output") - ("AmSTeX" "amstex %(PDFout) %(extraopts) %`%S%(mode)%' %t" + ("AmSTeX" "amstex %(PDFout) %`%(extraopts) %S%(mode)%' %t" TeX-run-TeX nil (ams-tex-mode) :help "Run AMSTeX") ;; support for ConTeXt --pg ;; first version of ConTeXt to support nonstopmode: 2003.2.10 @@ -503,8 +503,19 @@ string." ;; `file' means to call `TeX-master-file' or `TeX-region-file' ("%s" file nil t) ("%t" file 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' + ;; with the TeX codes. + ;; Rule: + ;; 1. %` and %' must appear in pair. + ;; 2. %` and %' must not appear more than once in one command + ;; line string (including the results of %-expansion). + ;; 3. Each TeX codes between %` and %' must be enclosed in + ;; double quotes and preceded by a space. ("%`" (lambda nil - (setq TeX-command-pos t TeX-command-text ""))) + (setq TeX-command-pos t TeX-command-text nil) + "")) (" \"\\" (lambda nil (if (eq TeX-command-pos t) (setq TeX-command-pos pos @@ -528,18 +539,13 @@ string." TeX-command-pos t) (setq pos (1+ pos))))) ("%'" (lambda nil - (prog1 - (if (stringp TeX-command-text) - (progn - (setq pos (+ pos (length TeX-command-text) 9) - TeX-command-pos - (and (string-match " " - (funcall file t t)) - "\"")) - (concat TeX-command-text " \"\\input\"")) - (setq TeX-command-pos nil) - "") - (setq TeX-command-text nil)))) + (setq TeX-command-pos nil) + (if (stringp TeX-command-text) + (progn + (setq pos (+ pos (length TeX-command-text) 9)) + (concat TeX-command-text " \"\\input\"")) + ""))) + ("%T" TeX--master-or-region-file-with-extra-quotes t t nil t) ("%n" TeX-current-line) ("%d" file "dvi" t) ("%f" file "ps" t)