From 8d2f78c421c73730f344dbf71dbed61d5ef8e46d Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Wed, 11 May 2016 02:26:54 +0300 Subject: [PATCH 1/7] Don't treat JS spread as contination method call * lisp/progmodes/js.el (js--indent-operator-re): Allow only one dot (bug#23492). * test/indent/js.js (default): Add a corresponding example. --- lisp/progmodes/js.el | 2 +- test/indent/js.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 48eb3e778e1..f024d397ffb 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -1744,7 +1744,7 @@ This performs fontification according to `js--class-styles'." "Regular expression matching variable declaration keywords.") (defconst js--indent-operator-re - (concat "[-+*/%<>&^|?:.]\\([^-+*/]\\|$\\)\\|!?=\\|" + (concat "[-+*/%<>&^|?:.]\\([^-+*/.]\\|$\\)\\|!?=\\|" (js--regexp-opt-symbol '("in" "instanceof"))) "Regexp matching operators that affect indentation of continued expressions.") diff --git a/test/indent/js.js b/test/indent/js.js index 23fae17b3ce..b40d47b3e5d 100644 --- a/test/indent/js.js +++ b/test/indent/js.js @@ -103,6 +103,12 @@ Foobar console.log(num); }); +var z = [ + ...iterableObj, + 4, + 5 +] + var arr = [ -1, 2, -3, 4 + From f79c3523354e45e2dbc97bb92718c9941c1a1a3b Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 12 May 2016 00:48:37 +0300 Subject: [PATCH 2/7] Redo the fix for bug#21839 * lisp/help.el (help-add-fundoc-usage): Undo the previous change. (help--make-usage-docstring): Escape newlines when printing. * lisp/emacs-lisp/cl-macs.el (cl--transform-lambda): Ditto (bug#21839). --- lisp/emacs-lisp/cl-macs.el | 3 ++- lisp/help.el | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index ae52e8bebec..68abe67698c 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -299,7 +299,8 @@ FORM is of the form (ARGS . BODY)." ;; Be careful with make-symbol and (back)quote, ;; see bug#12884. (help--docstring-quote - (let ((print-gensym nil) (print-quoted t)) + (let ((print-gensym nil) (print-quoted t) + (print-escape-newlines t)) (format "%S" (cons 'fn (cl--make-usage-args orig-args)))))) header))) diff --git a/lisp/help.el b/lisp/help.el index 72893754e1e..57f358b9a72 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -1395,7 +1395,7 @@ ARGLIST can also be t or a string of the form \"(FUN ARG1 ARG2 ...)\"." (if (< (- (match-end 0) (match-beginning 0)) 2) "\n" "") "\n\n") (if (stringp arglist) - (if (string-match "\\`[^ ]+\\(\\(?:.\\|\n\\)*\\))\\'" arglist) + (if (string-match "\\`[^ ]+\\(.*\\))\\'" arglist) (concat "(fn" (match-string 1 arglist) ")") (error "Unrecognized usage format")) (help--make-usage-docstring 'fn arglist))))) @@ -1468,7 +1468,8 @@ the same names as used in the original source code, when possible." (define-obsolete-function-alias 'help-make-usage 'help--make-usage "25.1") (defun help--make-usage-docstring (fn arglist) - (help--docstring-quote (format "%S" (help--make-usage fn arglist)))) + (let ((print-escape-newlines t)) + (help--docstring-quote (format "%S" (help--make-usage fn arglist))))) (provide 'help) From 9596ea1534d0c5146be5c1a58d0c5a70f56b44c3 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 12 May 2016 01:18:38 +0300 Subject: [PATCH 3/7] ; Revert "* emacs-lisp/lisp-mnt.el (lm-header): save-excursion" This reverts commit bf3f6a961f378f35a292c41c0bfbdae88ee1b1b9. (Bug#22616) --- lisp/emacs-lisp/lisp-mnt.el | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index 7d5b7dc749d..46373da5eb9 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -265,17 +265,16 @@ a section." (defun lm-header (header) "Return the contents of the header named HEADER." - (save-excursion - (goto-char (point-min)) - (let ((case-fold-search t)) - (when (and (re-search-forward (lm-get-header-re header) (lm-code-mark) t) - ;; RCS ident likes format "$identifier: data$" - (looking-at - (if (save-excursion - (skip-chars-backward "^$" (match-beginning 0)) - (= (point) (match-beginning 0))) - "[^\n]+" "[^$\n]+"))) - (match-string-no-properties 0))))) + (goto-char (point-min)) + (let ((case-fold-search t)) + (when (and (re-search-forward (lm-get-header-re header) (lm-code-mark) t) + ;; RCS ident likes format "$identifier: data$" + (looking-at + (if (save-excursion + (skip-chars-backward "^$" (match-beginning 0)) + (= (point) (match-beginning 0))) + "[^\n]+" "[^$\n]+"))) + (match-string-no-properties 0)))) (defun lm-header-multiline (header) "Return the contents of the header named HEADER, with continuation lines. From 4c5a00b09f9aed267d60ef9741a6bee206728d10 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 12 May 2016 01:29:03 +0300 Subject: [PATCH 4/7] Make package-install-from-buffer not move point * lisp/emacs-lisp/package.el (package-install-from-buffer): Use save-excursion here (bug#22616). --- lisp/emacs-lisp/package.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 3f0e972afeb..5371f0b9e55 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1989,7 +1989,8 @@ Downloads and installs required packages as needed." ((derived-mode-p 'tar-mode) (package-tar-file-info)) (t - (package-buffer-info)))) + (save-excursion + (package-buffer-info))))) (name (package-desc-name pkg-desc))) ;; Download and install the dependencies. (let* ((requires (package-desc-reqs pkg-desc)) From 1a5a05cf6f68277c142fe3753581d3b0c6470156 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Thu, 12 May 2016 03:18:45 +0300 Subject: [PATCH 5/7] Do not mistake colon at the end of regexp for slash symbol * lisp/progmodes/ruby-mode.el (ruby-syntax-propertize): Check the parse state in the "Symbols with special characters" rule (bug#23515). --- lisp/progmodes/ruby-mode.el | 4 +++- test/automated/ruby-mode-tests.el | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 972bf99145e..cd3b04de712 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -1858,7 +1858,9 @@ It will be properly highlighted even when the call omits parens.") (string-to-syntax "'")))) ;; Symbols with special characters. ("\\(^\\|[^:]\\)\\(:\\([-+~]@?\\|[/%&|^`]\\|\\*\\*?\\|<\\(<\\|=>?\\)?\\|>[>=]?\\|===?\\|=~\\|![~=]?\\|\\[\\]=?\\)\\)" - (3 (string-to-syntax "_"))) + (3 (unless (nth 8 (syntax-ppss (match-beginning 3))) + (goto-char (match-end 0)) + (string-to-syntax "_")))) ;; Part of method name when at the end of it. ("[!?]" (0 (unless (save-excursion diff --git a/test/automated/ruby-mode-tests.el b/test/automated/ruby-mode-tests.el index 7e85fb83edd..52126a3bdf1 100644 --- a/test/automated/ruby-mode-tests.el +++ b/test/automated/ruby-mode-tests.el @@ -146,6 +146,9 @@ VALUES-PLIST is a list with alternating index and value elements." (ert-deftest ruby-slash-char-literal-is-not-mistaken-for-regexp () (ruby-assert-state "?/" 3 nil)) +(ert-deftest ruby-regexp-is-not-mistaken-for-slash-symbol () + (ruby-assert-state "x = /foo:/" 3 nil)) + (ert-deftest ruby-indent-simple () (ruby-should-indent-buffer "if foo From 66cd4d8bd031fb5cb1c65e3b008681021ea32906 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Thu, 12 May 2016 10:35:27 -0700 Subject: [PATCH 6/7] * lisp/emacs-lisp/find-func.el (find-feature-regexp) (find-alias-regexp): Fix :version. --- lisp/emacs-lisp/find-func.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el index 0575ce49f80..f174a64fcba 100644 --- a/lisp/emacs-lisp/find-func.el +++ b/lisp/emacs-lisp/find-func.el @@ -111,7 +111,7 @@ should insert the feature name." ;; (point-min), which is acceptable in this case. :type 'regexp :group 'xref - :version "25.0") + :version "25.1") (defcustom find-alias-regexp "(defalias +'%s" @@ -120,7 +120,7 @@ Note it must contain a `%s' at the place where `format' should insert the feature name." :type 'regexp :group 'xref - :version "25.0") + :version "25.1") (defvar find-function-regexp-alist '((nil . find-function-regexp) From 9c2a1a264cf418fcf187b95b49fe986b32ceabef Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Fri, 13 May 2016 07:41:07 -0700 Subject: [PATCH 7/7] * doc/misc/texinfo.tex: Sync from gnulib. --- doc/misc/texinfo.tex | 56 +++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 37e2de896ec..314063cafe1 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2016-04-14.07} +\def\texinfoversion{2016-05-07.20} % % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, @@ -67,6 +67,10 @@ \everyjob{\message{[Texinfo version \texinfoversion]}% \catcode`+=\active \catcode`\_=\active} +% LaTeX's \typeout. This ensures that the messages it is used for +% are identical in format to the corresponding ones from latex/pdflatex. +\def\typeout{\immediate\write17}% + \chardef\other=12 % We never want plain's \outer definition of \+ in Texinfo. @@ -1534,7 +1538,6 @@ output) for that.)} % % PDF outline support % - \pdfmakepagedesttrue \relax % Emulate the primitive of pdfTeX \def\pdfdest name#1 xyz{% \special{pdf:dest (name#1) [@thispage /XYZ @xpos @ypos]}% @@ -3270,8 +3273,8 @@ end % @{ @} @lbracechar{} @rbracechar{} all generate brace characters. % Unless we're in typewriter, use \ecfont because the CM text fonts do % not have braces, and we don't want to switch into math. -\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} -\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} +\def\mylbrace{{\ifmonospace\char123\else\ensuremath\lbrace\fi}} +\def\myrbrace{{\ifmonospace\char125\else\ensuremath\rbrace\fi}} \let\{=\mylbrace \let\lbracechar=\{ \let\}=\myrbrace \let\rbracechar=\} \begingroup @@ -4753,7 +4756,7 @@ end \def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx} \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} -% Used when writing an index entry out to an index file, to prevent +% Used when writing an index entry out to an index file to prevent % expansion of Texinfo commands that can appear in an index entry. % \def\indexdummies{% @@ -4889,12 +4892,9 @@ end % % We want to disable all macros so that they are not expanded by \write. \macrolist + \definedummyword\value % \normalturnoffactive - % - % Handle some cases of @value -- where it does not contain any - % (non-fully-expandable) commands. - \makevalueexpandable } % \commondummiesnofonts: common to \commondummies and \indexnofonts. @@ -5159,9 +5159,10 @@ end \ifx\suffix\indexisfl\def\suffix{f1}\fi % Open the file \immediate\openout\csname#1indfile\endcsname \jobname.\suffix - % Using \immediate here prevents an object entering into the current box, - % which could confound checks such as those in \safewhatsit for preceding - % skips. + % Using \immediate above here prevents an object entering into the current + % box, which could confound checks such as those in \safewhatsit for + % preceding skips. + \typeout{Writing index file \jobname.\suffix}% \fi} \def\indexisfl{fl} @@ -5369,6 +5370,7 @@ end % index. The easiest way to prevent this problem is to make sure % there is some text. \putwordIndexNonexistent + \typeout{No file \jobname.\indexname s.}% \else \catcode`\\ = 0 % @@ -6682,7 +6684,14 @@ end % 1 and 2 (the page numbers aren't printed), and so are the first % two pages of the document. Thus, we'd have two destinations named % `1', and two named `2'. - \ifpdf \global\pdfmakepagedesttrue \fi + \ifpdf + \global\pdfmakepagedesttrue + \else + \ifx\XeTeXrevision\thisisundefined + \else + \global\pdfmakepagedesttrue + \fi + \fi } @@ -8862,6 +8871,7 @@ end % include an _ in the xref name, etc. \indexnofonts \turnoffactive + \def\value##1{##1}% \expandafter\global\expandafter\let\expandafter\Xthisreftitle \csname XR#1-title\endcsname }% @@ -9002,14 +9012,14 @@ end \fi\fi\fi } -% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. -% If its value is nonempty, SUFFIX is output afterward. -% +% \refx{NAME}{SUFFIX} - reference a cross-reference string named NAME. SUFFIX +% is output afterwards if non-empty. \def\refx#1#2{% \requireauxfile {% \indexnofonts \otherbackslash + \def\value##1{##1}% \expandafter\global\expandafter\let\expandafter\thisrefX \csname XR#1\endcsname }% @@ -9034,16 +9044,18 @@ end #2% Output the suffix in any case. } -% This is the macro invoked by entries in the aux file. Usually it's -% just a \def (we prepend XR to the control sequence name to avoid -% collisions). But if this is a float type, we have more work to do. +% This is the macro invoked by entries in the aux file. Define a control +% sequence for a cross-reference target (we prepend XR to the control sequence +% name to avoid collisions). The value is the page number. If this is a float +% type, we have more work to do. % \def\xrdef#1#2{% - {% The node name might contain 8-bit characters, which in our current - % implementation are changed to commands like @'e. Don't let these - % mess up the control sequence name. + {% Expand the node or anchor name to remove control sequences. + % \turnoffactive stops 8-bit characters being changed to commands + % like @'e. \refx does the same to retrieve the value in the definition. \indexnofonts \turnoffactive + \def\value##1{##1}% \xdef\safexrefname{#1}% }% %