gopls/internal/protocol: generate sorted methods

Change-Id: I234ee6c8a84d9fc71cc8a68e1ef7b283514f5524
Reviewed-on: https://go-review.googlesource.com/c/tools/+/735580
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
diff --git a/gopls/internal/protocol/command/command_gen.go b/gopls/internal/protocol/command/command_gen.go
index dbe47db..ed03c12 100644
--- a/gopls/internal/protocol/command/command_gen.go
+++ b/gopls/internal/protocol/command/command_gen.go
@@ -42,9 +42,9 @@
 	GCDetails               Command = "gopls.gc_details"
 	Generate                Command = "gopls.generate"
 	GoGetPackage            Command = "gopls.go_get_package"
-	LSP                     Command = "gopls.lsp"
 	ListImports             Command = "gopls.list_imports"
 	ListKnownPackages       Command = "gopls.list_known_packages"
+	LSP                     Command = "gopls.lsp"
 	MaybePromptForTelemetry Command = "gopls.maybe_prompt_for_telemetry"
 	MemStats                Command = "gopls.mem_stats"
 	ModifyTags              Command = "gopls.modify_tags"
@@ -91,9 +91,9 @@
 	GCDetails,
 	Generate,
 	GoGetPackage,
-	LSP,
 	ListImports,
 	ListKnownPackages,
+	LSP,
 	MaybePromptForTelemetry,
 	MemStats,
 	ModifyTags,
@@ -234,12 +234,6 @@
 			return nil, err
 		}
 		return nil, s.GoGetPackage(ctx, a0)
-	case LSP:
-		var a0 LSPArgs
-		if err := UnmarshalArgs(params.Arguments, &a0); err != nil {
-			return nil, err
-		}
-		return s.LSP(ctx, a0)
 	case ListImports:
 		var a0 URIArg
 		if err := UnmarshalArgs(params.Arguments, &a0); err != nil {
@@ -252,6 +246,12 @@
 			return nil, err
 		}
 		return s.ListKnownPackages(ctx, a0)
+	case LSP:
+		var a0 LSPArgs
+		if err := UnmarshalArgs(params.Arguments, &a0); err != nil {
+			return nil, err
+		}
+		return s.LSP(ctx, a0)
 	case MaybePromptForTelemetry:
 		return nil, s.MaybePromptForTelemetry(ctx)
 	case MemStats:
@@ -531,14 +531,6 @@
 	}
 }
 
-func NewLSPCommand(title string, a0 LSPArgs) *protocol.Command {
-	return &protocol.Command{
-		Title:     title,
-		Command:   LSP.String(),
-		Arguments: MustMarshalArgs(a0),
-	}
-}
-
 func NewListImportsCommand(title string, a0 URIArg) *protocol.Command {
 	return &protocol.Command{
 		Title:     title,
@@ -555,6 +547,14 @@
 	}
 }
 
+func NewLSPCommand(title string, a0 LSPArgs) *protocol.Command {
+	return &protocol.Command{
+		Title:     title,
+		Command:   LSP.String(),
+		Arguments: MustMarshalArgs(a0),
+	}
+}
+
 func NewMaybePromptForTelemetryCommand(title string) *protocol.Command {
 	return &protocol.Command{
 		Title:     title,
diff --git a/gopls/internal/protocol/command/commandmeta/meta.go b/gopls/internal/protocol/command/commandmeta/meta.go
index 50db7a2..6a0888c 100644
--- a/gopls/internal/protocol/command/commandmeta/meta.go
+++ b/gopls/internal/protocol/command/commandmeta/meta.go
@@ -15,6 +15,7 @@
 	"go/token"
 	"go/types"
 	"reflect"
+	"slices"
 	"strings"
 	"unicode"
 
@@ -75,6 +76,11 @@
 		}
 		commands = append(commands, c)
 	}
+
+	// Sort commands for deterministic results.
+	slices.SortFunc(commands, func(a, b *Command) int {
+		return strings.Compare(a.Name, b.Name)
+	})
 	return commands, nil
 }