diff --git a/gopls/doc/generate.go b/gopls/doc/generate.go
index ba4393b..1eff8b9 100644
--- a/gopls/doc/generate.go
+++ b/gopls/doc/generate.go
@@ -21,6 +21,7 @@
 	"reflect"
 	"regexp"
 	"sort"
+	"strconv"
 	"strings"
 	"time"
 	"unicode"
@@ -77,21 +78,6 @@
 		Options: map[string][]*source.OptionJSON{},
 	}
 	defaults := source.DefaultOptions()
-	for _, category := range []reflect.Value{
-		reflect.ValueOf(defaults.UserOptions),
-	} {
-		// Find the type information and ast.File corresponding to the category.
-		optsType := pkg.Types.Scope().Lookup(category.Type().Name())
-		if optsType == nil {
-			return nil, fmt.Errorf("could not find %v in scope %v", category.Type().Name(), pkg.Types.Scope())
-		}
-		opts, err := loadOptions(category, optsType, pkg, "")
-		if err != nil {
-			return nil, err
-		}
-		catName := strings.TrimSuffix(category.Type().Name(), "Options")
-		api.Options[catName] = opts
-	}
 
 	api.Commands, err = loadCommands(pkg)
 	if err != nil {
@@ -111,6 +97,53 @@
 	} {
 		api.Analyzers = append(api.Analyzers, loadAnalyzers(m)...)
 	}
+	for _, category := range []reflect.Value{
+		reflect.ValueOf(defaults.UserOptions),
+	} {
+		// Find the type information and ast.File corresponding to the category.
+		optsType := pkg.Types.Scope().Lookup(category.Type().Name())
+		if optsType == nil {
+			return nil, fmt.Errorf("could not find %v in scope %v", category.Type().Name(), pkg.Types.Scope())
+		}
+		opts, err := loadOptions(category, optsType, pkg, "")
+		if err != nil {
+			return nil, err
+		}
+		catName := strings.TrimSuffix(category.Type().Name(), "Options")
+		api.Options[catName] = opts
+
+		// Hardcode the expected values for the analyses and code lenses
+		// settings, since their keys are not enums.
+		for _, opt := range opts {
+			switch opt.Name {
+			case "analyses":
+				for _, a := range api.Analyzers {
+					opt.EnumKeys.Keys = append(opt.EnumKeys.Keys, source.EnumKey{
+						Name:    fmt.Sprintf("%q", a.Name),
+						Doc:     a.Doc,
+						Default: strconv.FormatBool(a.Default),
+					})
+				}
+			case "codelenses":
+				// Hack: Lenses don't set default values, and we don't want to
+				// pass in the list of expected lenses to loadOptions. Instead,
+				// format the defaults using reflection here. The hackiest part
+				// is reversing lowercasing of the field name.
+				reflectField := category.FieldByName(upperFirst(opt.Name))
+				for _, l := range api.Lenses {
+					def, err := formatDefaultFromEnumBoolMap(reflectField, l.Lens)
+					if err != nil {
+						return nil, err
+					}
+					opt.EnumKeys.Keys = append(opt.EnumKeys.Keys, source.EnumKey{
+						Name:    fmt.Sprintf("%q", l.Lens),
+						Doc:     l.Doc,
+						Default: def,
+					})
+				}
+			}
+		}
+	}
 	return api, nil
 }
 
@@ -161,42 +194,32 @@
 			return nil, fmt.Errorf("could not find reflect field for %v", typesField.Name())
 		}
 
-		// Format the default value. VSCode exposes settings as JSON, so showing them as JSON is reasonable.
-		def := reflectField.Interface()
-		// Durations marshal as nanoseconds, but we want the stringy versions, e.g. "100ms".
-		if t, ok := def.(time.Duration); ok {
-			def = t.String()
-		}
-		defBytes, err := json.Marshal(def)
+		def, err := formatDefault(reflectField)
 		if err != nil {
 			return nil, err
 		}
 
-		// Nil values format as "null" so print them as hardcoded empty values.
-		switch reflectField.Type().Kind() {
-		case reflect.Map:
-			if reflectField.IsNil() {
-				defBytes = []byte("{}")
-			}
-		case reflect.Slice:
-			if reflectField.IsNil() {
-				defBytes = []byte("[]")
-			}
-		}
-
 		typ := typesField.Type().String()
 		if _, ok := enums[typesField.Type()]; ok {
 			typ = "enum"
 		}
+		name := lowerFirst(typesField.Name())
 
-		// Track any maps whose keys are enums.
-		enumValues := enums[typesField.Type()]
+		var enumKeys source.EnumKeys
 		if m, ok := typesField.Type().(*types.Map); ok {
-			if e, ok := enums[m.Key()]; ok {
-				enumValues = e
+			e, ok := enums[m.Key()]
+			if ok {
 				typ = strings.Replace(typ, m.Key().String(), m.Key().Underlying().String(), 1)
 			}
+			keys, err := collectEnumKeys(name, m, reflectField, e)
+			if err != nil {
+				return nil, err
+			}
+			if keys != nil {
+				enumKeys = *keys
+			}
 		}
+
 		// Get the status of the field by checking its struct tags.
 		reflectStructField, ok := category.Type().FieldByName(typesField.Name())
 		if !ok {
@@ -205,11 +228,12 @@
 		status := reflectStructField.Tag.Get("status")
 
 		opts = append(opts, &source.OptionJSON{
-			Name:       lowerFirst(typesField.Name()),
+			Name:       name,
 			Type:       typ,
 			Doc:        lowerFirst(astField.Doc.Text()),
-			Default:    string(defBytes),
-			EnumValues: enumValues,
+			Default:    def,
+			EnumKeys:   enumKeys,
+			EnumValues: enums[typesField.Type()],
 			Status:     status,
 			Hierarchy:  hierarchy,
 		})
@@ -242,6 +266,90 @@
 	return enums, nil
 }
 
+func collectEnumKeys(name string, m *types.Map, reflectField reflect.Value, enumValues []source.EnumValue) (*source.EnumKeys, error) {
+	// Make sure the value type gets set for analyses and codelenses
+	// too.
+	if len(enumValues) == 0 && !hardcodedEnumKeys(name) {
+		return nil, nil
+	}
+	keys := &source.EnumKeys{
+		ValueType: m.Elem().String(),
+	}
+	// We can get default values for enum -> bool maps.
+	var isEnumBoolMap bool
+	if basic, ok := m.Elem().(*types.Basic); ok && basic.Kind() == types.Bool {
+		isEnumBoolMap = true
+	}
+	for _, v := range enumValues {
+		var def string
+		if isEnumBoolMap {
+			var err error
+			def, err = formatDefaultFromEnumBoolMap(reflectField, v.Value)
+			if err != nil {
+				return nil, err
+			}
+		}
+		keys.Keys = append(keys.Keys, source.EnumKey{
+			Name:    v.Value,
+			Doc:     v.Doc,
+			Default: def,
+		})
+	}
+	return keys, nil
+}
+
+func formatDefaultFromEnumBoolMap(reflectMap reflect.Value, enumKey string) (string, error) {
+	if reflectMap.Kind() != reflect.Map {
+		return "", nil
+	}
+	name := enumKey
+	if unquoted, err := strconv.Unquote(name); err == nil {
+		name = unquoted
+	}
+	for _, e := range reflectMap.MapKeys() {
+		if e.String() == name {
+			value := reflectMap.MapIndex(e)
+			if value.Type().Kind() == reflect.Bool {
+				return formatDefault(value)
+			}
+		}
+	}
+	// Assume that if the value isn't mentioned in the map, it defaults to
+	// the default value, false.
+	return formatDefault(reflect.ValueOf(false))
+}
+
+// formatDefault formats the default value into a JSON-like string.
+// VS Code exposes settings as JSON, so showing them as JSON is reasonable.
+// TODO(rstambler): Reconsider this approach, as the VS Code Go generator now
+// marshals to JSON.
+func formatDefault(reflectField reflect.Value) (string, error) {
+	def := reflectField.Interface()
+
+	// Durations marshal as nanoseconds, but we want the stringy versions,
+	// e.g. "100ms".
+	if t, ok := def.(time.Duration); ok {
+		def = t.String()
+	}
+	defBytes, err := json.Marshal(def)
+	if err != nil {
+		return "", err
+	}
+
+	// Nil values format as "null" so print them as hardcoded empty values.
+	switch reflectField.Type().Kind() {
+	case reflect.Map:
+		if reflectField.IsNil() {
+			defBytes = []byte("{}")
+		}
+	case reflect.Slice:
+		if reflectField.IsNil() {
+			defBytes = []byte("[]")
+		}
+	}
+	return string(defBytes), err
+}
+
 // valueDoc transforms a docstring documenting an constant identifier to a
 // docstring documenting its value.
 //
@@ -379,6 +487,13 @@
 	return strings.ToLower(x[:1]) + x[1:]
 }
 
+func upperFirst(x string) string {
+	if x == "" {
+		return x
+	}
+	return strings.ToUpper(x[:1]) + x[1:]
+}
+
 func fileForPos(pkg *packages.Package, pos token.Pos) (*ast.File, error) {
 	fset := pkg.Fset
 	for _, f := range pkg.Syntax {
@@ -411,7 +526,7 @@
 	return true, nil
 }
 
-func rewriteAPI(input []byte, api *source.APIJSON) ([]byte, error) {
+func rewriteAPI(_ []byte, api *source.APIJSON) ([]byte, error) {
 	buf := bytes.NewBuffer(nil)
 	apiStr := litter.Options{
 		HomePackage: "source",
@@ -423,6 +538,7 @@
 	apiStr = strings.ReplaceAll(apiStr, "&LensJSON", "")
 	apiStr = strings.ReplaceAll(apiStr, "&AnalyzerJSON", "")
 	apiStr = strings.ReplaceAll(apiStr, "  EnumValue{", "{")
+	apiStr = strings.ReplaceAll(apiStr, "  EnumKey{", "{")
 	apiBytes, err := format.Source([]byte(apiStr))
 	if err != nil {
 		return nil, err
@@ -463,7 +579,7 @@
 				header := strMultiply("#", level+1)
 				fmt.Fprintf(section, "%s **%v** *%v*\n\n", header, opt.Name, opt.Type)
 				writeStatus(section, opt.Status)
-				enumValues := collectEnumValues(opt)
+				enumValues := collectEnums(opt)
 				fmt.Fprintf(section, "%v%v\nDefault: `%v`.\n\n", opt.Doc, enumValues, opt.Default)
 			}
 		}
@@ -535,29 +651,40 @@
 	return groups
 }
 
-func collectEnumValues(opt *source.OptionJSON) string {
-	var enumValues strings.Builder
-	if len(opt.EnumValues) > 0 {
-		var msg string
-		if opt.Type == "enum" {
-			msg = "\nMust be one of:\n\n"
+func collectEnums(opt *source.OptionJSON) string {
+	var b strings.Builder
+	write := func(name, doc string, index, len int) {
+		if doc != "" {
+			unbroken := parBreakRE.ReplaceAllString(doc, "\\\n")
+			fmt.Fprintf(&b, "* %s", unbroken)
 		} else {
-			msg = "\nCan contain any of:\n\n"
+			fmt.Fprintf(&b, "* `%s`", name)
 		}
-		enumValues.WriteString(msg)
-		for i, val := range opt.EnumValues {
-			if val.Doc != "" {
-				unbroken := parBreakRE.ReplaceAllString(val.Doc, "\\\n")
-				fmt.Fprintf(&enumValues, "* %s", unbroken)
-			} else {
-				fmt.Fprintf(&enumValues, "* `%s`", val.Value)
-			}
-			if i < len(opt.EnumValues)-1 {
-				fmt.Fprint(&enumValues, "\n")
-			}
+		if index < len-1 {
+			fmt.Fprint(&b, "\n")
 		}
 	}
-	return enumValues.String()
+	if len(opt.EnumValues) > 0 && opt.Type == "enum" {
+		b.WriteString("\nMust be one of:\n\n")
+		for i, val := range opt.EnumValues {
+			write(val.Value, val.Doc, i, len(opt.EnumValues))
+		}
+	} else if len(opt.EnumKeys.Keys) > 0 && shouldShowEnumKeysInSettings(opt.Name) {
+		b.WriteString("\nCan contain any of:\n\n")
+		for i, val := range opt.EnumKeys.Keys {
+			write(val.Name, val.Doc, i, len(opt.EnumKeys.Keys))
+		}
+	}
+	return b.String()
+}
+
+func shouldShowEnumKeysInSettings(name string) bool {
+	// Both of these fields have too many possible options to print.
+	return !hardcodedEnumKeys(name)
+}
+
+func hardcodedEnumKeys(name string) bool {
+	return name == "analyses" || name == "codelenses"
 }
 
 func writeBullet(w io.Writer, title string, level int) {
diff --git a/gopls/doc/settings.md b/gopls/doc/settings.md
index 9e13d1b..cf465ce 100644
--- a/gopls/doc/settings.md
+++ b/gopls/doc/settings.md
@@ -145,8 +145,10 @@
 
 #### **codelenses** *map[string]bool*
 
-codelenses overrides the enabled/disabled state of code lenses. See the "Code Lenses"
-section of settings.md for the list of supported lenses.
+codelenses overrides the enabled/disabled state of code lenses. See the
+"Code Lenses" section of the
+[Settings page](https://github.com/golang/tools/blob/master/gopls/doc/settings.md)
+for the list of supported lenses.
 
 Example Usage:
 
@@ -213,7 +215,8 @@
 
 analyses specify analyses that the user would like to enable or disable.
 A map of the names of analysis passes that should be enabled/disabled.
-A full list of analyzers that gopls uses can be found [here](analyzers.md)
+A full list of analyzers that gopls uses can be found
+[here](https://github.com/golang/tools/blob/master/gopls/doc/analyzers.md).
 
 Example Usage:
 
@@ -376,7 +379,9 @@
 
 ## Code Lenses
 
-These are the code lenses that `gopls` currently supports. They can be enabled and disabled using the `codeLenses` setting, documented above. The names and features are subject to change.
+These are the code lenses that `gopls` currently supports. They can be enabled
+and disabled using the `codelenses` setting, documented above. Their names and
+features are subject to change.
 
 <!-- BEGIN Lenses: DO NOT MANUALLY EDIT THIS SECTION -->
 ### **Run go generate**
diff --git a/internal/lsp/source/api_json.go b/internal/lsp/source/api_json.go
index 85d91cd..da164ed 100755
--- a/internal/lsp/source/api_json.go
+++ b/internal/lsp/source/api_json.go
@@ -6,72 +6,104 @@
 	Options: map[string][]*OptionJSON{
 		"User": {
 			{
-				Name:       "buildFlags",
-				Type:       "[]string",
-				Doc:        "buildFlags is the set of flags passed on to the build system when invoked.\nIt is applied to queries like `go list`, which is used when discovering files.\nThe most common use is to set `-tags`.\n",
+				Name: "buildFlags",
+				Type: "[]string",
+				Doc:  "buildFlags is the set of flags passed on to the build system when invoked.\nIt is applied to queries like `go list`, which is used when discovering files.\nThe most common use is to set `-tags`.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "[]",
 				Status:     "",
 				Hierarchy:  "build",
 			},
 			{
-				Name:       "env",
-				Type:       "map[string]string",
-				Doc:        "env adds environment variables to external commands run by `gopls`, most notably `go list`.\n",
+				Name: "env",
+				Type: "map[string]string",
+				Doc:  "env adds environment variables to external commands run by `gopls`, most notably `go list`.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "{}",
 				Status:     "",
 				Hierarchy:  "build",
 			},
 			{
-				Name:       "directoryFilters",
-				Type:       "[]string",
-				Doc:        "directoryFilters can be used to exclude unwanted directories from the\nworkspace. By default, all directories are included. Filters are an\noperator, `+` to include and `-` to exclude, followed by a path prefix\nrelative to the workspace folder. They are evaluated in order, and\nthe last filter that applies to a path controls whether it is included.\nThe path prefix can be empty, so an initial `-` excludes everything.\n\nExamples:\nExclude node_modules: `-node_modules`\nInclude only project_a: `-` (exclude everything), `+project_a`\nInclude only project_a, but not node_modules inside it: `-`, `+project_a`, `-project_a/node_modules`\n",
+				Name: "directoryFilters",
+				Type: "[]string",
+				Doc:  "directoryFilters can be used to exclude unwanted directories from the\nworkspace. By default, all directories are included. Filters are an\noperator, `+` to include and `-` to exclude, followed by a path prefix\nrelative to the workspace folder. They are evaluated in order, and\nthe last filter that applies to a path controls whether it is included.\nThe path prefix can be empty, so an initial `-` excludes everything.\n\nExamples:\nExclude node_modules: `-node_modules`\nInclude only project_a: `-` (exclude everything), `+project_a`\nInclude only project_a, but not node_modules inside it: `-`, `+project_a`, `-project_a/node_modules`\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "[]",
 				Status:     "",
 				Hierarchy:  "build",
 			},
 			{
-				Name:       "expandWorkspaceToModule",
-				Type:       "bool",
-				Doc:        "expandWorkspaceToModule instructs `gopls` to adjust the scope of the\nworkspace to find the best available module root. `gopls` first looks for\na go.mod file in any parent directory of the workspace folder, expanding\nthe scope to that directory if it exists. If no viable parent directory is\nfound, gopls will check if there is exactly one child directory containing\na go.mod file, narrowing the scope to that directory if it exists.\n",
+				Name: "expandWorkspaceToModule",
+				Type: "bool",
+				Doc:  "expandWorkspaceToModule instructs `gopls` to adjust the scope of the\nworkspace to find the best available module root. `gopls` first looks for\na go.mod file in any parent directory of the workspace folder, expanding\nthe scope to that directory if it exists. If no viable parent directory is\nfound, gopls will check if there is exactly one child directory containing\na go.mod file, narrowing the scope to that directory if it exists.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "true",
 				Status:     "experimental",
 				Hierarchy:  "build",
 			},
 			{
-				Name:       "experimentalWorkspaceModule",
-				Type:       "bool",
-				Doc:        "experimentalWorkspaceModule opts a user into the experimental support\nfor multi-module workspaces.\n",
+				Name: "experimentalWorkspaceModule",
+				Type: "bool",
+				Doc:  "experimentalWorkspaceModule opts a user into the experimental support\nfor multi-module workspaces.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "experimental",
 				Hierarchy:  "build",
 			},
 			{
-				Name:       "experimentalPackageCacheKey",
-				Type:       "bool",
-				Doc:        "experimentalPackageCacheKey controls whether to use a coarser cache key\nfor package type information to increase cache hits. This setting removes\nthe user's environment, build flags, and working directory from the cache\nkey, which should be a safe change as all relevant inputs into the type\nchecking pass are already hashed into the key. This is temporarily guarded\nby an experiment because caching behavior is subtle and difficult to\ncomprehensively test.\n",
+				Name: "experimentalPackageCacheKey",
+				Type: "bool",
+				Doc:  "experimentalPackageCacheKey controls whether to use a coarser cache key\nfor package type information to increase cache hits. This setting removes\nthe user's environment, build flags, and working directory from the cache\nkey, which should be a safe change as all relevant inputs into the type\nchecking pass are already hashed into the key. This is temporarily guarded\nby an experiment because caching behavior is subtle and difficult to\ncomprehensively test.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "true",
 				Status:     "experimental",
 				Hierarchy:  "build",
 			},
 			{
-				Name:       "allowModfileModifications",
-				Type:       "bool",
-				Doc:        "allowModfileModifications disables -mod=readonly, allowing imports from\nout-of-scope modules. This option will eventually be removed.\n",
+				Name: "allowModfileModifications",
+				Type: "bool",
+				Doc:  "allowModfileModifications disables -mod=readonly, allowing imports from\nout-of-scope modules. This option will eventually be removed.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "experimental",
 				Hierarchy:  "build",
 			},
 			{
-				Name:       "allowImplicitNetworkAccess",
-				Type:       "bool",
-				Doc:        "allowImplicitNetworkAccess disables GOPROXY=off, allowing implicit module\ndownloads rather than requiring user action. This option will eventually\nbe removed.\n",
+				Name: "allowImplicitNetworkAccess",
+				Type: "bool",
+				Doc:  "allowImplicitNetworkAccess disables GOPROXY=off, allowing implicit module\ndownloads rather than requiring user action. This option will eventually\nbe removed.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "experimental",
@@ -81,6 +113,10 @@
 				Name: "hoverKind",
 				Type: "enum",
 				Doc:  "hoverKind controls the information that appears in the hover text.\nSingleLine and Structured are intended for use only by authors of editor plugins.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: []EnumValue{
 					{
 						Value: "\"FullDocumentation\"",
@@ -108,36 +144,52 @@
 				Hierarchy: "ui.documentation",
 			},
 			{
-				Name:       "linkTarget",
-				Type:       "string",
-				Doc:        "linkTarget controls where documentation links go.\nIt might be one of:\n\n* `\"godoc.org\"`\n* `\"pkg.go.dev\"`\n\nIf company chooses to use its own `godoc.org`, its address can be used as well.\n",
+				Name: "linkTarget",
+				Type: "string",
+				Doc:  "linkTarget controls where documentation links go.\nIt might be one of:\n\n* `\"godoc.org\"`\n* `\"pkg.go.dev\"`\n\nIf company chooses to use its own `godoc.org`, its address can be used as well.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "\"pkg.go.dev\"",
 				Status:     "",
 				Hierarchy:  "ui.documentation",
 			},
 			{
-				Name:       "linksInHover",
-				Type:       "bool",
-				Doc:        "linksInHover toggles the presence of links to documentation in hover.\n",
+				Name: "linksInHover",
+				Type: "bool",
+				Doc:  "linksInHover toggles the presence of links to documentation in hover.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "true",
 				Status:     "",
 				Hierarchy:  "ui.documentation",
 			},
 			{
-				Name:       "usePlaceholders",
-				Type:       "bool",
-				Doc:        "placeholders enables placeholders for function parameters or struct\nfields in completion responses.\n",
+				Name: "usePlaceholders",
+				Type: "bool",
+				Doc:  "placeholders enables placeholders for function parameters or struct\nfields in completion responses.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "",
 				Hierarchy:  "ui.completion",
 			},
 			{
-				Name:       "completionBudget",
-				Type:       "time.Duration",
-				Doc:        "completionBudget is the soft latency goal for completion requests. Most\nrequests finish in a couple milliseconds, but in some cases deep\ncompletions can take much longer. As we use up our budget we\ndynamically reduce the search scope to ensure we return timely\nresults. Zero means unlimited.\n",
+				Name: "completionBudget",
+				Type: "time.Duration",
+				Doc:  "completionBudget is the soft latency goal for completion requests. Most\nrequests finish in a couple milliseconds, but in some cases deep\ncompletions can take much longer. As we use up our budget we\ndynamically reduce the search scope to ensure we return timely\nresults. Zero means unlimited.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "\"100ms\"",
 				Status:     "debug",
@@ -147,6 +199,10 @@
 				Name: "matcher",
 				Type: "enum",
 				Doc:  "matcher sets the algorithm that is used when calculating completion\ncandidates.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: []EnumValue{
 					{
 						Value: "\"CaseInsensitive\"",
@@ -169,6 +225,10 @@
 				Name: "importShortcut",
 				Type: "enum",
 				Doc:  "importShortcut specifies whether import statements should link to\ndocumentation or go to definitions.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: []EnumValue{
 					{
 						Value: "\"Both\"",
@@ -191,6 +251,10 @@
 				Name: "symbolMatcher",
 				Type: "enum",
 				Doc:  "symbolMatcher sets the algorithm that is used when finding workspace symbols.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: []EnumValue{
 					{
 						Value: "\"CaseInsensitive\"",
@@ -213,6 +277,10 @@
 				Name: "symbolStyle",
 				Type: "enum",
 				Doc:  "symbolStyle controls how symbols are qualified in symbol responses.\n\nExample Usage:\n\n```json5\n\"gopls\": {\n...\n  \"symbolStyle\": \"dynamic\",\n...\n}\n```\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: []EnumValue{
 					{
 						Value: "\"Dynamic\"",
@@ -232,18 +300,222 @@
 				Hierarchy: "ui.navigation",
 			},
 			{
-				Name:       "analyses",
-				Type:       "map[string]bool",
-				Doc:        "analyses specify analyses that the user would like to enable or disable.\nA map of the names of analysis passes that should be enabled/disabled.\nA full list of analyzers that gopls uses can be found [here](analyzers.md)\n\nExample Usage:\n\n```json5\n...\n\"analyses\": {\n  \"unreachable\": false, // Disable the unreachable analyzer.\n  \"unusedparams\": true  // Enable the unusedparams analyzer.\n}\n...\n```\n",
+				Name: "analyses",
+				Type: "map[string]bool",
+				Doc:  "analyses specify analyses that the user would like to enable or disable.\nA map of the names of analysis passes that should be enabled/disabled.\nA full list of analyzers that gopls uses can be found\n[here](https://github.com/golang/tools/blob/master/gopls/doc/analyzers.md).\n\nExample Usage:\n\n```json5\n...\n\"analyses\": {\n  \"unreachable\": false, // Disable the unreachable analyzer.\n  \"unusedparams\": true  // Enable the unusedparams analyzer.\n}\n...\n```\n",
+				EnumKeys: EnumKeys{
+					ValueType: "bool",
+					Keys: []EnumKey{
+						{
+							Name:    "\"asmdecl\"",
+							Doc:     "report mismatches between assembly files and Go declarations",
+							Default: "true",
+						},
+						{
+							Name:    "\"assign\"",
+							Doc:     "check for useless assignments\n\nThis checker reports assignments of the form x = x or a[i] = a[i].\nThese are almost always useless, and even when they aren't they are\nusually a mistake.",
+							Default: "true",
+						},
+						{
+							Name:    "\"atomic\"",
+							Doc:     "check for common mistakes using the sync/atomic package\n\nThe atomic checker looks for assignment statements of the form:\n\n\tx = atomic.AddUint64(&x, 1)\n\nwhich are not atomic.",
+							Default: "true",
+						},
+						{
+							Name:    "\"atomicalign\"",
+							Doc:     "check for non-64-bits-aligned arguments to sync/atomic functions",
+							Default: "true",
+						},
+						{
+							Name:    "\"bools\"",
+							Doc:     "check for common mistakes involving boolean operators",
+							Default: "true",
+						},
+						{
+							Name:    "\"buildtag\"",
+							Doc:     "check that +build tags are well-formed and correctly located",
+							Default: "true",
+						},
+						{
+							Name:    "\"cgocall\"",
+							Doc:     "detect some violations of the cgo pointer passing rules\n\nCheck for invalid cgo pointer passing.\nThis looks for code that uses cgo to call C code passing values\nwhose types are almost always invalid according to the cgo pointer\nsharing rules.\nSpecifically, it warns about attempts to pass a Go chan, map, func,\nor slice to C, either directly, or via a pointer, array, or struct.",
+							Default: "true",
+						},
+						{
+							Name:    "\"composites\"",
+							Doc:     "check for unkeyed composite literals\n\nThis analyzer reports a diagnostic for composite literals of struct\ntypes imported from another package that do not use the field-keyed\nsyntax. Such literals are fragile because the addition of a new field\n(even if unexported) to the struct will cause compilation to fail.\n\nAs an example,\n\n\terr = &net.DNSConfigError{err}\n\nshould be replaced by:\n\n\terr = &net.DNSConfigError{Err: err}\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"copylocks\"",
+							Doc:     "check for locks erroneously passed by value\n\nInadvertently copying a value containing a lock, such as sync.Mutex or\nsync.WaitGroup, may cause both copies to malfunction. Generally such\nvalues should be referred to through a pointer.",
+							Default: "true",
+						},
+						{
+							Name:    "\"deepequalerrors\"",
+							Doc:     "check for calls of reflect.DeepEqual on error values\n\nThe deepequalerrors checker looks for calls of the form:\n\n    reflect.DeepEqual(err1, err2)\n\nwhere err1 and err2 are errors. Using reflect.DeepEqual to compare\nerrors is discouraged.",
+							Default: "true",
+						},
+						{
+							Name:    "\"errorsas\"",
+							Doc:     "report passing non-pointer or non-error values to errors.As\n\nThe errorsas analysis reports calls to errors.As where the type\nof the second argument is not a pointer to a type implementing error.",
+							Default: "true",
+						},
+						{
+							Name:    "\"fieldalignment\"",
+							Doc:     "find structs that would take less memory if their fields were sorted\n\nThis analyzer find structs that can be rearranged to take less memory, and provides\na suggested edit with the optimal order.\n",
+							Default: "false",
+						},
+						{
+							Name:    "\"httpresponse\"",
+							Doc:     "check for mistakes using HTTP responses\n\nA common mistake when using the net/http package is to defer a function\ncall to close the http.Response Body before checking the error that\ndetermines whether the response is valid:\n\n\tresp, err := http.Head(url)\n\tdefer resp.Body.Close()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\t// (defer statement belongs here)\n\nThis checker helps uncover latent nil dereference bugs by reporting a\ndiagnostic for such mistakes.",
+							Default: "true",
+						},
+						{
+							Name:    "\"ifaceassert\"",
+							Doc:     "detect impossible interface-to-interface type assertions\n\nThis checker flags type assertions v.(T) and corresponding type-switch cases\nin which the static type V of v is an interface that cannot possibly implement\nthe target interface T. This occurs when V and T contain methods with the same\nname but different signatures. Example:\n\n\tvar v interface {\n\t\tRead()\n\t}\n\t_ = v.(io.Reader)\n\nThe Read method in v has a different signature than the Read method in\nio.Reader, so this assertion cannot succeed.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"loopclosure\"",
+							Doc:     "check references to loop variables from within nested functions\n\nThis analyzer checks for references to loop variables from within a\nfunction literal inside the loop body. It checks only instances where\nthe function literal is called in a defer or go statement that is the\nlast statement in the loop body, as otherwise we would need whole\nprogram analysis.\n\nFor example:\n\n\tfor i, v := range s {\n\t\tgo func() {\n\t\t\tprintln(i, v) // not what you might expect\n\t\t}()\n\t}\n\nSee: https://golang.org/doc/go_faq.html#closures_and_goroutines",
+							Default: "true",
+						},
+						{
+							Name:    "\"lostcancel\"",
+							Doc:     "check cancel func returned by context.WithCancel is called\n\nThe cancellation function returned by context.WithCancel, WithTimeout,\nand WithDeadline must be called or the new context will remain live\nuntil its parent context is cancelled.\n(The background context is never cancelled.)",
+							Default: "true",
+						},
+						{
+							Name:    "\"nilfunc\"",
+							Doc:     "check for useless comparisons between functions and nil\n\nA useless comparison is one like f == nil as opposed to f() == nil.",
+							Default: "true",
+						},
+						{
+							Name:    "\"printf\"",
+							Doc:     "check consistency of Printf format strings and arguments\n\nThe check applies to known functions (for example, those in package fmt)\nas well as any detected wrappers of known functions.\n\nA function that wants to avail itself of printf checking but is not\nfound by this analyzer's heuristics (for example, due to use of\ndynamic calls) can insert a bogus call:\n\n\tif false {\n\t\t_ = fmt.Sprintf(format, args...) // enable printf checking\n\t}\n\nThe -funcs flag specifies a comma-separated list of names of additional\nknown formatting functions or methods. If the name contains a period,\nit must denote a specific function using one of the following forms:\n\n\tdir/pkg.Function\n\tdir/pkg.Type.Method\n\t(*dir/pkg.Type).Method\n\nOtherwise the name is interpreted as a case-insensitive unqualified\nidentifier such as \"errorf\". Either way, if a listed name ends in f, the\nfunction is assumed to be Printf-like, taking a format string before the\nargument list. Otherwise it is assumed to be Print-like, taking a list\nof arguments with no format string.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"shadow\"",
+							Doc:     "check for possible unintended shadowing of variables\n\nThis analyzer check for shadowed variables.\nA shadowed variable is a variable declared in an inner scope\nwith the same name and type as a variable in an outer scope,\nand where the outer variable is mentioned after the inner one\nis declared.\n\n(This definition can be refined; the module generates too many\nfalse positives and is not yet enabled by default.)\n\nFor example:\n\n\tfunc BadRead(f *os.File, buf []byte) error {\n\t\tvar err error\n\t\tfor {\n\t\t\tn, err := f.Read(buf) // shadows the function variable 'err'\n\t\t\tif err != nil {\n\t\t\t\tbreak // causes return of wrong value\n\t\t\t}\n\t\t\tfoo(buf)\n\t\t}\n\t\treturn err\n\t}\n",
+							Default: "false",
+						},
+						{
+							Name:    "\"shift\"",
+							Doc:     "check for shifts that equal or exceed the width of the integer",
+							Default: "true",
+						},
+						{
+							Name:    "\"simplifycompositelit\"",
+							Doc:     "check for composite literal simplifications\n\nAn array, slice, or map composite literal of the form:\n\t[]T{T{}, T{}}\nwill be simplified to:\n\t[]T{{}, {}}\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
+							Default: "true",
+						},
+						{
+							Name:    "\"simplifyrange\"",
+							Doc:     "check for range statement simplifications\n\nA range of the form:\n\tfor x, _ = range v {...}\nwill be simplified to:\n\tfor x = range v {...}\n\nA range of the form:\n\tfor _ = range v {...}\nwill be simplified to:\n\tfor range v {...}\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
+							Default: "true",
+						},
+						{
+							Name:    "\"simplifyslice\"",
+							Doc:     "check for slice simplifications\n\nA slice expression of the form:\n\ts[a:len(s)]\nwill be simplified to:\n\ts[a:]\n\nThis is one of the simplifications that \"gofmt -s\" applies.",
+							Default: "true",
+						},
+						{
+							Name:    "\"sortslice\"",
+							Doc:     "check the argument type of sort.Slice\n\nsort.Slice requires an argument of a slice type. Check that\nthe interface{} value passed to sort.Slice is actually a slice.",
+							Default: "true",
+						},
+						{
+							Name:    "\"stdmethods\"",
+							Doc:     "check signature of methods of well-known interfaces\n\nSometimes a type may be intended to satisfy an interface but may fail to\ndo so because of a mistake in its method signature.\nFor example, the result of this WriteTo method should be (int64, error),\nnot error, to satisfy io.WriterTo:\n\n\ttype myWriterTo struct{...}\n        func (myWriterTo) WriteTo(w io.Writer) error { ... }\n\nThis check ensures that each method whose name matches one of several\nwell-known interface methods from the standard library has the correct\nsignature for that interface.\n\nChecked method names include:\n\tFormat GobEncode GobDecode MarshalJSON MarshalXML\n\tPeek ReadByte ReadFrom ReadRune Scan Seek\n\tUnmarshalJSON UnreadByte UnreadRune WriteByte\n\tWriteTo\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"stringintconv\"",
+							Doc:     "check for string(int) conversions\n\nThis checker flags conversions of the form string(x) where x is an integer\n(but not byte or rune) type. Such conversions are discouraged because they\nreturn the UTF-8 representation of the Unicode code point x, and not a decimal\nstring representation of x as one might expect. Furthermore, if x denotes an\ninvalid code point, the conversion cannot be statically rejected.\n\nFor conversions that intend on using the code point, consider replacing them\nwith string(rune(x)). Otherwise, strconv.Itoa and its equivalents return the\nstring representation of the value in the desired base.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"structtag\"",
+							Doc:     "check that struct field tags conform to reflect.StructTag.Get\n\nAlso report certain struct tags (json, xml) used with unexported fields.",
+							Default: "true",
+						},
+						{
+							Name:    "\"testinggoroutine\"",
+							Doc:     "report calls to (*testing.T).Fatal from goroutines started by a test.\n\nFunctions that abruptly terminate a test, such as the Fatal, Fatalf, FailNow, and\nSkip{,f,Now} methods of *testing.T, must be called from the test goroutine itself.\nThis checker detects calls to these functions that occur within a goroutine\nstarted by the test. For example:\n\nfunc TestFoo(t *testing.T) {\n    go func() {\n        t.Fatal(\"oops\") // error: (*T).Fatal called from non-test goroutine\n    }()\n}\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"tests\"",
+							Doc:     "check for common mistaken usages of tests and examples\n\nThe tests checker walks Test, Benchmark and Example functions checking\nmalformed names, wrong signatures and examples documenting non-existent\nidentifiers.\n\nPlease see the documentation for package testing in golang.org/pkg/testing\nfor the conventions that are enforced for Tests, Benchmarks, and Examples.",
+							Default: "true",
+						},
+						{
+							Name:    "\"unmarshal\"",
+							Doc:     "report passing non-pointer or non-interface values to unmarshal\n\nThe unmarshal analysis reports calls to functions such as json.Unmarshal\nin which the argument type is not a pointer or an interface.",
+							Default: "true",
+						},
+						{
+							Name:    "\"unreachable\"",
+							Doc:     "check for unreachable code\n\nThe unreachable analyzer finds statements that execution can never reach\nbecause they are preceded by an return statement, a call to panic, an\ninfinite loop, or similar constructs.",
+							Default: "true",
+						},
+						{
+							Name:    "\"unsafeptr\"",
+							Doc:     "check for invalid conversions of uintptr to unsafe.Pointer\n\nThe unsafeptr analyzer reports likely incorrect uses of unsafe.Pointer\nto convert integers to pointers. A conversion from uintptr to\nunsafe.Pointer is invalid if it implies that there is a uintptr-typed\nword in memory that holds a pointer value, because that word will be\ninvisible to stack copying and to the garbage collector.",
+							Default: "true",
+						},
+						{
+							Name:    "\"unusedparams\"",
+							Doc:     "check for unused parameters of functions\n\nThe unusedparams analyzer checks functions to see if there are\nany parameters that are not being used.\n\nTo reduce false positives it ignores:\n- methods\n- parameters that do not have a name or are underscored\n- functions in test files\n- functions with empty bodies or those with just a return stmt",
+							Default: "false",
+						},
+						{
+							Name:    "\"unusedresult\"",
+							Doc:     "check for unused results of calls to some functions\n\nSome functions like fmt.Errorf return a result and have no side effects,\nso it is always a mistake to discard the result. This analyzer reports\ncalls to certain functions in which the result of the call is ignored.\n\nThe set of functions may be controlled using flags.",
+							Default: "true",
+						},
+						{
+							Name:    "\"fillreturns\"",
+							Doc:     "suggested fixes for \"wrong number of return values (want %d, got %d)\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"wrong number of return values (want %d, got %d)\". For example:\n\tfunc m() (int, string, *bool, error) {\n\t\treturn\n\t}\nwill turn into\n\tfunc m() (int, string, *bool, error) {\n\t\treturn 0, \"\", nil, nil\n\t}\n\nThis functionality is similar to https://github.com/sqs/goreturns.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"nonewvars\"",
+							Doc:     "suggested fixes for \"no new vars on left side of :=\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"no new vars on left side of :=\". For example:\n\tz := 1\n\tz := 2\nwill turn into\n\tz := 1\n\tz = 2\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"noresultvalues\"",
+							Doc:     "suggested fixes for \"no result values expected\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"no result values expected\". For example:\n\tfunc z() { return nil }\nwill turn into\n\tfunc z() { return }\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"undeclaredname\"",
+							Doc:     "suggested fixes for \"undeclared name: <>\"\n\nThis checker provides suggested fixes for type errors of the\ntype \"undeclared name: <>\". It will insert a new statement:\n\"<> := \".",
+							Default: "true",
+						},
+						{
+							Name:    "\"fillstruct\"",
+							Doc:     "note incomplete struct initializations\n\nThis analyzer provides diagnostics for any struct literals that do not have\nany fields initialized. Because the suggested fix for this analysis is\nexpensive to compute, callers should compute it separately, using the\nSuggestedFix function below.\n",
+							Default: "true",
+						},
+					},
+				},
 				EnumValues: nil,
 				Default:    "{}",
 				Status:     "",
 				Hierarchy:  "ui.diagnostic",
 			},
 			{
-				Name:       "staticcheck",
-				Type:       "bool",
-				Doc:        "staticcheck enables additional analyses from staticcheck.io.\n",
+				Name: "staticcheck",
+				Type: "bool",
+				Doc:  "staticcheck enables additional analyses from staticcheck.io.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "experimental",
@@ -253,77 +525,145 @@
 				Name: "annotations",
 				Type: "map[string]bool",
 				Doc:  "annotations specifies the various kinds of optimization diagnostics\nthat should be reported by the gc_details command.\n",
-				EnumValues: []EnumValue{
-					{
-						Value: "\"bounds\"",
-						Doc:   "`\"bounds\"` controls bounds checking diagnostics.\n",
-					},
-					{
-						Value: "\"escape\"",
-						Doc:   "`\"escape\"` controls diagnostics about escape choices.\n",
-					},
-					{
-						Value: "\"inline\"",
-						Doc:   "`\"inline\"` controls diagnostics about inlining choices.\n",
-					},
-					{
-						Value: "\"nil\"",
-						Doc:   "`\"nil\"` controls nil checks.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "bool",
+					Keys: []EnumKey{
+						{
+							Name:    "\"bounds\"",
+							Doc:     "`\"bounds\"` controls bounds checking diagnostics.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"escape\"",
+							Doc:     "`\"escape\"` controls diagnostics about escape choices.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"inline\"",
+							Doc:     "`\"inline\"` controls diagnostics about inlining choices.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"nil\"",
+							Doc:     "`\"nil\"` controls nil checks.\n",
+							Default: "true",
+						},
 					},
 				},
-				Default:   "{\"bounds\":true,\"escape\":true,\"inline\":true,\"nil\":true}",
-				Status:    "experimental",
-				Hierarchy: "ui.diagnostic",
+				EnumValues: nil,
+				Default:    "{\"bounds\":true,\"escape\":true,\"inline\":true,\"nil\":true}",
+				Status:     "experimental",
+				Hierarchy:  "ui.diagnostic",
 			},
 			{
-				Name:       "experimentalDiagnosticsDelay",
-				Type:       "time.Duration",
-				Doc:        "experimentalDiagnosticsDelay controls the amount of time that gopls waits\nafter the most recent file modification before computing deep diagnostics.\nSimple diagnostics (parsing and type-checking) are always run immediately\non recently modified packages.\n\nThis option must be set to a valid duration string, for example `\"250ms\"`.\n",
+				Name: "experimentalDiagnosticsDelay",
+				Type: "time.Duration",
+				Doc:  "experimentalDiagnosticsDelay controls the amount of time that gopls waits\nafter the most recent file modification before computing deep diagnostics.\nSimple diagnostics (parsing and type-checking) are always run immediately\non recently modified packages.\n\nThis option must be set to a valid duration string, for example `\"250ms\"`.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "\"250ms\"",
 				Status:     "experimental",
 				Hierarchy:  "ui.diagnostic",
 			},
 			{
-				Name:       "codelenses",
-				Type:       "map[string]bool",
-				Doc:        "codelenses overrides the enabled/disabled state of code lenses. See the \"Code Lenses\"\nsection of settings.md for the list of supported lenses.\n\nExample Usage:\n\n```json5\n\"gopls\": {\n...\n  \"codelens\": {\n    \"generate\": false,  // Don't show the `go generate` lens.\n    \"gc_details\": true  // Show a code lens toggling the display of gc's choices.\n  }\n...\n}\n```\n",
+				Name: "codelenses",
+				Type: "map[string]bool",
+				Doc:  "codelenses overrides the enabled/disabled state of code lenses. See the\n\"Code Lenses\" section of the\n[Settings page](https://github.com/golang/tools/blob/master/gopls/doc/settings.md)\nfor the list of supported lenses.\n\nExample Usage:\n\n```json5\n\"gopls\": {\n...\n  \"codelens\": {\n    \"generate\": false,  // Don't show the `go generate` lens.\n    \"gc_details\": true  // Show a code lens toggling the display of gc's choices.\n  }\n...\n}\n```\n",
+				EnumKeys: EnumKeys{
+					ValueType: "bool",
+					Keys: []EnumKey{
+						{
+							Name:    "\"generate\"",
+							Doc:     "generate runs `go generate` for a given directory.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"regenerate_cgo\"",
+							Doc:     "regenerate_cgo regenerates cgo definitions.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"test\"",
+							Doc:     "test runs `go test` for a specific test function.\n",
+							Default: "false",
+						},
+						{
+							Name:    "\"tidy\"",
+							Doc:     "tidy runs `go mod tidy` for a module.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"upgrade_dependency\"",
+							Doc:     "upgrade_dependency upgrades a dependency.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"vendor\"",
+							Doc:     "vendor runs `go mod vendor` for a module.\n",
+							Default: "true",
+						},
+						{
+							Name:    "\"gc_details\"",
+							Doc:     "gc_details controls calculation of gc annotations.\n",
+							Default: "false",
+						},
+					},
+				},
 				EnumValues: nil,
 				Default:    "{\"gc_details\":false,\"generate\":true,\"regenerate_cgo\":true,\"tidy\":true,\"upgrade_dependency\":true,\"vendor\":true}",
 				Status:     "",
 				Hierarchy:  "ui",
 			},
 			{
-				Name:       "semanticTokens",
-				Type:       "bool",
-				Doc:        "semanticTokens controls whether the LSP server will send\nsemantic tokens to the client.\n",
+				Name: "semanticTokens",
+				Type: "bool",
+				Doc:  "semanticTokens controls whether the LSP server will send\nsemantic tokens to the client.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "experimental",
 				Hierarchy:  "ui",
 			},
 			{
-				Name:       "local",
-				Type:       "string",
-				Doc:        "local is the equivalent of the `goimports -local` flag, which puts\nimports beginning with this string after third-party packages. It should\nbe the prefix of the import path whose imports should be grouped\nseparately.\n",
+				Name: "local",
+				Type: "string",
+				Doc:  "local is the equivalent of the `goimports -local` flag, which puts\nimports beginning with this string after third-party packages. It should\nbe the prefix of the import path whose imports should be grouped\nseparately.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "\"\"",
 				Status:     "",
 				Hierarchy:  "formatting",
 			},
 			{
-				Name:       "gofumpt",
-				Type:       "bool",
-				Doc:        "gofumpt indicates if we should run gofumpt formatting.\n",
+				Name: "gofumpt",
+				Type: "bool",
+				Doc:  "gofumpt indicates if we should run gofumpt formatting.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "",
 				Hierarchy:  "formatting",
 			},
 			{
-				Name:       "verboseOutput",
-				Type:       "bool",
-				Doc:        "verboseOutput enables additional debug logging.\n",
+				Name: "verboseOutput",
+				Type: "bool",
+				Doc:  "verboseOutput enables additional debug logging.\n",
+				EnumKeys: EnumKeys{
+					ValueType: "",
+					Keys:      nil,
+				},
 				EnumValues: nil,
 				Default:    "false",
 				Status:     "debug",
diff --git a/internal/lsp/source/options.go b/internal/lsp/source/options.go
index 9ba2773..4e20893 100644
--- a/internal/lsp/source/options.go
+++ b/internal/lsp/source/options.go
@@ -249,8 +249,10 @@
 	NavigationOptions
 	DiagnosticOptions
 
-	// Codelenses overrides the enabled/disabled state of code lenses. See the "Code Lenses"
-	// section of settings.md for the list of supported lenses.
+	// Codelenses overrides the enabled/disabled state of code lenses. See the
+	// "Code Lenses" section of the
+	// [Settings page](https://github.com/golang/tools/blob/master/gopls/doc/settings.md)
+	// for the list of supported lenses.
 	//
 	// Example Usage:
 	//
@@ -320,7 +322,8 @@
 type DiagnosticOptions struct {
 	// Analyses specify analyses that the user would like to enable or disable.
 	// A map of the names of analysis passes that should be enabled/disabled.
-	// A full list of analyzers that gopls uses can be found [here](analyzers.md)
+	// A full list of analyzers that gopls uses can be found
+	// [here](https://github.com/golang/tools/blob/master/gopls/doc/analyzers.md).
 	//
 	// Example Usage:
 	//
@@ -1163,12 +1166,24 @@
 	Name       string
 	Type       string
 	Doc        string
+	EnumKeys   EnumKeys
 	EnumValues []EnumValue
 	Default    string
 	Status     string
 	Hierarchy  string
 }
 
+type EnumKeys struct {
+	ValueType string
+	Keys      []EnumKey
+}
+
+type EnumKey struct {
+	Name    string
+	Doc     string
+	Default string
+}
+
 type EnumValue struct {
 	Value string
 	Doc   string
