summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2010-03-19 22:48:08 -0700
committerRobert Griesemer <gri@golang.org>2010-03-19 22:48:08 -0700
commita2544acf6e94bf8c0e466fbeed1952d7e312b544 (patch)
tree8659cb4e754b85092fc0e5883ab4f066ef271204
parent69d40cea41066b28ab6f87e8467e062ae21371c5 (diff)
downloadgo-a2544acf6e94bf8c0e466fbeed1952d7e312b544.tar.gz
godoc: line numbers for all remote search results
Instead of returning the index lookup result via RPC which has to be corrected for the client, simply render it on the server and return the final output. R=rsc, r CC=golang-dev http://codereview.appspot.com/669041
-rw-r--r--lib/godoc/search.txt3
-rw-r--r--src/cmd/godoc/godoc.go14
-rw-r--r--src/cmd/godoc/main.go8
3 files changed, 15 insertions, 10 deletions
diff --git a/lib/godoc/search.txt b/lib/godoc/search.txt
index 46f7ae478..90266292c 100644
--- a/lib/godoc/search.txt
+++ b/lib/godoc/search.txt
@@ -1,4 +1,5 @@
-QUERY = {Query}
+QUERY
+{Query}
{.section Accurate}
{.or}
diff --git a/src/cmd/godoc/godoc.go b/src/cmd/godoc/godoc.go
index 7d40000d5..861c2fa76 100644
--- a/src/cmd/godoc/godoc.go
+++ b/src/cmd/godoc/godoc.go
@@ -746,8 +746,9 @@ func infoLineFmt(w io.Writer, x interface{}, format string) {
line = index.(*Index).Snippet(line).Line
} else {
// no line information available because
- // we don't have an index
- // TODO(gri) Fix this for remote search
+ // we don't have an index - this should
+ // never happen; be conservative and don't
+ // crash
line = 0
}
}
@@ -1392,10 +1393,15 @@ type Query struct {
}
+type Result struct {
+ Result []byte
+}
+
+
type IndexServer struct{}
-func (s *IndexServer) Lookup(query *Query, result *SearchResult) os.Error {
- *result = lookup(query.Query)
+func (s *IndexServer) Lookup(query *Query, result *Result) os.Error {
+ result.Result = applyTemplate(searchText, "searchText", lookup(query.Query))
return nil
}
diff --git a/src/cmd/godoc/main.go b/src/cmd/godoc/main.go
index 189f45c3c..f90316dc4 100644
--- a/src/cmd/godoc/main.go
+++ b/src/cmd/godoc/main.go
@@ -158,7 +158,7 @@ func loggingHandler(h http.Handler) http.Handler {
}
-func remoteLookup(query string) (result *SearchResult, err os.Error) {
+func remoteLookup(query string) (result *Result, err os.Error) {
var client *rpc.Client
if *serverAddr != "" {
// try server only
@@ -178,7 +178,7 @@ func remoteLookup(query string) (result *SearchResult, err os.Error) {
}
}
- result = new(SearchResult)
+ result = new(Result)
err = client.Call("IndexServer.Lookup", &Query{query}, result)
if err != nil {
return nil, err
@@ -281,9 +281,7 @@ func main() {
if err != nil {
log.Exitf("remoteLookup: %s", err)
}
- if err := searchText.Execute(result, os.Stdout); err != nil {
- log.Exitf("searchText.Execute: %s", err)
- }
+ os.Stdout.Write(result.Result)
}
return
}