]> Cypherpunks repositories - gostls13.git/commitdiff
godoc: line numbers for all remote search results
authorRobert Griesemer <gri@golang.org>
Sat, 20 Mar 2010 05:48:08 +0000 (22:48 -0700)
committerRobert Griesemer <gri@golang.org>
Sat, 20 Mar 2010 05:48:08 +0000 (22:48 -0700)
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
https://golang.org/cl/669041

lib/godoc/search.txt
src/cmd/godoc/godoc.go
src/cmd/godoc/main.go

index 46f7ae478e0c866231d1e4edebe4a388efd618c2..90266292c49ff56623fcc043b945a5dd076d81a3 100644 (file)
@@ -1,4 +1,5 @@
-QUERY = {Query}
+QUERY
+{Query}
 
 {.section Accurate}
 {.or}
index 7d40000d55721ee00ce674f5f7d6bed7fb29c7e4..861c2fa760448ebca1108190cd2d9fe69aa8c9d2 100644 (file)
@@ -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
 }
index 189f45c3cf5b4eb5b4084ec0e34f456cabbb7c49..f90316dc4576df3b5ed9c85330d98d7a1d4d0819 100644 (file)
@@ -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
        }