// DocFragment finds the package and (optionally) symbol identified by // the current selection, and returns the package path and the // optional symbol URL fragment (e.g. "#Buffer.Len") for a symbol, // along with a title for the code action. // // It is called once to offer the code action, and again when the // command is executed. This is slightly inefficient but ensures that // the title and package/symbol logic are consistent in all cases. // // It returns zeroes if there is nothing to see here (e.g. reference to a builtin). func DocFragment(pkg *cache.Package, pgf *parsego.File, start, end token.Pos) (pkgpath PackagePath, fragment, title string) { … } type thing … func thingAtPoint(pkg *cache.Package, pgf *parsego.File, start, end token.Pos) thing { … } type Web … // PackageDocHTML formats the package documentation page. // // The posURL function returns a URL that when visited, has the side // effect of causing gopls to direct the client editor to navigate to // the specified file/line/column position, in UTF-8 coordinates. func PackageDocHTML(viewID string, pkg *cache.Package, web Web) ([]byte, error) { … } // tupleVariables returns a go1.23 iterator over the variables of a tuple type. // // Example: for v := range tuple.Variables() { ... } // TODO(adonovan): use t.Variables in go1.24. func tupleVariables(t *types.Tuple) iter.Seq[*types.Var] { … }