{"record":{"id":"1e308a5b27972bed","repo":"jesseduffield/lazygit","slug":"git-diffrenderers-unknown-type-s-allowed-valu","errorCode":null,"errorMessage":"git.diffRenderers: unknown type '%s'. Allowed values: stdinFilter, extDiff, rawGit","messagePattern":"git\\.diffRenderers: unknown type '(.+?)'\\. Allowed values: stdinFilter, extDiff, rawGit","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/config/user_config_validation.go","lineNumber":132,"sourceCode":"\tfor _, diffRenderer := range diffRenderers {\n\t\tswitch diffRenderer.Type {\n\t\tcase \"stdinFilter\", \"\":\n\t\t\tif diffRenderer.Command == \"\" {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'command' must be specified for diff renderer type 'stdinFilter'.\")\n\t\t\t}\n\t\t\tif len(diffRenderer.Args) > 0 {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'args' cannot be used with diff renderer type 'stdinFilter'.\")\n\t\t\t}\n\t\tcase \"extDiff\":\n\t\t\tif len(diffRenderer.Args) > 0 {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'args' cannot be used with diff renderer type 'extDiff'.\")\n\t\t\t}\n\t\tcase \"rawGit\":\n\t\t\tif diffRenderer.Command != \"\" {\n\t\t\t\treturn errors.New(\"git.diffRenderers: 'command' cannot be used with diff renderer type 'rawGit'.\")\n\t\t\t}\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"git.diffRenderers: unknown type '%s'. Allowed values: stdinFilter, extDiff, rawGit\", diffRenderer.Type)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc validateEnum(name string, value string, allowedValues []string) error {\n\tif slices.Contains(allowedValues, value) {\n\t\treturn nil\n\t}\n\tallowedValuesStr := strings.Join(allowedValues, \", \")\n\treturn fmt.Errorf(\"Unexpected value '%s' for '%s'. Allowed values: %s\", value, name, allowedValuesStr)\n}\n\nfunc validateKeybindingsRecurse(path string, node any) error {\n\tvalue := reflect.ValueOf(node)\n\tif value.Kind() == reflect.Struct {\n\t\tfor _, field := range reflect.VisibleFields(reflect.TypeOf(node)) {\n\t\t\tvar newPath string","sourceCodeStart":114,"sourceCodeEnd":150,"githubUrl":"https://github.com/jesseduffield/lazygit/blob/c477a2959b229fbf3284be0d4d2904ab61ec3c94/pkg/config/user_config_validation.go#L114-L150","documentation":"Raised by the diff-renderer validation in pkg/config/user_config_validation.go. Each entry in git.diffRenderers must declare one of the exact types 'stdinFilter', 'extDiff' or 'rawGit' (enforced by a switch whose default branch throws); each type also has field constraints ('args' forbidden for stdinFilter/extDiff, 'command' forbidden for rawGit).","triggerScenarios":"Setting git.diffRenderers[i].type to anything other than stdinFilter/extDiff/rawGit — a typo like 'extDiff ' with trailing space, 'external', or a type from older docs — during config validation at startup.","commonSituations":"Migrating from the older git.paging.externalDiffPage config to the diffRenderers schema and guessing the type name; trailing whitespace or casing mistakes; configs written against a different lazygit version.","solutions":["Set type to exactly one of: stdinFilter, extDiff, rawGit.","Also satisfy the per-type constraints: no 'args' with stdinFilter/extDiff, no 'command' with rawGit.","Trim whitespace and check casing — the switch is case-sensitive.","Restart lazygit to re-run validation."],"exampleFix":"# before\ngit:\n  diffRenderers:\n    - type: externalDiff\n      command: delta\n\n# after\ngit:\n  diffRenderers:\n    - type: extDiff\n      command: delta","handlingStrategy":"validation","validationCode":"allowed := map[string]bool{\"stdinFilter\": true, \"extDiff\": true, \"rawGit\": true}\nfor _, dr := range cfg.Git.DiffRenderers {\n\tif !allowed[dr.Type] {\n\t\treturn fmt.Errorf(\"bad diff renderer type %q\", dr.Type)\n\t}\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Use the exact literals stdinFilter/extDiff/rawGit; the switch is case- and whitespace-sensitive.","Respect per-type constraints: no args with stdinFilter/extDiff, no command with rawGit."],"tags":["config","git","diff-renderers","enum"],"backgroundTag":null,"analyzedSha":"c477a2959b229fbf3284be0d4d2904ab61ec3c94","analyzedAt":"2026-08-15T08:34:32.451Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}