Add a `fix' for another whitespace bug.
If the sentence starts with a multiple of eight spaces, the sentence should in almost all practical cases have started with tabs instead. Replace these spaces by tabs.
This commit is contained in:
parent
cd864a19a5
commit
e048cf369a
@ -41,6 +41,8 @@ and prints the result to standard output.
|
||||
It removes leading and trailing empty lines from the input, as well as
|
||||
trailing whitespace characters from ever line of text.
|
||||
Multiple successive empty lines are merged together.
|
||||
If the whitespace at the beginning of a sentence is exactly a multiple
|
||||
of eight spaces, the whitespace is replaced by tabs.
|
||||
Also, spaces preceeding tabs will be merged into the tab character.
|
||||
.Sh AUTHORS
|
||||
.An Ed Schouten Aq ed@FreeBSD.org
|
||||
|
@ -110,6 +110,19 @@ savewhite(char c, bool leading)
|
||||
static void
|
||||
printwhite(void)
|
||||
{
|
||||
off_t i;
|
||||
|
||||
/* Merge spaces at the start of a sentence to tabs if possible. */
|
||||
if ((column % 8) == 0) {
|
||||
for (i = 0; i < column; i++)
|
||||
if (!peekbyte(i + 1, ' '))
|
||||
break;
|
||||
if (i == column) {
|
||||
queuelen -= column;
|
||||
for (i = 0; i < column; i += 8)
|
||||
queue[queuelen++] = '\t';
|
||||
}
|
||||
}
|
||||
|
||||
if (fwrite(queue, 1, queuelen, stdout) != queuelen) {
|
||||
perror("write");
|
||||
|
Loading…
Reference in New Issue
Block a user