aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2009-12-28 17:24:53 -0800
committerRobert Griesemer <gri@golang.org>2009-12-28 17:24:53 -0800
commit2aefb8d930dd6c3878590dff727226130d836b8d (patch)
tree3dab676eb84817d36b7f380008197a703ed418c5
parentf0fcb2d59fb431d45847f09cf1bbcfc3363047ba (diff)
downloadgo-2aefb8d930dd6c3878590dff727226130d836b8d.tar.gz
go-2aefb8d930dd6c3878590dff727226130d836b8d.zip
Fix bug in godoc tab conversion filter:
tabs after an empty line where not converted. Also, made it more robust in the presence of (unexpected) ' ' and '\v' chars in indentation mode. R=r CC=golang-dev https://golang.org/cl/181085
-rw-r--r--src/cmd/godoc/godoc.go18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go
index a381c3a586..8b6bc5e460 100644
--- a/src/cmd/godoc/godoc.go
+++ b/src/cmd/godoc/godoc.go
@@ -471,8 +471,8 @@ type tconv struct {
}
-func (p *tconv) writeIndent(n int) (err os.Error) {
- i := n * *tabwidth
+func (p *tconv) writeIndent() (err os.Error) {
+ i := p.indent
for i > len(spaces) {
i -= len(spaces)
if _, err = p.output.Write(spaces); err != nil {
@@ -490,12 +490,20 @@ func (p *tconv) Write(data []byte) (n int, err os.Error) {
for n, b = range data {
switch p.state {
case indenting:
- if b == '\t' {
+ switch b {
+ case '\t', '\v':
+ p.indent += *tabwidth
+ case '\n':
+ p.indent = 0
+ if _, err = p.output.Write(data[n : n+1]); err != nil {
+ return
+ }
+ case ' ':
p.indent++
- } else {
+ default:
p.state = collecting
pos = n
- if err = p.writeIndent(p.indent); err != nil {
+ if err = p.writeIndent(); err != nil {
return
}
}