commit d209d646220bf1967e12d2de5c37b2be82e29835 (HEAD, refs/remotes/origin/master) Author: Paul Eggert Date: Sat Apr 13 21:13:16 2019 -0700 Update from Gnulib This incorporates: 2019-04-07 Add copyright notices in several files * build-aux/config.sub, doc/misc/texinfo.tex, lib/_Noreturn.h: Copy from Gnulib. * lib/gnulib.mk.in: Regenerate. diff --git a/build-aux/config.sub b/build-aux/config.sub index 3b4c7624b6..a44fd8ae90 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -822,7 +822,9 @@ case $basic_machine in cpu=m68k vendor=next case $os in - nextstep* ) + openstep*) + ;; + nextstep*) ;; ns2*) os=nextstep2 diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 667292a96a..192284cccc 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -3,7 +3,8 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2019-03-23.11} +\def\texinfoversion{2019-03-03.15} + % % Copyright 1985, 1986, 1988, 1990-2019 Free Software Foundation, Inc. % @@ -386,8 +387,14 @@ % take effect in \write's, yet the group defined by the \vbox ends % before the \shipout runs. % - \atdummies % don't expand commands in the output. - \turnoffactive + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + % We don't want .vr (or whatever) entries like this: + % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\backslashcurfont }acronym} \shipout\vbox{% % Do this early so pdf references go to the beginning of the page. \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi @@ -448,10 +455,11 @@ }% } -% First remove any @comment, then any @c comment. Pass the result on to -% \argcheckspaces. +% First remove any @comment, then any @c comment. Also remove a @texinfoc +% comment (see \scanmacro for details). Pass the result on to \argcheckspaces. \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} -\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm} +\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} % Each occurrence of `\^^M' or `\^^M' is replaced by a single space. % @@ -1123,16 +1131,6 @@ \fi \fi -\newif\ifpdforxetex -\pdforxetexfalse -\ifpdf - \pdforxetextrue -\fi -\ifx\XeTeXrevision\thisisundefined\else - \pdforxetextrue -\fi - - % PDF uses PostScript string constants for the names of xref targets, % for display in the outlines, and in other places. Thus, we have to % double any backslashes. Otherwise, a name like "\node" will be @@ -2846,7 +2844,7 @@ % @t, explicit typewriter. \def\t#1{% - {\tt \plainfrenchspacing #1}% + {\tt \rawbackslash \plainfrenchspacing #1}% \null } @@ -2873,6 +2871,7 @@ % Turn off hyphenation. \nohyphenation % + \rawbackslash \plainfrenchspacing #1% }% @@ -3113,7 +3112,7 @@ % So now @email is just like @uref, unless we are pdf. % %\def\email#1{\angleleft{\tt #1}\angleright} -\ifpdforxetex +\ifpdf \def\email#1{\doemail#1,,\finish} \def\doemail#1,#2,#3\finish{\begingroup \unsepspaces @@ -3123,7 +3122,18 @@ \endlink \endgroup} \else - \let\email=\uref + \ifx\XeTeXrevision\thisisundefined + \let\email=\uref + \else + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} + \fi \fi % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), @@ -4657,6 +4667,19 @@ } } +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), since +% the result winds up in the index file. This means that if the +% variable's value contains other Texinfo commands, it's almost certain +% it will fail (although perhaps we could fix that with sufficient work +% to do a one-level expansion on the result, instead of complete). +% +% Unfortunately, this has the consequence that when _ is in the *value* +% of an @set, it does not print properly in the roman fonts (get the cmr +% dot accent at position 126 instead). No fix comes to mind, and it's +% been this way since 2003 or earlier, so just ignore it. +% \def\expandablevalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax {[No value for ``#1'']}% @@ -4685,7 +4708,7 @@ % if possible, otherwise sort late. \def\indexnofontsvalue#1{% \expandafter\ifx\csname SET#1\endcsname\relax - ZZZZZZZ% + ZZZZZZZ \else \csname SET#1\endcsname \fi @@ -4835,8 +4858,23 @@ \def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}} -% Used for the aux, toc and index files to prevent expansion of Texinfo -% commands. +% 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{% + \escapechar = `\\ % use backslash in output files. + \definedummyletter\@% + \definedummyletter\ % + % + % For texindex which always views { and } as separators. + \def\{{\lbracechar{}}% + \def\}{\rbracechar{}}% + % + % Do the redefinitions. + \definedummies +} + +% Used for the aux and toc files, where @ is the escape character. % \def\atdummies{% \definedummyletter\@% @@ -4866,7 +4904,8 @@ \def\definedummyletter#1{\def#1{\string#1}}% \let\definedummyaccent\definedummyletter -% Called from \atdummies to prevent the expansion of commands. +% Called from \indexdummies and \atdummies, to effectively prevent +% the expansion of commands. % \def\definedummies{% % @@ -5031,9 +5070,11 @@ \commondummyword\xref } +% This does nothing, but for a time it was recommended to use +% \usebracesinindexestrue to be able to use braces in index entries. + \let\indexlbrace\relax \let\indexrbrace\relax -\let\indexatchar\relax {\catcode`\@=0 \catcode`\\=13 @@ -5067,8 +5108,10 @@ } \gdef\indexnonalnumreappear{% + \useindexbackslash \let-\normaldash \let<\normalless + \def\@{@}% } } @@ -5179,6 +5222,8 @@ +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + % #1 is the index name, #2 is the entry text. \def\doind#1#2{% \iflinks @@ -5210,6 +5255,13 @@ \fi} \def\indexisfl{fl} +% Output \ as {\indexbackslash}, because \ is an escape character in +% the index files. +\let\indexbackslash=\relax +{\catcode`\@=0 \catcode`\\=\active + @gdef@useindexbackslash{@def\{{@indexbackslash}}} +} + % Definition for writing index entry sort key. { \catcode`\-=13 @@ -5221,25 +5273,14 @@ \xdef\indexsortkey{#1}\endgroup} } -\def\indexwriteseealso#1{ - \gdef\pagenumbertext{@seealso{#1}}% -} - -% The default definitions -\def\sortas#1{}% -\def\seealso#1{\i{\putwordSeeAlso}\ #1}% for sorted index file only -\def\putwordSeeAlso{see also} - % Given index entry text like "aaa @subentry bbb @sortas{ZZZ}": % * Set \bracedtext to "{aaa}{bbb}" % * Set \fullindexsortkey to "aaa @subentry ZZZ" -% * If @seealso occurs, set \pagenumbertext % \def\splitindexentry#1{% \gdef\fullindexsortkey{}% \xdef\bracedtext{}% \def\sep{}% - \def\seealso##1{}% \expandafter\doindexsegment#1\subentry\finish\subentry } @@ -5251,6 +5292,7 @@ % % Fully expand the segment, throwing away any @sortas directives, and % trim spaces. + \def\sortas##1{}% \edef\trimmed{\segment}% \edef\trimmed{\expandafter\eatspaces\expandafter{\trimmed}}% % @@ -5260,20 +5302,16 @@ % font commands turned off. \bgroup \let\sortas\indexwritesortas - \let\seealso\indexwriteseealso \indexnofonts % The braces around the commands are recognized by texindex. \def\lbracechar{{\indexlbrace}}% \def\rbracechar{{\indexrbrace}}% \let\{=\lbracechar \let\}=\rbracechar - \def\@{{\indexatchar}}% - \def\atchar##1{\@}% % \let\indexsortkey\empty - \global\let\pagenumbertext\empty % Execute the segment and throw away the typeset output. This executes - % any @sortas or @seealso commands in this segment. + % any @sortas commands in this segment. \setbox\dummybox = \hbox{\segment}% \ifx\indexsortkey\empty{% \indexnonalnumdisappear @@ -5294,20 +5332,21 @@ \fi } \def\isfinish{\finish}% -\newbox\dummybox % used above \let\subentry\relax % Write the entry in \toks0 to the index file. % \def\doindwrite{% - \maybemarginindex - % - \atdummies + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi % - % For texindex which always views { and } as separators. - \def\{{\lbracechar{}}% - \def\}{\rbracechar{}}% + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \useindexbackslash % \indexbackslash isn't defined now so it will be output + % as is; and it will print as backslash. % % Split the entry into primary entry and any subentries, and get the index % sort key. @@ -5321,21 +5360,11 @@ % \edef\temp{% \write\writeto{% - \string\entry{\fullindexsortkey}% - {\ifx\pagenumbertext\empty\noexpand\folio\else\pagenumbertext\fi}% - \bracedtext}% + \string\entry{\fullindexsortkey}{\noexpand\folio}\bracedtext}% }% \temp } - -% Put the index entry in the margin if desired (undocumented). -\def\maybemarginindex{% - \ifx\SETmarginindex\relax\else - \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \relax\indextext}}% - \fi -} -\let\SETmarginindex=\relax - +\newbox\dummybox % used above % Take care of unwanted page breaks/skips around a whatsit: % @@ -5423,14 +5452,9 @@ % \entry {topic}{pagelist} % for a topic that is used without subtopics % \primary {topic} -% \entry {topic}{} % for the beginning of a topic that is used with subtopics % \secondary {subtopic}{pagelist} % for each subtopic. -% \secondary {subtopic}{} -% for a subtopic with sub-subtopics -% \tertiary {subtopic}{subsubtopic}{pagelist} -% for each sub-subtopic. % Define the user-accessible indexing commands % @findex, @vindex, @kindex, @cindex. @@ -5455,10 +5479,14 @@ \plainfrenchspacing \everypar = {}% don't want the \kern\-parindent from indentation suppression. % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 12 % See comment in \requireopenindexfile. \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi - % - % See if the index file exists and is nonempty. \openin 1 \jobname.\indexname s \ifeof 1 % \enddoublecolumns gets confused if there is no text in the index, @@ -5468,6 +5496,8 @@ \putwordIndexNonexistent \typeout{No file \jobname.\indexname s.}% \else + \catcode`\\ = 0 + % % If the index file exists but is empty, then \openin leaves \ifeof % false. We have to make TeX try to read something from the file, so % it can discover if there is anything in it. @@ -5475,27 +5505,47 @@ \ifeof 1 \putwordIndexIsEmpty \else - \expandafter\printindexzz\thisline\relax\relax\finish% + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\ttbackslash}% + \let\indexlbrace\{ % Likewise, set these sequences for braces + \let\indexrbrace\} % used in the sort key. + \begindoublecolumns + \let\dotheinsertentrybox\dotheinsertentryboxwithpenalty + % + % Read input from the index file line by line. + \loopdo + \ifeof1 \else + \read 1 to \nextline + \fi + % + \indexinputprocessing + \thisline + % + \ifeof1\else + \let\thisline\nextline + \repeat + %% + \enddoublecolumns \fi \fi \closein 1 \endgroup} +\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx} +\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next} -% If the index file starts with a backslash, forgo reading the index -% file altogether. If somebody upgrades texinfo.tex they may still have -% old index files using \ as the escape character. Reading this would -% at best lead to typesetting garbage, at worst a TeX syntax error. -\def\printindexzz#1#2\finish{% - % NB this won't work if the index file starts with a group... - \uccode`\~=`\\ \uppercase{\if\noexpand~}\noexpand#1 - \message{skipping sorted index file}% - (Skipped sorted index file in obsolete format) +\def\indexinputprocessing{% + \ifeof1 + \let\firsttoken\relax \else - \begindoublecolumns - \input \jobname.\indexname s - \enddoublecolumns + \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}% + \act \fi } +\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken} +\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1} + % These macros are used by the sorted index file itself. % Change them to control the appearance of the index. @@ -5504,18 +5554,12 @@ \catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13 \catcode`\$=3 \gdef\initialglyphs{% - % special control sequences used in the index sort key - \let\indexlbrace\{% - \let\indexrbrace\}% - \let\indexatchar\@% - % % Some changes for non-alphabetic characters. Using the glyphs from the % math fonts looks more consistent than the typewriter font used elsewhere % for these characters. - \uccode`\~=`\\ \uppercase{\def~{\math{\backslash}}} + \def\indexbackslash{\math{\backslash}}% + \let\\=\indexbackslash % - % In case @\ is used for backslash - \uppercase{\let\\=~} % Can't get bold backslash so don't use bold forward slash \catcode`\/=13 \def/{{\secrmnotbold \normalslash}}% @@ -5574,6 +5618,12 @@ % \def\entry{% \begingroup + % + % For pdfTeX and XeTeX. + % The redefinition of \domark stops marks being added in \pdflink to + % preserve coloured links across page boundaries. Otherwise the marks + % would get in the way of \lastbox in \insertentrybox. + \let\domark\relax % % Start a new paragraph if necessary, so our assignments below can't % affect previous text. @@ -5607,31 +5657,35 @@ \gdef\finishentry#1{% \egroup % end box A \dimen@ = \wd\boxA % Length of text of entry - \global\setbox\boxA=\hbox\bgroup - \unhbox\boxA - % #1 is the page number. + \global\setbox\boxA=\hbox\bgroup\unhbox\boxA + % #1 is the page number. + % + % Get the width of the page numbers, and only use + % leaders if they are present. + \global\setbox\boxB = \hbox{#1}% + \ifdim\wd\boxB = 0pt + \null\nobreak\hfill\ % + \else + % + \null\nobreak\indexdotfill % Have leaders before the page number. % - % Get the width of the page numbers, and only use - % leaders if they are present. - \global\setbox\boxB = \hbox{#1}% - \ifdim\wd\boxB = 0pt - \null\nobreak\hfill\ % + \ifpdf + \pdfgettoks#1.% + \hskip\skip\thinshrinkable\the\toksA \else - % - \null\nobreak\indexdotfill % Have leaders before the page number. - % - \ifpdforxetex + \ifx\XeTeXrevision\thisisundefined + \hskip\skip\thinshrinkable #1% + \else \pdfgettoks#1.% \hskip\skip\thinshrinkable\the\toksA - \else - \hskip\skip\thinshrinkable #1% \fi \fi + \fi \egroup % end \boxA \ifdim\wd\boxB = 0pt - \noindent\unhbox\boxA\par - \nobreak - \else\bgroup + \global\setbox\entrybox=\vbox{\unhbox\boxA}% + \else + \global\setbox\entrybox=\vbox\bgroup % We want the text of the entries to be aligned to the left, and the % page numbers to be aligned to the right. % @@ -5697,11 +5751,55 @@ \egroup % The \vbox \fi \endgroup + \dotheinsertentrybox }} \newskip\thinshrinkable \skip\thinshrinkable=.15em minus .15em +\newbox\entrybox +\def\insertentrybox{% + \ourunvbox\entrybox +} + +% default definition +\let\dotheinsertentrybox\insertentrybox + +% Use \lastbox to take apart vbox box by box, and add each sub-box +% to the current vertical list. +\def\ourunvbox#1{% +\bgroup % for local binding of \delayedbox + % Remove the last box from box #1 + \global\setbox#1=\vbox{% + \unvbox#1% + \unskip % remove any glue + \unpenalty + \global\setbox\interbox=\lastbox + }% + \setbox\delayedbox=\box\interbox + \ifdim\ht#1=0pt\else + \ourunvbox#1 % Repeat on what's left of the box + \nobreak + \fi + \box\delayedbox +\egroup +} +\newbox\delayedbox +\newbox\interbox + +% Used from \printindex. \firsttoken should be the first token +% after the \entry. If it's not another \entry, we are at the last +% line of a group of index entries, so insert a penalty to discourage +% widowed index entries. +\def\dotheinsertentryboxwithpenalty{% + \ifx\firsttoken\isentry + \else + \penalty 9000 + \fi + \insertentrybox +} +\def\isentry{\entry}% + % Like plain.tex's \dotfill, except uses up at least 1 em. % The filll stretch here overpowers both the fil and fill stretch to push % the page number to the right. @@ -5711,15 +5809,24 @@ \def\primary #1{\line{#1\hfil}} -\def\secondary{\indententry{0.5cm}} -\def\tertiary{\indententry{1cm}} - -\def\indententry#1#2#3{% - \bgroup - \leftskip=#1 - \entry{#2}{#3}% - \egroup -} +\newskip\secondaryindent \secondaryindent=0.5cm +\def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + \ifx\XeTeXrevision\thisisundefined + #2 + \else + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \fi + \fi + \par +}} % Define two-column mode, which we use to typeset indexes. % Adapted from the TeXbook, page 416, which is to say, @@ -5737,6 +5844,17 @@ \output = {% \savetopmark % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % \global\setbox\partialpage = \vbox{% % Unvbox the main output page. \unvbox\PAGE @@ -6016,9 +6134,11 @@ % @raisesections: treat @section as chapter, @subsection as section, etc. \def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name % @lowersections: treat @chapter as section, @section as subsection, etc. \def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name % we only have subsub. \chardef\maxseclevel = 3 @@ -6670,8 +6790,13 @@ % 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'. - \ifpdforxetex + \ifpdf \global\pdfmakepagedesttrue + \else + \ifx\XeTeXrevision\thisisundefined + \else + \global\pdfmakepagedesttrue + \fi \fi } @@ -7034,7 +7159,11 @@ % @cartouche ... @end cartouche: draw rectangle w/rounded corners around % environment contents. - +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle % \def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth \def\ctr{{\hskip 6pt\circle\char'010}} @@ -7049,18 +7178,7 @@ % \newskip\lskip\newskip\rskip -% only require the font if @cartouche is actually used -\def\cartouchefontdefs{% - \font\circle=lcircle10\relax - \circthick=\fontdimen8\circle -} -\newdimen\circthick -\newdimen\cartouter\newdimen\cartinner -\newskip\normbskip\newskip\normpskip\newskip\normlskip - - \envdef\cartouche{% - \cartouchefontdefs \ifhmode\par\fi % can't be in the midst of a paragraph. \startsavinginserts \lskip=\leftskip \rskip=\rightskip @@ -7932,18 +8050,36 @@ } \fi +% alias because \c means cedilla in @tex or @math +\let\texinfoc=\c + +\newcount\savedcatcodeone +\newcount\savedcatcodetwo + % Used at the time of macro expansion. % Argument is macro body with arguments substituted \def\scanmacro#1{% \newlinechar`\^^M \def\xeatspaces{\eatspaces}% % + % Temporarily undo catcode changes of \printindex. Set catcode of @ to + % 0 so that @-commands in macro expansions aren't printed literally when + % formatting an index file, where \ is used as the escape character. + \savedcatcodeone=\catcode`\@ + \savedcatcodetwo=\catcode`\\ + \catcode`\@=0 + \catcode`\\=\active + % % Process the macro body under the current catcode regime. - \scantokens{#1@comment}% + \scantokens{#1@texinfoc}% % - % The \comment is to remove the \newlinechar added by \scantokens, and - % can be noticed by \parsearg. Note \c isn't used because this means cedilla - % in math mode. + \catcode`\@=\savedcatcodeone + \catcode`\\=\savedcatcodetwo + % + % The \texinfoc is to remove the \newlinechar added by \scantokens, and + % can be noticed by \parsearg. + % We avoid surrounding the call to \scantokens with \bgroup and \egroup + % to allow macros to open or close groups themselves. } % Used for copying and captions @@ -8044,14 +8180,12 @@ \def\macroargctxt{% \scanctxt \catcode`\ =\active - \catcode`\@=\other \catcode`\^^M=\other \catcode`\\=\active } \def\macrolineargctxt{% used for whole-line arguments without braces \scanctxt - \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other } @@ -8615,21 +8749,9 @@ % also remove a trailing comma, in case of something like this: % @node Help-Cross, , , Cross-refs \def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} -\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}\omittopnode} - -% Used so that the @top node doesn't have to be wrapped in an @ifnottex -% conditional. -% \doignore goes to more effort to skip nested conditionals but we don't need -% that here. -\def\omittopnode{% - \ifx\lastnode\wordTop - \expandafter\ignorenode\fi -} -\def\wordTop{Top} - -% Divert output to a box that is not output until the next @node command. -\def\ignorenode{\setbox\dummybox\vbox\bgroup\def\node{\egroup\node}} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} +\let\nwnode=\node \let\lastnode=\empty % Write a cross-reference definition for the current node. #1 is the @@ -9104,6 +9226,19 @@ \catcode`\^^]=\other \catcode`\^^^=\other \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % \catcode`\^=\other % % Special characters. Should be turned off anyway, but... @@ -9121,7 +9256,14 @@ \catcode`\%=\other \catcode`+=\other % avoid \+ for paranoia even though we've turned it off % - \catcode`\\=\active + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other % % @ is our escape character in .aux files, and we need braces. \catcode`\{=1 @@ -11392,9 +11534,11 @@ % \backslashcurfont outputs one backslash character in current font, % as in \char`\\. \global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work -% \realbackslash is an actual character `\' with catcode other. -{\catcode`\\=\other @gdef@realbackslash{\}} +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} % In Texinfo, backslash is an active character; it prints the backslash % in fixed width font. @@ -11412,8 +11556,10 @@ @def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} @let@backslashchar = @ttbackslash % @backslashchar{} is for user documents. +% \rawbackslash defines an active \ to do \backslashcurfont. % \otherbackslash defines an active \ to be a literal `\' character with -% catcode other. +% catcode other. We switch back and forth between these. +@gdef@rawbackslash{@let\=@backslashcurfont} @gdef@otherbackslash{@let\=@realbackslash} % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of @@ -11485,7 +11631,7 @@ @ifx\@eatinput @let\ = @ttbackslash @fi @catcode13=5 % regular end of line @enableemergencynewline - @let@c=@comment + @let@c=@texinfoc @let@parsearg@originalparsearg % Also turn back on active characters that might appear in the input % file name, in case not using a pre-dumped format. diff --git a/lib/_Noreturn.h b/lib/_Noreturn.h index 7594e4b0c0..db9b45554c 100644 --- a/lib/_Noreturn.h +++ b/lib/_Noreturn.h @@ -1,3 +1,19 @@ +/* A C macro for declaring that a function does not return. + Copyright (C) 2011-2019 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published + by the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + #ifndef _Noreturn # if (defined __cplusplus \ && ((201103 <= __cplusplus && !(__GNUC__ == 4 && __GNUC_MINOR__ == 7)) \ diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in index 0d9a885be3..1450df9f63 100644 --- a/lib/gnulib.mk.in +++ b/lib/gnulib.mk.in @@ -179,6 +179,7 @@ CAIRO_LIBS = @CAIRO_LIBS@ CC = @CC@ CFLAGS = @CFLAGS@ CFLAGS_SOUND = @CFLAGS_SOUND@ +CHECK_STRUCTS = @CHECK_STRUCTS@ CLIENTRES = @CLIENTRES@ CLIENTW = @CLIENTW@ CM_OBJ = @CM_OBJ@ commit c49f5d573b37f7aaa8d480d568c7e26d975f0320 Author: Basil L. Contovounesios Date: Thu Apr 11 17:16:00 2019 +0100 Fix gnus-group-describe-all-groups (bug#35233) This fixes oversights from 2018-04-26T16:26:27-07:00!eric@ericabrahamsen.net and 2016-02-13T18:45:11+11:00!larsi@gnus.org. * lisp/gnus/gnus-group.el (gnus-group-describe-all-groups): Insert group name and description instead of group name twice. Do not pass a hash-table to intern. Call sort with correct number of arguments. diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index 0956dc46d0..b1e4091c97 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -4137,20 +4137,19 @@ If DONT-SCAN is non-nil, scan non-activated groups as well." (when (not (or gnus-description-hashtb (gnus-read-all-descriptions-files))) (error "Couldn't request descriptions file")) - (let ((buffer-read-only nil) - (groups (sort (hash-table-keys gnus-description-hashtb))) - b) + (let ((buffer-read-only nil)) (erase-buffer) - (dolist (group groups) - (setq b (point)) - (let ((charset (gnus-group-name-charset nil group))) + (dolist (group (sort (hash-table-keys gnus-description-hashtb) #'string<)) + (let ((b (point)) + (desc (gethash group gnus-description-hashtb)) + (charset (gnus-group-name-charset nil group))) (insert (format " *: %-20s %s\n" (gnus-group-name-decode group charset) - (gnus-group-name-decode group charset)))) - (add-text-properties - b (1+ b) (list 'gnus-group (intern group gnus-description-hashtb) - 'gnus-unread t 'gnus-marked nil - 'gnus-level (1+ gnus-level-subscribed)))) + (gnus-group-name-decode desc charset))) + (add-text-properties + b (1+ b) (list 'gnus-group group + 'gnus-unread t 'gnus-marked nil + 'gnus-level (1+ gnus-level-subscribed))))) (goto-char (point-min)) (gnus-group-position-point))) commit 7308c2edfbd600e19685bf2cde099e46be3398c8 Author: Alexander Gramiak Date: Sat Apr 13 16:05:21 2019 -0600 Fix segmentation fault with gdk_monitor_get_model (Bug#35259) * src/frame.c (free_monitors): Check if NULL before freeing. * src/xfns.c: (x-display-monitor-attributes-list): Check if NULL before copying. diff --git a/src/frame.c b/src/frame.c index 192ef4244f..22a3996af7 100644 --- a/src/frame.c +++ b/src/frame.c @@ -5670,7 +5670,8 @@ free_monitors (struct MonitorInfo *monitors, int n_monitors) { int i; for (i = 0; i < n_monitors; ++i) - xfree (monitors[i].name); + if (monitors[i].name) + xfree (monitors[i].name); xfree (monitors); } # endif diff --git a/src/xfns.c b/src/xfns.c index 13f66f0718..dd1d8993f5 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -5030,7 +5030,8 @@ Internal use only, use `display-monitor-attributes-list' instead. */) mi->mm_height = height_mm; #if GTK_CHECK_VERSION (3, 22, 0) - mi->name = xstrdup (gdk_monitor_get_model (monitor)); + if (gdk_monitor_get_model (monitor)) + mi->name = xstrdup (gdk_monitor_get_model (monitor)); #elif GTK_CHECK_VERSION (2, 14, 0) mi->name = gdk_screen_get_monitor_plug_name (gscreen, i); #endif commit 894e1420829b24d4a6befcd09e285ea9e52e57f6 Author: Juri Linkov Date: Sun Apr 14 01:02:39 2019 +0300 * lisp/vc/log-edit.el (log-edit-insert-changelog): Add field "Summary" explicitly after adding field "Author". (Bug#34972) diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el index 42710dd8dc..ba5a1a3d57 100644 --- a/lisp/vc/log-edit.el +++ b/lisp/vc/log-edit.el @@ -754,7 +754,9 @@ regardless of user name or time." (log-edit-insert-changelog-entries (log-edit-files))))) (log-edit-set-common-indentation) ;; Add an Author: field if appropriate. - (when author (log-edit-add-field "Author" (car author))) + (when author + (log-edit-add-field "Author" (car author)) + (log-edit-add-field "Summary" "")) ;; Add a Fixes: field if applicable. (when (consp log-edit-rewrite-fixes) (rfc822-goto-eoh) commit ed2b0bdfe24551d6a2f0497601f58faa17f24e3d Author: Juri Linkov Date: Sun Apr 14 00:54:14 2019 +0300 New faces in xref (bug#23179) * lisp/progmodes/xref.el (xref-file-header, xref-line-number) (xref-match): New faces. (xref--insert-xrefs, xref--collect-matches-1): Use them. diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index aed92f8db6..e5e59721eb 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -448,6 +448,18 @@ If SELECT is non-nil, select the target window." (defconst xref-buffer-name "*xref*" "The name of the buffer to show xrefs.") +(defface xref-file-header '((t :inherit compilation-info)) + "Face used to highlight file header in the xref buffer." + :version "27.1") + +(defface xref-line-number '((t :inherit compilation-line-number)) + "Face for displaying line numbers in the xref buffer." + :version "27.1") + +(defface xref-match '((t :inherit highlight)) + "Face used to highlight matches in the xref buffer." + :version "27.1") + (defmacro xref--with-dedicated-window (&rest body) `(let* ((xref-w (get-buffer-window xref-buffer-name)) (xref-w-dedicated (window-dedicated-p xref-w))) @@ -737,18 +749,17 @@ GROUP is a string for decoration purposes and XREF is an for line-format = (and max-line-width (format "%%%dd: " max-line-width)) do - (xref--insert-propertized '(face compilation-info) group "\n") + (xref--insert-propertized '(face xref-file-header) group "\n") (cl-loop for (xref . more2) on xrefs do (with-slots (summary location) xref (let* ((line (xref-location-line location)) (prefix (if line (propertize (format line-format line) - 'face 'compilation-line-number) + 'face 'xref-line-number) " "))) (xref--insert-propertized (list 'xref-item xref - ;; 'face 'font-lock-keyword-face 'mouse-face 'highlight 'keymap xref--button-map 'help-echo @@ -1159,7 +1170,7 @@ Such as the current syntax table and the applied syntax properties." (end-column (- (match-end 0) line-beg)) (loc (xref-make-file-location file line beg-column)) (summary (buffer-substring line-beg line-end))) - (add-face-text-property beg-column end-column 'highlight + (add-face-text-property beg-column end-column 'xref-match t summary) (push (xref-make-match summary loc (- end-column beg-column)) matches))) commit 3a34f57c7e7ba355c1271c815213fb9c526b27f3 Author: Juri Linkov Date: Sun Apr 14 00:46:38 2019 +0300 * lisp/simple.el (shell-command-width): New defcustom. (shell-command): Use it. (Bug#35055) diff --git a/etc/NEWS b/etc/NEWS index 021d7d0179..d34fb3bb12 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1064,6 +1064,11 @@ followed when Emacs writes the relevant history variables to the disk. *** The variable 'shell-file-name' can be set now as connection-local variable for remote shells. It still defaults to "/bin/sh". +** Single shell commands + +*** 'shell-command-width' defines the number of output columns +for asynchronous shell command. + ** Pcomplete *** The function 'pcomplete-uniquify-list' has been renamed from diff --git a/lisp/simple.el b/lisp/simple.el index 37f92540dd..017ba51000 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3351,6 +3351,15 @@ is output." :group 'shell :version "26.1") +(defcustom shell-command-width nil + "Number of columns available for asynchronous shell command output. +If nil, use the shell default number (usually 80 columns). +If a positive integer, use a fixed width for command output." + :type '(choice (const :tag "Use system limit" nil) + (integer :tag "Fixed width" :value 80)) + :group 'shell + :version "27.1") + (defcustom shell-command-dont-erase-buffer nil "If non-nil, output buffer is not erased between shell commands. Also, a non-nil value sets the point in the output buffer @@ -3614,8 +3623,13 @@ impose the use of a shell (with its need to quote arguments)." (with-current-buffer buffer (shell-command--save-pos-or-erase) (setq default-directory directory) - (setq proc - (start-process-shell-command "Shell" buffer command)) + (let ((process-environment + (if (natnump shell-command-width) + (cons (format "COLUMNS=%d" shell-command-width) + process-environment) + process-environment))) + (setq proc + (start-process-shell-command "Shell" buffer command))) (setq mode-line-process '(":%s")) (require 'shell) (shell-mode) (set-process-sentinel proc #'shell-command-sentinel) commit ad652a3b89848394a3613206082f233101b91f60 Author: Alan Mackenzie Date: Sat Apr 13 19:33:18 2019 +0000 * lisp/progmodes/cc-langs.el (c-class-id-suffix-ws-ids-kwds): Correct a typo diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index b5c3ff3335..50f8b8473b 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -2052,7 +2052,7 @@ effect in the declaration, but are syntactically like whitespace." (c-lang-defconst c-class-id-suffix-ws-ids-kwds "\"Identifiers\" that when immediately following the identifier of a class declaration have semantic effect in the declaration, -but are syntactially like whitespace." +but are syntactically like whitespace." t nil c++ '("final")) commit f9694a713824d402bcba01064ac2f95156bf4161 Author: Alan Mackenzie Date: Sat Apr 13 13:29:58 2019 +0000 Implement "final" before C++ class inheritance lists. * lisp/progmodes/cc-langs.el (c-class-id-suffix-ws-ids-kwds) (c-class-id-suffix-ws-ids-key): New lang const/var. * lisp/progmodes/cc-engine.el (c-guess-basic-syntax CASE 5D.4): Check for and skip over any matches for c-class-id-suffix-ws-ids-key (i.e. "final") before ":". diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index fc8c377f27..f0b44d2183 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -12734,6 +12734,13 @@ comment at the start of cc-engine.el for more info." (if (eq (char-after) ?<) (zerop (c-forward-token-2 1 t indent-point)) t) + (progn + (while + (and + (< (point) indent-point) + (looking-at c-class-id-suffix-ws-ids-key) + (zerop (c-forward-token-2 1 nil indent-point)))) + t) (eq (char-after) ?:)))) (goto-char placeholder) (c-add-syntax 'inher-cont (c-point 'boi))) diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 2dff5cf83c..b5c3ff3335 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -2049,6 +2049,19 @@ effect in the declaration, but are syntactically like whitespace." (c-lang-defvar c-type-decl-suffix-ws-ids-key (c-lang-const c-type-decl-suffix-ws-ids-key)) +(c-lang-defconst c-class-id-suffix-ws-ids-kwds + "\"Identifiers\" that when immediately following the identifier +of a class declaration have semantic effect in the declaration, +but are syntactially like whitespace." + t nil + c++ '("final")) + +(c-lang-defconst c-class-id-suffix-ws-ids-key + ;; An adorned regexp matching `c-class-id-suffix-ws-ids-kwds'. + t (c-make-keywords-re t (c-lang-const c-class-id-suffix-ws-ids-kwds))) +(c-lang-defvar c-class-id-suffix-ws-ids-key + (c-lang-const c-class-id-suffix-ws-ids-key)) + (c-lang-defconst c-class-decl-kwds "Keywords introducing declarations where the following block (if any) contains another declaration level that should be considered a class. commit c2c9ef2c1e509f1a01ffaefd7475004854162a10 Author: Michael Albinus Date: Sat Apr 13 12:34:44 2019 +0200 Fix error in tramp-sh.el * lisp/net/tramp-sh.el (tramp-sh-handle-make-process): Revert "simplification", which was an error. diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 7d903c5769..d9751a9f97 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -2903,7 +2903,8 @@ the result will be a local, non-Tramp, file name." ;; otherwise we might be interrupted by ;; `verify-visited-file-modtime'. (let ((buffer-undo-list t) - (inhibit-read-only t)) + (inhibit-read-only t) + (mark (point-max))) (clear-visited-file-modtime) (narrow-to-region (point-max) (point-max)) ;; We call `tramp-maybe-open-connection', in @@ -2916,7 +2917,12 @@ the result will be a local, non-Tramp, file name." (let ((pid (tramp-send-command-and-read v "echo $$"))) (process-put p 'remote-pid pid) (tramp-set-connection-property p "remote-pid" pid)) - (delete-region (point-min) (point-max)) + ;; `tramp-maybe-open-connection' and + ;; `tramp-send-command-and-read' could have + ;; trashed the connection buffer. Remove this. + (widen) + (delete-region mark (point-max)) + (narrow-to-region (point-max) (point-max)) ;; Now do it. (if command ;; Send the command. commit 181e0c09672175f167b12f1a1ed8f8d488c2a487 Author: Michael Albinus Date: Sat Apr 13 12:34:13 2019 +0200 * doc/misc/tramp.texi: Fix minor glitches. diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index e376fc7495..3dfd5224ec 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -2,9 +2,8 @@ @setfilename ../../info/tramp.info @c %**start of header @include docstyle.texi -@c In the Tramp repository, the version number is auto-frobbed from -@c configure.ac, so you should edit that file and run -@c "autoconf && ./configure" to change the version number. +@c In the Tramp GIT, the version number is auto-frobbed from tramp.el, +@c and the bug report address is auto-frobbed from configure.ac. @include trampver.texi @settitle @value{tramp} @value{trampver} User Manual @c %**end of header @@ -52,7 +51,7 @@ editing package for Emacs. @value{tramp} stands for ``Transparent Remote (file) Access, Multiple Protocol''. This package provides remote file editing, similar to -Ange FTP. +Ange FTP@. The difference is that Ange FTP uses FTP to transfer files between the local and the remote host, whereas @value{tramp} uses a combination of @@ -968,7 +967,7 @@ after a predefined timeout. @cindex @option{ftp} method When @value{tramp} uses @option{ftp}, it forwards requests to whatever -ftp program is specified by Ange FTP. This external program must be +ftp program is specified by Ange FTP@. This external program must be capable of servicing requests from @value{tramp}. @item @option{smb} @@ -1092,8 +1091,8 @@ numbers are not applicable to Android devices connected through USB@. The program @command{rclone} allows to access different system storages in the cloud, see @url{https://rclone.org/} for a list of supported systems. If the @command{rclone} program isn't found in -your @env{PATH} environment variable, you can tell Tramp its absolute -path via the user option @code{tramp-rclone-program}. +your @env{PATH} environment variable, you can tell @value{tramp} its +absolute path via the user option @code{tramp-rclone-program}. A system storage must be configured via the @command{rclone config} command, outside Emacs. If you have configured a storage in @@ -1108,7 +1107,7 @@ User names are part of the @command{rclone} configuration, and not needed in the remote file name. If a user name is contained in the remote file name, it is ignored. -Internally, Tramp mounts the remote system storage at location +Internally, @value{tramp} mounts the remote system storage at location @file{/tmp/tramp.rclone.storage}, with @file{storage} being the name of the configured system storage. @@ -1538,8 +1537,8 @@ Host host.other.domain @end group @end example -@code{nc} is BSD's netcat program, which establishes HTTP tunnels. Any -other program with such a feature could be used as well. +@code{nc} is BSD's netcat program, which establishes HTTP tunnels. +Any other program with such a feature could be used as well. In the example, opening @file{@trampfn{ssh,host.your.domain,}} passes the HTTP proxy server @samp{proxy.your.domain} on port 3128. @@ -1615,7 +1614,7 @@ Integration for LXD containers. A container is accessed via @cindex method @option{git} @cindex @option{git} method Browing git repositories with @code{magit}. A versioned file is accessed via -@file{@trampfn{git,rev@@root-dir,/path/to/file}}. @samp{rev} is a git +@file{@trampfn{git,rev@@root-dir,/path/to/file}}. @samp{rev} is a git revision, and @samp{root-dir} is a virtual host name for the root directory, specified in @code{magit-tramp-hosts-alist}. @@ -2642,7 +2641,7 @@ names. Beside the @code{default} value, @var{syntax} can be @item @code{simplified} @cindex simplified syntax -The remote file name syntax is similar to the syntax used by Ange FTP. +The remote file name syntax is similar to the syntax used by Ange FTP@. A remote file name has the form @code{@value{prefix}user@@host@value{postfix}path/to/file}. The @code{user@@} part is optional, and the method is determined by @@ -4372,7 +4371,7 @@ handlers. @vindex non-essential Sometimes, it is not convenient to open a new connection to a remote host, including entering the password and alike. For example, this is -nasty for packages providing file name completion. Such a package +nasty for packages providing file name completion. Such a package could signal to @value{tramp}, that they don't want it to establish a new connection. Use the variable @code{non-essential} temporarily and bind it to non-@code{nil} value. commit bfa9e7452cd28704ef97f2df9a85af66b47ad220 Author: Michael Albinus Date: Sat Apr 13 11:12:16 2019 +0200 Fix last patch diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index bf13fc1e85..842d66d778 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -267,7 +267,7 @@ This returns only for the local case and gfilenotify; otherwise it is nil. `(ert-deftest ,(intern (concat (symbol-name test) "-remote")) () ,docstring :expected-result (or ,expected :passed) - :tags ,(if skip '(:expensive-test :unstable) '(:expensive-test)) + :tags ,(if skip ''(:expensive-test :unstable) ''(:expensive-test)) (let* ((temporary-file-directory file-notify-test-remote-temporary-file-directory) (ert-test (ert-get-test ',test)) commit ae21fb3dbc1a596e5bc18a3b7f8a1460b9b0fca3 Author: Michael Albinus Date: Sat Apr 13 10:58:17 2019 +0200 Replace (skip-unless nil) by tag :unstable in test packages * test/lisp/filenotify-tests.el (file-notify--deftest-remote): Use tag :unstable if SKIP is non-nil. * test/lisp/net/tramp-tests.el (tramp-test36-vc-registered): Use ert-skip instead of (skip-unless nil). * test/lisp/progmodes/python-tests.el (python-tests--python-nav-end-of-statement--infloop): Use tag :unstable instead of (skip-unless nil). diff --git a/test/lisp/filenotify-tests.el b/test/lisp/filenotify-tests.el index 50036209b0..bf13fc1e85 100644 --- a/test/lisp/filenotify-tests.el +++ b/test/lisp/filenotify-tests.el @@ -266,9 +266,8 @@ This returns only for the local case and gfilenotify; otherwise it is nil. (declare (indent 1)) `(ert-deftest ,(intern (concat (symbol-name test) "-remote")) () ,docstring - :tags '(:expensive-test) :expected-result (or ,expected :passed) - (skip-unless (not ,skip)) + :tags ,(if skip '(:expensive-test :unstable) '(:expensive-test)) (let* ((temporary-file-directory file-notify-test-remote-temporary-file-directory) (ert-test (ert-get-test ',test)) diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el index 5a9541db8f..cc3200be94 100644 --- a/test/lisp/net/tramp-tests.el +++ b/test/lisp/net/tramp-tests.el @@ -4579,7 +4579,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'." ;; skip the test then. (condition-case nil (vc-create-repo (car vc-handled-backends)) - (error (skip-unless nil))) + (error (ert-skip "`vc-create-repo' not supported"))) ;; The structure of VC-FILESET is not documented. Let's ;; hope it won't change. (condition-case nil diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el index 999cf8dc7a..b940f45bb9 100644 --- a/test/lisp/progmodes/python-tests.el +++ b/test/lisp/progmodes/python-tests.el @@ -5350,7 +5350,7 @@ buffer with overlapping strings." ;; The description of the problem it's trying to catch is not clear enough ;; to be able to see if the underlying problem is really fixed, sadly. ;; E.g. I don't know what is meant by "overlap", really. - (skip-unless nil) + :tags '(:unstable) (python-tests-with-temp-buffer "''' '\n''' ' '\n" (syntax-propertize (point-max)) ;; Create a situation where strings nominally overlap. This