Merge remote-tracking branch 'origin/keep-tabs' into complete_callbacks
This commit is contained in:
commit
6d6eb3797b
|
@ -604,6 +604,7 @@ typedef enum
|
||||||
TidyJoinClasses, /**< Join multiple class attributes */
|
TidyJoinClasses, /**< Join multiple class attributes */
|
||||||
TidyJoinStyles, /**< Join multiple style attributes */
|
TidyJoinStyles, /**< Join multiple style attributes */
|
||||||
TidyKeepFileTimes, /**< If yes last modied time is preserved */
|
TidyKeepFileTimes, /**< If yes last modied time is preserved */
|
||||||
|
TidyKeepTabs, /**< If yes keep input source tabs */
|
||||||
TidyLiteralAttribs, /**< If true attributes may use newlines */
|
TidyLiteralAttribs, /**< If true attributes may use newlines */
|
||||||
TidyLogicalEmphasis, /**< Replace i by em and b by strong */
|
TidyLogicalEmphasis, /**< Replace i by em and b by strong */
|
||||||
TidyLowerLiterals, /**< Folds known attribute values to lower case */
|
TidyLowerLiterals, /**< Folds known attribute values to lower case */
|
||||||
|
|
|
@ -214,6 +214,7 @@ static const TidyOptionImpl option_defs[] =
|
||||||
{ TidyJoinClasses, MX, "join-classes", BL, no, ParsePickList, &boolPicks },
|
{ TidyJoinClasses, MX, "join-classes", BL, no, ParsePickList, &boolPicks },
|
||||||
{ TidyJoinStyles, MX, "join-styles", BL, yes, ParsePickList, &boolPicks },
|
{ TidyJoinStyles, MX, "join-styles", BL, yes, ParsePickList, &boolPicks },
|
||||||
{ TidyKeepFileTimes, IO, "keep-time", BL, no, ParsePickList, &boolPicks },
|
{ TidyKeepFileTimes, IO, "keep-time", BL, no, ParsePickList, &boolPicks },
|
||||||
|
{ TidyKeepTabs, PP, "keep-tabs", BL, no, ParsePickList, &boolPicks }, /* 20171103 - Issue #403 */
|
||||||
{ TidyLiteralAttribs, MR, "literal-attributes", BL, no, ParsePickList, &boolPicks },
|
{ TidyLiteralAttribs, MR, "literal-attributes", BL, no, ParsePickList, &boolPicks },
|
||||||
{ TidyLogicalEmphasis, MC, "logical-emphasis", BL, no, ParsePickList, &boolPicks },
|
{ TidyLogicalEmphasis, MC, "logical-emphasis", BL, no, ParsePickList, &boolPicks },
|
||||||
{ TidyLowerLiterals, MR, "lower-literals", BL, yes, ParsePickList, &boolPicks },
|
{ TidyLowerLiterals, MR, "lower-literals", BL, yes, ParsePickList, &boolPicks },
|
||||||
|
|
|
@ -699,6 +699,27 @@ static languageDefinition language_en = { whichPluralForm_en, {
|
||||||
"<br/>"
|
"<br/>"
|
||||||
"Note this feature is not supported on some platforms. "
|
"Note this feature is not supported on some platforms. "
|
||||||
},
|
},
|
||||||
|
{/* Important notes for translators:
|
||||||
|
- Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
||||||
|
<br/>.
|
||||||
|
- Entities, tags, attributes, etc., should be enclosed in <code></code>.
|
||||||
|
- Option values should be enclosed in <var></var>.
|
||||||
|
- It's very important that <br/> be self-closing!
|
||||||
|
- The strings "Tidy" and "HTML Tidy" are the program name and must not
|
||||||
|
be translated. */
|
||||||
|
TidyKeepTabs, 0,
|
||||||
|
"With the default <var>no</var> Tidy will replace all source tabs, with spaces, "
|
||||||
|
"controlled by the option <code>tab-size</code>, and the current line offset. "
|
||||||
|
"Of course, except in the special blocks/elements enumerated below, this will later "
|
||||||
|
"be reduced to just one space. "
|
||||||
|
"<br/>"
|
||||||
|
"If set <var>yes</var> this option specifies Tidy should keep certain tabs "
|
||||||
|
"found in the source, but only "
|
||||||
|
"in preformatted blocks like <code><pre></code>, and other CDATA elements like "
|
||||||
|
"<code><script></code>, <code><style><code>, and other pseudo elements like "
|
||||||
|
"<code><?php ... ?></code>. As always, all other tabs, or sequences of tabs, in "
|
||||||
|
"the source will continue to be replaced with a space. "
|
||||||
|
},
|
||||||
{/* Important notes for translators:
|
{/* Important notes for translators:
|
||||||
- Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
- Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
|
||||||
<br/>.
|
<br/>.
|
||||||
|
|
|
@ -63,6 +63,9 @@ static tmbstr get_text_string(Lexer* lexer, Node *node)
|
||||||
if (c == '\n') {
|
if (c == '\n') {
|
||||||
buffer[i++] = '\\';
|
buffer[i++] = '\\';
|
||||||
buffer[i++] = 'n';
|
buffer[i++] = 'n';
|
||||||
|
} else if (c == '\t') {
|
||||||
|
buffer[i++] = '\\';
|
||||||
|
buffer[i++] = 't';
|
||||||
} else if ( c == ' ' ) {
|
} else if ( c == ' ' ) {
|
||||||
if (!insp)
|
if (!insp)
|
||||||
buffer[i++] = c;
|
buffer[i++] = c;
|
||||||
|
@ -84,6 +87,9 @@ static tmbstr get_text_string(Lexer* lexer, Node *node)
|
||||||
if (c == '\n') {
|
if (c == '\n') {
|
||||||
buffer[i++] = '\\';
|
buffer[i++] = '\\';
|
||||||
buffer[i++] = 'n';
|
buffer[i++] = 'n';
|
||||||
|
} else if (c == '\t') {
|
||||||
|
buffer[i++] = '\\';
|
||||||
|
buffer[i++] = 't';
|
||||||
} else if ( c == ' ' ) {
|
} else if ( c == ' ' ) {
|
||||||
if (!insp)
|
if (!insp)
|
||||||
buffer[i++] = c;
|
buffer[i++] = c;
|
||||||
|
@ -116,6 +122,9 @@ static tmbstr get_text_string(Lexer* lexer, Node *node)
|
||||||
if (c == '\n') {
|
if (c == '\n') {
|
||||||
buffer[i++] = '\\';
|
buffer[i++] = '\\';
|
||||||
buffer[i++] = 'n';
|
buffer[i++] = 'n';
|
||||||
|
} else if (c == '\t') {
|
||||||
|
buffer[i++] = '\\';
|
||||||
|
buffer[i++] = 't';
|
||||||
} else if ( c == ' ' ) {
|
} else if ( c == ' ' ) {
|
||||||
if (!insp)
|
if (!insp)
|
||||||
buffer[i++] = c;
|
buffer[i++] = c;
|
||||||
|
|
|
@ -239,7 +239,6 @@ static void RestoreLastPos( StreamIn *in )
|
||||||
uint TY_(ReadChar)( StreamIn *in )
|
uint TY_(ReadChar)( StreamIn *in )
|
||||||
{
|
{
|
||||||
uint c = EndOfStream;
|
uint c = EndOfStream;
|
||||||
uint tabsize = cfg( in->doc, TidyTabSize );
|
|
||||||
|
|
||||||
if ( in->pushed )
|
if ( in->pushed )
|
||||||
return PopChar( in );
|
return PopChar( in );
|
||||||
|
@ -269,11 +268,15 @@ uint TY_(ReadChar)( StreamIn *in )
|
||||||
|
|
||||||
if (c == '\t')
|
if (c == '\t')
|
||||||
{
|
{
|
||||||
|
Bool keeptabs = cfg( in->doc, TidyKeepTabs );
|
||||||
|
in->curcol++;
|
||||||
|
if (!keeptabs) {
|
||||||
|
uint tabsize = cfg(in->doc, TidyTabSize);
|
||||||
in->tabs = tabsize > 0 ?
|
in->tabs = tabsize > 0 ?
|
||||||
tabsize - ((in->curcol - 1) % tabsize) - 1
|
tabsize - ((in->curcol - 1) % tabsize) - 1
|
||||||
: 0;
|
: 0;
|
||||||
in->curcol++;
|
|
||||||
c = ' ';
|
c = ' ';
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue