func Completion(ctx context.Context, snapshot *cache.Snapshot, fh file.Handle, position protocol.Position) (*protocol.CompletionList, error) { … } // dirNonClean is filepath.Dir, without the Clean at the end. func dirNonClean(path string) string { … } func join(a, b string) string { … }