Make tab insertion really right: the number of spaces inserted
depends on the column number of the start of the tab. llvm-svn: 49891
This commit is contained in:
parent
c88fb63da0
commit
4bbd164a7a
|
@ -107,37 +107,47 @@ void html::EscapeText(Rewriter& R, unsigned FileID,
|
|||
assert (C <= FileEnd);
|
||||
|
||||
RewriteBuffer &RB = R.getEditBuffer(FileID);
|
||||
|
||||
|
||||
unsigned ColNo = 0;
|
||||
for (unsigned FilePos = 0; C != FileEnd ; ++C, ++FilePos) {
|
||||
|
||||
switch (*C) {
|
||||
default: break;
|
||||
default: ++ColNo; break;
|
||||
case '\n':
|
||||
case '\r':
|
||||
ColNo = 0;
|
||||
break;
|
||||
|
||||
case ' ':
|
||||
if (EscapeSpaces)
|
||||
RB.ReplaceText(FilePos, 1, " ", 6);
|
||||
++ColNo;
|
||||
break;
|
||||
|
||||
case '\t':
|
||||
case '\t': {
|
||||
if (!ReplaceTabs)
|
||||
break;
|
||||
unsigned NumSpaces = 8-(ColNo&7);
|
||||
if (EscapeSpaces)
|
||||
RB.ReplaceText(FilePos, 1, " "
|
||||
" ", 6*8);
|
||||
" ", 6*NumSpaces);
|
||||
else
|
||||
RB.ReplaceText(FilePos, 1, " ", 8);
|
||||
RB.ReplaceText(FilePos, 1, " ", NumSpaces);
|
||||
ColNo += NumSpaces;
|
||||
break;
|
||||
|
||||
}
|
||||
case '<':
|
||||
RB.ReplaceText(FilePos, 1, "<", 4);
|
||||
++ColNo;
|
||||
break;
|
||||
|
||||
case '>':
|
||||
RB.ReplaceText(FilePos, 1, ">", 4);
|
||||
++ColNo;
|
||||
break;
|
||||
|
||||
case '&':
|
||||
RB.ReplaceText(FilePos, 1, "&", 5);
|
||||
++ColNo;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue