gopls/internal/settings: introduce ModeVulncheckPrompt as default value for VulncheckMode setting

- Add a new default ModeVulncheckPrompt.
- This is in preparation for new logic that will prompt a user to run
  vulncheck.
- Currently, ModeVulncheckPrompt still disables vulncheck.

Change-Id: I3ad7c8849fc1a003a5ea9119b7aed7cc564479e2
Reviewed-on: https://go-review.googlesource.com/c/tools/+/706535
Reviewed-by: Hongxiang Jiang <hxjiang@golang.org>
Auto-Submit: Hongxiang Jiang <hxjiang@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
diff --git a/gopls/doc/settings.md b/gopls/doc/settings.md
index ad2e77f..a69197e 100644
--- a/gopls/doc/settings.md
+++ b/gopls/doc/settings.md
@@ -429,8 +429,9 @@
 * `"Imports"`: In Imports mode, `gopls` will report vulnerabilities that affect packages
 directly and indirectly used by the analyzed main module.
 * `"Off"`: Disable vulnerability analysis.
+* `"Prompt"`: Vulncheck can be triggered via prompt.
 
-Default: `"Off"`.
+Default: `"Prompt"`.
 
 <a id='diagnosticsDelay'></a>
 ### `diagnosticsDelay time.Duration`
diff --git a/gopls/internal/doc/api.json b/gopls/internal/doc/api.json
index 4bb9023..51f3e6b 100644
--- a/gopls/internal/doc/api.json
+++ b/gopls/internal/doc/api.json
@@ -1907,9 +1907,14 @@
 						"Value": "\"Off\"",
 						"Doc": "`\"Off\"`: Disable vulnerability analysis.\n",
 						"Status": ""
+					},
+					{
+						"Value": "\"Prompt\"",
+						"Doc": "`\"Prompt\"`: Vulncheck can be triggered via prompt.\n",
+						"Status": ""
 					}
 				],
-				"Default": "\"Off\"",
+				"Default": "\"Prompt\"",
 				"Status": "experimental",
 				"Hierarchy": "ui.diagnostic",
 				"DeprecationMessage": ""
diff --git a/gopls/internal/settings/default.go b/gopls/internal/settings/default.go
index 532d164..812194e 100644
--- a/gopls/internal/settings/default.go
+++ b/gopls/internal/settings/default.go
@@ -99,7 +99,7 @@
 							Inline: true,
 							Nil:    true,
 						},
-						Vulncheck:                 ModeVulncheckOff,
+						Vulncheck:                 ModeVulncheckPrompt,
 						DiagnosticsDelay:          1 * time.Second,
 						DiagnosticsTrigger:        DiagnosticsOnEdit,
 						AnalysisProgressReporting: true,
diff --git a/gopls/internal/settings/settings.go b/gopls/internal/settings/settings.go
index 055e167..7e57156 100644
--- a/gopls/internal/settings/settings.go
+++ b/gopls/internal/settings/settings.go
@@ -903,6 +903,8 @@
 type VulncheckMode string
 
 const (
+	// Vulncheck can be triggered via prompt.
+	ModeVulncheckPrompt VulncheckMode = "Prompt"
 	// Disable vulnerability analysis.
 	ModeVulncheckOff VulncheckMode = "Off"
 	// In Imports mode, `gopls` will report vulnerabilities that affect packages
@@ -1225,7 +1227,8 @@
 	case "vulncheck":
 		return setEnum(&o.Vulncheck, value,
 			ModeVulncheckOff,
-			ModeVulncheckImports)
+			ModeVulncheckImports,
+			ModeVulncheckPrompt)
 
 	case "codelenses", "codelens":
 		lensOverrides, err := asBoolMap[CodeLensSource](value)
diff --git a/gopls/internal/settings/settings_test.go b/gopls/internal/settings/settings_test.go
index d7a032e..b433f70 100644
--- a/gopls/internal/settings/settings_test.go
+++ b/gopls/internal/settings/settings_test.go
@@ -213,6 +213,13 @@
 				return o.Vulncheck == ModeVulncheckImports
 			},
 		},
+		{
+			name:  "vulncheck",
+			value: "Prompt",
+			check: func(o Options) bool {
+				return o.Vulncheck == ModeVulncheckPrompt
+			},
+		},
 	}
 
 	for _, test := range tests {