 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
      Index ¶
- Variables
- func ConfigDir() string
- func GetEditAtLineAndWaitTemplate(osConfig *OSConfig, guessDefaultEditor func() string) string
- func GetEditAtLineTemplate(osConfig *OSConfig, guessDefaultEditor func() string) (string, bool)
- func GetEditTemplate(osConfig *OSConfig, guessDefaultEditor func() string) (string, bool)
- func GetOpenDirInEditorTemplate(osConfig *OSConfig, guessDefaultEditor func() string) (string, bool)
- func LogPath() (string, error)
- type AppConfig
- func (c *AppConfig) GetAppState() *AppState
- func (c *AppConfig) GetBuildSource() string
- func (c *AppConfig) GetDebug() bool
- func (c *AppConfig) GetName() string
- func (c *AppConfig) GetTempDir() string
- func (c *AppConfig) GetUserConfig() *UserConfig
- func (c *AppConfig) GetUserConfigDir() string
- func (c *AppConfig) GetUserConfigPaths() []string
- func (c *AppConfig) GetVersion() string
- func (c *AppConfig) ReloadChangedUserConfigFiles() (error, bool)
- func (c *AppConfig) ReloadUserConfigForRepo(repoConfigFiles []*ConfigFile) error
- func (c *AppConfig) SaveAppState() error
- func (c *AppConfig) SaveGlobalUserConfig()
 
- type AppConfigurer
- type AppState
- type CommitConfig
- type CommitLengthConfig
- type CommitPrefixConfig
- type ConfigFile
- type ConfigFilePolicy
- type CustomCommand
- type CustomCommandAfterHook
- type CustomCommandMenuOption
- type CustomCommandPrompt
- type CustomCommandSuggestions
- type GitConfig
- type GuiConfig
- type KeybindingAmendAttributeConfig
- type KeybindingBranchesConfig
- type KeybindingCommitFilesConfig
- type KeybindingCommitMessageConfig
- type KeybindingCommitsConfig
- type KeybindingConfig
- type KeybindingFilesConfig
- type KeybindingMainConfig
- type KeybindingStashConfig
- type KeybindingStatusConfig
- type KeybindingSubmodulesConfig
- type KeybindingUniversalConfig
- type KeybindingWorktreesConfig
- type LogConfig
- type MergingConfig
- type OSConfig
- type PagerType
- type PagingConfig
- type RefresherConfig
- type SpinnerConfig
- type ThemeConfig
- type UpdateConfig
- type UserConfig
Constants ¶
This section is empty.
Variables ¶
var ConfigFilename = "config.yml"
    var KeyByLabel = lo.Invert(LabelByKey)
    var LabelByKey = map[gocui.Key]string{ gocui.KeyF1: "<f1>", gocui.KeyF2: "<f2>", gocui.KeyF3: "<f3>", gocui.KeyF4: "<f4>", gocui.KeyF5: "<f5>", gocui.KeyF6: "<f6>", gocui.KeyF7: "<f7>", gocui.KeyF8: "<f8>", gocui.KeyF9: "<f9>", gocui.KeyF10: "<f10>", gocui.KeyF11: "<f11>", gocui.KeyF12: "<f12>", gocui.KeyInsert: "<insert>", gocui.KeyDelete: "<delete>", gocui.KeyHome: "<home>", gocui.KeyEnd: "<end>", gocui.KeyPgup: "<pgup>", gocui.KeyPgdn: "<pgdown>", gocui.KeyArrowUp: "<up>", gocui.KeyShiftArrowUp: "<s-up>", gocui.KeyArrowDown: "<down>", gocui.KeyShiftArrowDown: "<s-down>", gocui.KeyArrowLeft: "<left>", gocui.KeyArrowRight: "<right>", gocui.KeyTab: "<tab>", gocui.KeyBacktab: "<backtab>", gocui.KeyEnter: "<enter>", gocui.KeyAltEnter: "<a-enter>", gocui.KeyEsc: "<esc>", gocui.KeyBackspace: "<backspace>", gocui.KeyCtrlSpace: "<c-space>", gocui.KeyCtrlSlash: "<c-/>", gocui.KeySpace: "<space>", gocui.KeyCtrlA: "<c-a>", gocui.KeyCtrlB: "<c-b>", gocui.KeyCtrlC: "<c-c>", gocui.KeyCtrlD: "<c-d>", gocui.KeyCtrlE: "<c-e>", gocui.KeyCtrlF: "<c-f>", gocui.KeyCtrlG: "<c-g>", gocui.KeyCtrlJ: "<c-j>", gocui.KeyCtrlK: "<c-k>", gocui.KeyCtrlL: "<c-l>", gocui.KeyCtrlN: "<c-n>", gocui.KeyCtrlO: "<c-o>", gocui.KeyCtrlP: "<c-p>", gocui.KeyCtrlQ: "<c-q>", gocui.KeyCtrlR: "<c-r>", gocui.KeyCtrlS: "<c-s>", gocui.KeyCtrlT: "<c-t>", gocui.KeyCtrlU: "<c-u>", gocui.KeyCtrlV: "<c-v>", gocui.KeyCtrlW: "<c-w>", gocui.KeyCtrlX: "<c-x>", gocui.KeyCtrlY: "<c-y>", gocui.KeyCtrlZ: "<c-z>", gocui.KeyCtrl4: "<c-4>", gocui.KeyCtrl5: "<c-5>", gocui.KeyCtrl6: "<c-6>", gocui.KeyCtrl8: "<c-8>", gocui.MouseWheelUp: "mouse wheel up", gocui.MouseWheelDown: "mouse wheel down", }
Functions ¶
func GetEditAtLineAndWaitTemplate ¶ added in v0.38.0
func GetEditAtLineTemplate ¶ added in v0.38.0
func GetEditTemplate ¶ added in v0.38.0
func GetOpenDirInEditorTemplate ¶ added in v0.40.0
Types ¶
type AppConfig ¶
type AppConfig struct {
	// contains filtered or unexported fields
}
    AppConfig contains the base configuration fields required for lazygit.
func NewAppConfig ¶ added in v0.1.65
func NewAppConfig( name string, version, commit, date string, buildSource string, debuggingFlag bool, tempDir string, ) (*AppConfig, error)
NewAppConfig makes a new app config
func NewDummyAppConfig ¶ added in v0.23.1
func NewDummyAppConfig() *AppConfig
NewDummyAppConfig creates a new dummy AppConfig for testing
func (*AppConfig) GetAppState ¶ added in v0.2.0
GetAppState returns the app state
func (*AppConfig) GetBuildSource ¶ added in v0.2.0
GetBuildSource returns the source of the build. For builds from goreleaser this will be binaryBuild
func (*AppConfig) GetTempDir ¶ added in v0.30.1
func (*AppConfig) GetUserConfig ¶ added in v0.1.65
func (c *AppConfig) GetUserConfig() *UserConfig
GetUserConfig returns the user config
func (*AppConfig) GetUserConfigDir ¶ added in v0.10.1
func (*AppConfig) GetUserConfigPaths ¶ added in v0.30.1
func (*AppConfig) GetVersion ¶
func (*AppConfig) ReloadChangedUserConfigFiles ¶ added in v0.44.0
func (*AppConfig) ReloadUserConfigForRepo ¶ added in v0.44.0
func (c *AppConfig) ReloadUserConfigForRepo(repoConfigFiles []*ConfigFile) error
func (*AppConfig) SaveAppState ¶ added in v0.2.0
SaveAppState marshalls the AppState struct and writes it to the disk
func (*AppConfig) SaveGlobalUserConfig ¶ added in v0.44.0
func (c *AppConfig) SaveGlobalUserConfig()
SaveGlobalUserConfig saves the UserConfig back to disk. This is only used in integration tests, so we are a bit sloppy with error handling.
type AppConfigurer ¶
type AppConfigurer interface {
	GetDebug() bool
	// build info
	GetVersion() string
	GetName() string
	GetBuildSource() string
	GetUserConfig() *UserConfig
	GetUserConfigPaths() []string
	GetUserConfigDir() string
	ReloadUserConfigForRepo(repoConfigFiles []*ConfigFile) error
	ReloadChangedUserConfigFiles() (error, bool)
	GetTempDir() string
	GetAppState() *AppState
	SaveAppState() error
}
    type AppState ¶ added in v0.2.0
type AppState struct {
	LastUpdateCheck     int64
	RecentRepos         []string
	StartupPopupVersion int
	LastVersion         string // this is the last version the user was using, for the purpose of showing release notes
	// these are for shell commands typed in directly, not for custom commands in the lazygit config.
	// For backwards compatibility we keep the old name in yaml files.
	ShellCommandsHistory []string `yaml:"customcommandshistory"`
	HideCommandLog             bool
	IgnoreWhitespaceInDiffView bool
	DiffContextSize            uint64
	RenameSimilarityThreshold  int
	LocalBranchSortOrder       string
	RemoteBranchSortOrder      string
	// One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default'
	// 'topo-order' makes it easier to read the git log graph, but commits may not
	// appear chronologically. See https://git-scm.com/docs/
	GitLogOrder string
	// This determines whether the git graph is rendered in the commits panel
	// One of 'always' | 'never' | 'when-maximised'
	GitLogShowGraph string
}
    AppState stores data between runs of the app like when the last update check was performed and which other repos have been checked out
type CommitConfig ¶ added in v0.32.1
type CommitConfig struct {
	// If true, pass '--signoff' flag when committing
	SignOff bool `yaml:"signOff"`
	// Automatic WYSIWYG wrapping of the commit message as you type
	AutoWrapCommitMessage bool `yaml:"autoWrapCommitMessage"`
	// If autoWrapCommitMessage is true, the width to wrap to
	AutoWrapWidth int `yaml:"autoWrapWidth"`
}
    type CommitLengthConfig ¶ added in v0.23.1
type CommitLengthConfig struct {
	// If true, show an indicator of commit message length
	Show bool `yaml:"show"`
}
    type CommitPrefixConfig ¶ added in v0.23.1
type CommitPrefixConfig struct {
	// pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*"
	Pattern string `yaml:"pattern" jsonschema:"example=^\\w+\\/(\\w+-\\w+).*"`
	// Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] "
	Replace string `yaml:"replace" jsonschema:"example=[$1]"`
}
    type ConfigFile ¶ added in v0.44.0
type ConfigFile struct {
	Path   string
	Policy ConfigFilePolicy
	// contains filtered or unexported fields
}
    type ConfigFilePolicy ¶ added in v0.44.0
type ConfigFilePolicy int
const ( ConfigFilePolicyCreateIfMissing ConfigFilePolicy = iota ConfigFilePolicyErrorIfMissing ConfigFilePolicySkipIfMissing )
type CustomCommand ¶ added in v0.23.1
type CustomCommand struct {
	// The key to trigger the command. Use a single letter or one of the values from https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings/Custom_Keybindings.md
	Key string `yaml:"key"`
	// The context in which to listen for the key. Valid values are: status, files, worktrees, localBranches, remotes, remoteBranches, tags, commits, reflogCommits, subCommits, commitFiles, stash, and global. Multiple contexts separated by comma are allowed; most useful for "commits, subCommits" or "files, commitFiles".
	Context string `` /* 254-byte string literal not displayed */
	// The command to run (using Go template syntax for placeholder values)
	Command string `yaml:"command" jsonschema:"example=git fetch {{.Form.Remote}} {{.Form.Branch}} && git checkout FETCH_HEAD"`
	// If true, run the command in a subprocess (e.g. if the command requires user input)
	Subprocess bool `yaml:"subprocess"`
	// A list of prompts that will request user input before running the final command
	Prompts []CustomCommandPrompt `yaml:"prompts"`
	// Text to display while waiting for command to finish
	LoadingText string `yaml:"loadingText" jsonschema:"example=Loading..."`
	// Label for the custom command when displayed in the keybindings menu
	Description string `yaml:"description"`
	// If true, stream the command's output to the Command Log panel
	Stream bool `yaml:"stream"`
	// If true, show the command's output in a popup within Lazygit
	ShowOutput bool `yaml:"showOutput"`
	// The title to display in the popup panel if showOutput is true. If left unset, the command will be used as the title.
	OutputTitle string `yaml:"outputTitle"`
	// Actions to take after the command has completed
	After CustomCommandAfterHook `yaml:"after"`
}
    type CustomCommandAfterHook ¶ added in v0.39.0
type CustomCommandAfterHook struct {
	CheckForConflicts bool `yaml:"checkForConflicts"`
}
    type CustomCommandMenuOption ¶ added in v0.23.1
type CustomCommandPrompt ¶ added in v0.23.1
type CustomCommandPrompt struct {
	// One of: 'input' | 'menu' | 'confirm' | 'menuFromCommand'
	Type string `yaml:"type"`
	// Used to reference the entered value from within the custom command. E.g. a prompt with `key: 'Branch'` can be referred to as `{{.Form.Branch}}` in the command
	Key string `yaml:"key"`
	// The title to display in the popup panel
	Title string `yaml:"title"`
	// The initial value to appear in the text box.
	// Only for input prompts.
	InitialValue string `yaml:"initialValue"`
	// Shows suggestions as the input is entered
	// Only for input prompts.
	Suggestions CustomCommandSuggestions `yaml:"suggestions"`
	// The message of the confirmation prompt.
	// Only for confirm prompts.
	Body string `yaml:"body" jsonschema:"example=Are you sure you want to push to the remote?"`
	// Menu options.
	// Only for menu prompts.
	Options []CustomCommandMenuOption `yaml:"options"`
	// The command to run to generate menu options
	// Only for menuFromCommand prompts.
	Command string `yaml:"command" jsonschema:"example=git fetch {{.Form.Remote}} {{.Form.Branch}} && git checkout FETCH_HEAD"`
	// The regexp to run specifying groups which are going to be kept from the command's output.
	// Only for menuFromCommand prompts.
	Filter string `yaml:"filter" jsonschema:"example=.*{{.SelectedRemote.Name }}/(?P<branch>.*)"`
	// How to format matched groups from the filter to construct a menu item's value.
	// Only for menuFromCommand prompts.
	ValueFormat string `yaml:"valueFormat" jsonschema:"example={{ .branch }}"`
	// Like valueFormat but for the labels. If `labelFormat` is not specified, `valueFormat` is shown instead.
	// Only for menuFromCommand prompts.
	LabelFormat string `yaml:"labelFormat" jsonschema:"example={{ .branch | green }}"`
}
    type CustomCommandSuggestions ¶ added in v0.39.0
type CustomCommandSuggestions struct {
	// Uses built-in logic to obtain the suggestions. One of 'authors' | 'branches' | 'files' | 'refs' | 'remotes' | 'remoteBranches' | 'tags'
	Preset string `yaml:"preset" jsonschema:"enum=authors,enum=branches,enum=files,enum=refs,enum=remotes,enum=remoteBranches,enum=tags"`
	// Command to run such that each line in the output becomes a suggestion. Mutually exclusive with 'preset' field.
	Command string `yaml:"command" jsonschema:"example=git fetch {{.Form.Remote}} {{.Form.Branch}} && git checkout FETCH_HEAD"`
}
    type GitConfig ¶ added in v0.23.1
type GitConfig struct {
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
	Paging PagingConfig `yaml:"paging"`
	// Config relating to committing
	Commit CommitConfig `yaml:"commit"`
	// Config relating to merging
	Merging MergingConfig `yaml:"merging"`
	// list of branches that are considered 'main' branches, used when displaying commits
	MainBranches []string `yaml:"mainBranches" jsonschema:"uniqueItems=true"`
	// Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP'
	SkipHookPrefix string `yaml:"skipHookPrefix"`
	// If true, periodically fetch from remote
	AutoFetch bool `yaml:"autoFetch"`
	// If true, periodically refresh files and submodules
	AutoRefresh bool `yaml:"autoRefresh"`
	// If true, pass the --all arg to git fetch
	FetchAll bool `yaml:"fetchAll"`
	// If true, lazygit will automatically stage files that used to have merge
	// conflicts but no longer do; and it will also ask you if you want to
	// continue a merge or rebase if you've resolved all conflicts. If false, it
	// won't do either of these things.
	AutoStageResolvedConflicts bool `yaml:"autoStageResolvedConflicts"`
	// Command used when displaying the current branch git log in the main window
	BranchLogCmd string `yaml:"branchLogCmd"`
	// Command used to display git log of all branches in the main window.
	// Deprecated: Use `allBranchesLogCmds` instead.
	AllBranchesLogCmd string `yaml:"allBranchesLogCmd"`
	// Commands used to display git log of all branches in the main window, they will be cycled in order of appearance
	AllBranchesLogCmds []string `yaml:"allBranchesLogCmds"`
	// If true, do not spawn a separate process when using GPG
	OverrideGpg bool `yaml:"overrideGpg"`
	// If true, do not allow force pushes
	DisableForcePushing bool `yaml:"disableForcePushing"`
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix
	CommitPrefix []CommitPrefixConfig `yaml:"commitPrefix"`
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix
	CommitPrefixes map[string][]CommitPrefixConfig `yaml:"commitPrefixes"`
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix
	BranchPrefix string `yaml:"branchPrefix"`
	// If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀
	// (This should really be under 'gui', not 'git')
	ParseEmoji bool `yaml:"parseEmoji"`
	// Config for showing the log in the commits view
	Log LogConfig `yaml:"log"`
	// When copying commit hashes to the clipboard, truncate them to this
	// length. Set to 40 to disable truncation.
	TruncateCopiedCommitHashesTo int `yaml:"truncateCopiedCommitHashesTo"`
}
    type GuiConfig ¶ added in v0.23.1
type GuiConfig struct {
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-author-color
	AuthorColors map[string]string `yaml:"authorColors"`
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-branch-color
	// Deprecated: use branchColorPatterns instead
	BranchColors map[string]string `yaml:"branchColors"`
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-branch-color
	BranchColorPatterns map[string]string `yaml:"branchColorPatterns"`
	// The number of lines you scroll by when scrolling the main window
	ScrollHeight int `yaml:"scrollHeight" jsonschema:"minimum=1"`
	// If true, allow scrolling past the bottom of the content in the main window
	ScrollPastBottom bool `yaml:"scrollPastBottom"`
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin
	ScrollOffMargin int `yaml:"scrollOffMargin"`
	// One of: 'margin' (default) | 'jump'
	ScrollOffBehavior string `yaml:"scrollOffBehavior"`
	// The number of spaces per tab; used for everything that's shown in the main view, but probably mostly relevant for diffs.
	// Note that when using a pager, the pager has its own tab width setting, so you need to pass it separately in the pager command.
	TabWidth int `yaml:"tabWidth" jsonschema:"minimum=1"`
	// If true, capture mouse events.
	// When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS.
	MouseEvents bool `yaml:"mouseEvents"`
	// If true, do not show a warning when discarding changes in the staging view.
	SkipDiscardChangeWarning bool `yaml:"skipDiscardChangeWarning"`
	// If true, do not show warning when applying/popping the stash
	SkipStashWarning bool `yaml:"skipStashWarning"`
	// If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files.
	SkipNoStagedFilesWarning bool `yaml:"skipNoStagedFilesWarning"`
	// If true, do not show a warning when rewording a commit via an external editor
	SkipRewordInEditorWarning bool `yaml:"skipRewordInEditorWarning"`
	// Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section.
	// Number from 0 to 1.0.
	SidePanelWidth float64 `yaml:"sidePanelWidth" jsonschema:"maximum=1,minimum=0"`
	// If true, increase the height of the focused side window; creating an accordion effect.
	ExpandFocusedSidePanel bool `yaml:"expandFocusedSidePanel"`
	// The weight of the expanded side panel, relative to the other panels. 2 means
	// twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true.
	ExpandedSidePanelWeight int `yaml:"expandedSidePanelWeight"`
	// Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split.
	// Options are:
	// - 'horizontal': split the window horizontally
	// - 'vertical': split the window vertically
	// - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically
	MainPanelSplitMode string `yaml:"mainPanelSplitMode" jsonschema:"enum=horizontal,enum=flexible,enum=vertical"`
	// How the window is split when in half screen mode (i.e. after hitting '+' once).
	// Possible values:
	// - 'left': split the window horizontally (side panel on the left, main view on the right)
	// - 'top': split the window vertically (side panel on top, main view below)
	EnlargedSideViewLocation string `yaml:"enlargedSideViewLocation"`
	// If true, wrap lines in the staging view to the width of the view. This
	// makes it much easier to work with diffs that have long lines, e.g.
	// paragraphs of markdown text.
	WrapLinesInStagingView bool `yaml:"wrapLinesInStagingView"`
	// One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru'
	Language string `yaml:"language" jsonschema:"enum=auto,enum=en,enum=zh-TW,enum=zh-CN,enum=pl,enum=nl,enum=ja,enum=ko,enum=ru"`
	// Format used when displaying time e.g. commit time.
	// Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
	TimeFormat string `yaml:"timeFormat"`
	// Format used when displaying time if the time is less than 24 hours ago.
	// Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
	ShortTimeFormat string `yaml:"shortTimeFormat"`
	// Config relating to colors and styles.
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes
	Theme ThemeConfig `yaml:"theme"`
	// Config relating to the commit length indicator
	CommitLength CommitLengthConfig `yaml:"commitLength"`
	ShowListFooter bool `yaml:"showListFooter"`
	// If true, display the files in the file views as a tree. If false, display the files as a flat list.
	// This can be toggled from within Lazygit with the '`' key, but that will not change the default.
	ShowFileTree bool `yaml:"showFileTree"`
	// If true, show the number of lines changed per file in the Files view
	ShowNumstatInFilesView bool `yaml:"showNumstatInFilesView"`
	// If true, show a random tip in the command log when Lazygit starts
	ShowRandomTip bool `yaml:"showRandomTip"`
	// If true, show the command log
	ShowCommandLog bool `yaml:"showCommandLog"`
	// If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action.
	ShowBottomLine bool `yaml:"showBottomLine"`
	// If true, show jump-to-window keybindings in window titles.
	ShowPanelJumps bool `yaml:"showPanelJumps"`
	// Deprecated: use nerdFontsVersion instead
	ShowIcons bool `yaml:"showIcons"`
	// Nerd fonts version to use.
	// One of: '2' | '3' | empty string (default)
	// If empty, do not show icons.
	NerdFontsVersion string `yaml:"nerdFontsVersion" jsonschema:"enum=2,enum=3,enum="`
	// If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.
	ShowFileIcons bool `yaml:"showFileIcons"`
	// Length of author name in (non-expanded) commits view. 2 means show initials only.
	CommitAuthorShortLength int `yaml:"commitAuthorShortLength"`
	// Length of author name in expanded commits view. 2 means show initials only.
	CommitAuthorLongLength int `yaml:"commitAuthorLongLength"`
	// Length of commit hash in commits view. 0 shows '*' if NF icons aren't on.
	CommitHashLength int `yaml:"commitHashLength" jsonschema:"minimum=0"`
	// If true, show commit hashes alongside branch names in the branches view.
	ShowBranchCommitHash bool `yaml:"showBranchCommitHash"`
	// Whether to show the divergence from the base branch in the branches view.
	// One of: 'none' | 'onlyArrow'  | 'arrowAndNumber'
	ShowDivergenceFromBaseBranch string `yaml:"showDivergenceFromBaseBranch" jsonschema:"enum=none,enum=onlyArrow,enum=arrowAndNumber"`
	// Height of the command log view
	CommandLogSize int `yaml:"commandLogSize" jsonschema:"minimum=0"`
	// Whether to split the main window when viewing file changes.
	// One of: 'auto' | 'always'
	// If 'auto', only split the main window when a file has both staged and unstaged changes
	SplitDiff string `yaml:"splitDiff" jsonschema:"enum=auto,enum=always"`
	// Default size for focused window. Can be changed from within Lazygit with '+' and '_' (but this won't change the default).
	// One of: 'normal' (default) | 'half' | 'full'
	ScreenMode string `yaml:"screenMode" jsonschema:"enum=normal,enum=half,enum=full"`
	// Window border style.
	// One of 'rounded' (default) | 'single' | 'double' | 'hidden'
	Border string `yaml:"border" jsonschema:"enum=single,enum=double,enum=rounded,enum=hidden"`
	// If true, show a seriously epic explosion animation when nuking the working tree.
	AnimateExplosion bool `yaml:"animateExplosion"`
	// Whether to stack UI components on top of each other.
	// One of 'auto' (default) | 'always' | 'never'
	PortraitMode string `yaml:"portraitMode"`
	// How things are filtered when typing '/'.
	// One of 'substring' (default) | 'fuzzy'
	FilterMode string `yaml:"filterMode" jsonschema:"enum=substring,enum=fuzzy"`
	// Config relating to the spinner.
	Spinner SpinnerConfig `yaml:"spinner"`
	// Status panel view.
	// One of 'dashboard' (default) | 'allBranchesLog'
	StatusPanelView string `yaml:"statusPanelView" jsonschema:"enum=dashboard,enum=allBranchesLog"`
	// If true, jump to the Files panel after popping a stash
	SwitchToFilesAfterStashPop bool `yaml:"switchToFilesAfterStashPop"`
	// If true, jump to the Files panel after applying a stash
	SwitchToFilesAfterStashApply bool `yaml:"switchToFilesAfterStashApply"`
	// If true, when using the panel jump keys (default 1 through 5) and target panel is already active, go to next tab instead
	SwitchTabsWithPanelJumpKeys bool `yaml:"switchTabsWithPanelJumpKeys"`
}
    func (*GuiConfig) UseFuzzySearch ¶ added in v0.41.0
type KeybindingAmendAttributeConfig ¶ added in v0.41.0
type KeybindingBranchesConfig ¶ added in v0.23.1
type KeybindingBranchesConfig struct {
	CreatePullRequest      string `yaml:"createPullRequest"`
	ViewPullRequestOptions string `yaml:"viewPullRequestOptions"`
	CopyPullRequestURL     string `yaml:"copyPullRequestURL"`
	CheckoutBranchByName   string `yaml:"checkoutBranchByName"`
	ForceCheckoutBranch    string `yaml:"forceCheckoutBranch"`
	RebaseBranch           string `yaml:"rebaseBranch"`
	RenameBranch           string `yaml:"renameBranch"`
	MergeIntoCurrentBranch string `yaml:"mergeIntoCurrentBranch"`
	ViewGitFlowOptions     string `yaml:"viewGitFlowOptions"`
	FastForward            string `yaml:"fastForward"`
	CreateTag              string `yaml:"createTag"`
	PushTag                string `yaml:"pushTag"`
	SetUpstream            string `yaml:"setUpstream"`
	FetchRemote            string `yaml:"fetchRemote"`
	SortOrder              string `yaml:"sortOrder"`
}
    type KeybindingCommitFilesConfig ¶ added in v0.23.1
type KeybindingCommitFilesConfig struct {
	CheckoutCommitFile string `yaml:"checkoutCommitFile"`
}
    type KeybindingCommitMessageConfig ¶ added in v0.41.0
type KeybindingCommitMessageConfig struct {
	CommitMenu string `yaml:"commitMenu"`
}
    type KeybindingCommitsConfig ¶ added in v0.23.1
type KeybindingCommitsConfig struct {
	SquashDown                     string `yaml:"squashDown"`
	RenameCommit                   string `yaml:"renameCommit"`
	RenameCommitWithEditor         string `yaml:"renameCommitWithEditor"`
	ViewResetOptions               string `yaml:"viewResetOptions"`
	MarkCommitAsFixup              string `yaml:"markCommitAsFixup"`
	CreateFixupCommit              string `yaml:"createFixupCommit"`
	SquashAboveCommits             string `yaml:"squashAboveCommits"`
	MoveDownCommit                 string `yaml:"moveDownCommit"`
	MoveUpCommit                   string `yaml:"moveUpCommit"`
	AmendToCommit                  string `yaml:"amendToCommit"`
	ResetCommitAuthor              string `yaml:"resetCommitAuthor"`
	PickCommit                     string `yaml:"pickCommit"`
	RevertCommit                   string `yaml:"revertCommit"`
	CherryPickCopy                 string `yaml:"cherryPickCopy"`
	PasteCommits                   string `yaml:"pasteCommits"`
	MarkCommitAsBaseForRebase      string `yaml:"markCommitAsBaseForRebase"`
	CreateTag                      string `yaml:"tagCommit"`
	CheckoutCommit                 string `yaml:"checkoutCommit"`
	ResetCherryPick                string `yaml:"resetCherryPick"`
	CopyCommitAttributeToClipboard string `yaml:"copyCommitAttributeToClipboard"`
	OpenLogMenu                    string `yaml:"openLogMenu"`
	OpenInBrowser                  string `yaml:"openInBrowser"`
	ViewBisectOptions              string `yaml:"viewBisectOptions"`
	StartInteractiveRebase         string `yaml:"startInteractiveRebase"`
}
    type KeybindingConfig ¶ added in v0.23.1
type KeybindingConfig struct {
	Universal      KeybindingUniversalConfig      `yaml:"universal"`
	Status         KeybindingStatusConfig         `yaml:"status"`
	Files          KeybindingFilesConfig          `yaml:"files"`
	Branches       KeybindingBranchesConfig       `yaml:"branches"`
	Worktrees      KeybindingWorktreesConfig      `yaml:"worktrees"`
	Commits        KeybindingCommitsConfig        `yaml:"commits"`
	AmendAttribute KeybindingAmendAttributeConfig `yaml:"amendAttribute"`
	Stash          KeybindingStashConfig          `yaml:"stash"`
	CommitFiles    KeybindingCommitFilesConfig    `yaml:"commitFiles"`
	Main           KeybindingMainConfig           `yaml:"main"`
	Submodules     KeybindingSubmodulesConfig     `yaml:"submodules"`
	CommitMessage  KeybindingCommitMessageConfig  `yaml:"commitMessage"`
}
    type KeybindingFilesConfig ¶ added in v0.23.1
type KeybindingFilesConfig struct {
	CommitChanges            string `yaml:"commitChanges"`
	CommitChangesWithoutHook string `yaml:"commitChangesWithoutHook"`
	AmendLastCommit          string `yaml:"amendLastCommit"`
	CommitChangesWithEditor  string `yaml:"commitChangesWithEditor"`
	FindBaseCommitForFixup   string `yaml:"findBaseCommitForFixup"`
	ConfirmDiscard           string `yaml:"confirmDiscard"`
	IgnoreFile               string `yaml:"ignoreFile"`
	RefreshFiles             string `yaml:"refreshFiles"`
	StashAllChanges          string `yaml:"stashAllChanges"`
	ViewStashOptions         string `yaml:"viewStashOptions"`
	ToggleStagedAll          string `yaml:"toggleStagedAll"`
	ViewResetOptions         string `yaml:"viewResetOptions"`
	Fetch                    string `yaml:"fetch"`
	ToggleTreeView           string `yaml:"toggleTreeView"`
	OpenMergeTool            string `yaml:"openMergeTool"`
	OpenStatusFilter         string `yaml:"openStatusFilter"`
	CopyFileInfoToClipboard  string `yaml:"copyFileInfoToClipboard"`
	CollapseAll              string `yaml:"collapseAll"`
	ExpandAll                string `yaml:"expandAll"`
}
    type KeybindingMainConfig ¶ added in v0.23.1
type KeybindingStashConfig ¶ added in v0.23.1
type KeybindingStatusConfig ¶ added in v0.23.1
type KeybindingSubmodulesConfig ¶ added in v0.23.1
type KeybindingUniversalConfig ¶ added in v0.23.1
type KeybindingUniversalConfig struct {
	Quit                              string   `yaml:"quit"`
	QuitAlt1                          string   `yaml:"quit-alt1"`
	Return                            string   `yaml:"return"`
	QuitWithoutChangingDirectory      string   `yaml:"quitWithoutChangingDirectory"`
	TogglePanel                       string   `yaml:"togglePanel"`
	PrevItem                          string   `yaml:"prevItem"`
	NextItem                          string   `yaml:"nextItem"`
	PrevItemAlt                       string   `yaml:"prevItem-alt"`
	NextItemAlt                       string   `yaml:"nextItem-alt"`
	PrevPage                          string   `yaml:"prevPage"`
	NextPage                          string   `yaml:"nextPage"`
	ScrollLeft                        string   `yaml:"scrollLeft"`
	ScrollRight                       string   `yaml:"scrollRight"`
	GotoTop                           string   `yaml:"gotoTop"`
	GotoBottom                        string   `yaml:"gotoBottom"`
	ToggleRangeSelect                 string   `yaml:"toggleRangeSelect"`
	RangeSelectDown                   string   `yaml:"rangeSelectDown"`
	RangeSelectUp                     string   `yaml:"rangeSelectUp"`
	PrevBlock                         string   `yaml:"prevBlock"`
	NextBlock                         string   `yaml:"nextBlock"`
	PrevBlockAlt                      string   `yaml:"prevBlock-alt"`
	NextBlockAlt                      string   `yaml:"nextBlock-alt"`
	NextBlockAlt2                     string   `yaml:"nextBlock-alt2"`
	PrevBlockAlt2                     string   `yaml:"prevBlock-alt2"`
	JumpToBlock                       []string `yaml:"jumpToBlock"`
	NextMatch                         string   `yaml:"nextMatch"`
	PrevMatch                         string   `yaml:"prevMatch"`
	StartSearch                       string   `yaml:"startSearch"`
	OptionMenu                        string   `yaml:"optionMenu"`
	OptionMenuAlt1                    string   `yaml:"optionMenu-alt1"`
	Select                            string   `yaml:"select"`
	GoInto                            string   `yaml:"goInto"`
	Confirm                           string   `yaml:"confirm"`
	ConfirmInEditor                   string   `yaml:"confirmInEditor"`
	Remove                            string   `yaml:"remove"`
	New                               string   `yaml:"new"`
	Edit                              string   `yaml:"edit"`
	OpenFile                          string   `yaml:"openFile"`
	ScrollUpMain                      string   `yaml:"scrollUpMain"`
	ScrollDownMain                    string   `yaml:"scrollDownMain"`
	ScrollUpMainAlt1                  string   `yaml:"scrollUpMain-alt1"`
	ScrollDownMainAlt1                string   `yaml:"scrollDownMain-alt1"`
	ScrollUpMainAlt2                  string   `yaml:"scrollUpMain-alt2"`
	ScrollDownMainAlt2                string   `yaml:"scrollDownMain-alt2"`
	ExecuteShellCommand               string   `yaml:"executeShellCommand"`
	CreateRebaseOptionsMenu           string   `yaml:"createRebaseOptionsMenu"`
	Push                              string   `yaml:"pushFiles"` // 'Files' appended for legacy reasons
	Pull                              string   `yaml:"pullFiles"` // 'Files' appended for legacy reasons
	Refresh                           string   `yaml:"refresh"`
	CreatePatchOptionsMenu            string   `yaml:"createPatchOptionsMenu"`
	NextTab                           string   `yaml:"nextTab"`
	PrevTab                           string   `yaml:"prevTab"`
	NextScreenMode                    string   `yaml:"nextScreenMode"`
	PrevScreenMode                    string   `yaml:"prevScreenMode"`
	Undo                              string   `yaml:"undo"`
	Redo                              string   `yaml:"redo"`
	FilteringMenu                     string   `yaml:"filteringMenu"`
	DiffingMenu                       string   `yaml:"diffingMenu"`
	DiffingMenuAlt                    string   `yaml:"diffingMenu-alt"`
	CopyToClipboard                   string   `yaml:"copyToClipboard"`
	OpenRecentRepos                   string   `yaml:"openRecentRepos"`
	SubmitEditorText                  string   `yaml:"submitEditorText"`
	ExtrasMenu                        string   `yaml:"extrasMenu"`
	ToggleWhitespaceInDiffView        string   `yaml:"toggleWhitespaceInDiffView"`
	IncreaseContextInDiffView         string   `yaml:"increaseContextInDiffView"`
	DecreaseContextInDiffView         string   `yaml:"decreaseContextInDiffView"`
	IncreaseRenameSimilarityThreshold string   `yaml:"increaseRenameSimilarityThreshold"`
	DecreaseRenameSimilarityThreshold string   `yaml:"decreaseRenameSimilarityThreshold"`
	OpenDiffTool                      string   `yaml:"openDiffTool"`
}
    damn looks like we have some inconsistencies here with -alt and -alt1
type KeybindingWorktreesConfig ¶ added in v0.40.0
type KeybindingWorktreesConfig struct {
	ViewWorktreeOptions string `yaml:"viewWorktreeOptions"`
}
    type LogConfig ¶ added in v0.31.1
type LogConfig struct {
	// One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default'
	// 'topo-order' makes it easier to read the git log graph, but commits may not
	// appear chronologically. See https://git-scm.com/docs/
	//
	// Deprecated: Configure this with `Log menu -> Commit sort order` (<c-l> in the commits window by default).
	Order string `yaml:"order" jsonschema:"deprecated,enum=date-order,enum=author-date-order,enum=topo-order,enum=default,deprecated"`
	// This determines whether the git graph is rendered in the commits panel
	// One of 'always' | 'never' | 'when-maximised'
	//
	// Deprecated: Configure this with `Log menu -> Show git graph` (<c-l> in the commits window by default).
	ShowGraph string `yaml:"showGraph" jsonschema:"deprecated,enum=always,enum=never,enum=when-maximised"`
	// displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`)
	ShowWholeGraph bool `yaml:"showWholeGraph"`
}
    type MergingConfig ¶ added in v0.23.1
type MergingConfig struct {
	// If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang
	// Only applicable to unix users.
	ManualCommit bool `yaml:"manualCommit"`
	// Extra args passed to `git merge`, e.g. --no-ff
	Args string `yaml:"args" jsonschema:"example=--no-ff"`
	// The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders.
	SquashMergeMessage string `yaml:"squashMergeMessage"`
}
    type OSConfig ¶ added in v0.23.1
type OSConfig struct {
	// Command for editing a file. Should contain "{{filename}}".
	Edit string `yaml:"edit,omitempty"`
	// Command for editing a file at a given line number. Should contain
	// "{{filename}}", and may optionally contain "{{line}}".
	EditAtLine string `yaml:"editAtLine,omitempty"`
	// Same as EditAtLine, except that the command needs to wait until the
	// window is closed.
	EditAtLineAndWait string `yaml:"editAtLineAndWait,omitempty"`
	// Whether lazygit suspends until an edit process returns
	// Pointer to bool so that we can distinguish unset (nil) from false.
	// We're naming this `editInTerminal` for backwards compatibility
	SuspendOnEdit *bool `yaml:"editInTerminal,omitempty"`
	// For opening a directory in an editor
	OpenDirInEditor string `yaml:"openDirInEditor,omitempty"`
	// A built-in preset that sets all of the above settings. Supported presets
	// are defined in the getPreset function in editor_presets.go.
	EditPreset string `` /* 179-byte string literal not displayed */
	// Command for opening a file, as if the file is double-clicked. Should
	// contain "{{filename}}", but doesn't support "{{line}}".
	Open string `yaml:"open,omitempty"`
	// Command for opening a link. Should contain "{{link}}".
	OpenLink string `yaml:"openLink,omitempty"`
	// EditCommand is the command for editing a file.
	// Deprecated: use Edit instead. Note that semantics are different:
	// EditCommand is just the command itself, whereas Edit contains a
	// "{{filename}}" variable.
	EditCommand string `yaml:"editCommand,omitempty"`
	// EditCommandTemplate is the command template for editing a file
	// Deprecated: use EditAtLine instead.
	EditCommandTemplate string `yaml:"editCommandTemplate,omitempty"`
	// OpenCommand is the command for opening a file
	// Deprecated: use Open instead.
	OpenCommand string `yaml:"openCommand,omitempty"`
	// OpenLinkCommand is the command for opening a link
	// Deprecated: use OpenLink instead.
	OpenLinkCommand string `yaml:"openLinkCommand,omitempty"`
	// CopyToClipboardCmd is the command for copying to clipboard.
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
	CopyToClipboardCmd string `yaml:"copyToClipboardCmd,omitempty"`
	// ReadFromClipboardCmd is the command for reading the clipboard.
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
	ReadFromClipboardCmd string `yaml:"readFromClipboardCmd,omitempty"`
}
    OSConfig contains config on the level of the os
func GetPlatformDefaultConfig ¶ added in v0.2.2
func GetPlatformDefaultConfig() OSConfig
GetPlatformDefaultConfig gets the defaults for the platform
type PagerType ¶ added in v0.41.0
type PagerType string
func (PagerType) JSONSchemaExtend ¶ added in v0.41.0
func (PagerType) JSONSchemaExtend(schema *jsonschema.Schema)
type PagingConfig ¶ added in v0.23.1
type PagingConfig struct {
	// Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'
	ColorArg string `yaml:"colorArg" jsonschema:"enum=always,enum=never"`
	// e.g.
	// diff-so-fancy
	// delta --dark --paging=never
	// ydiff -p cat -s --wrap --width={{columnWidth}}
	Pager PagerType `yaml:"pager"`
	// If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager).
	UseConfig bool `yaml:"useConfig"`
	// e.g. 'difft --color=always'
	ExternalDiffCommand string `yaml:"externalDiffCommand"`
}
    type RefresherConfig ¶ added in v0.25.1
type RefresherConfig struct {
	// File/submodule refresh interval in seconds.
	// Auto-refresh can be disabled via option 'git.autoRefresh'.
	RefreshInterval int `yaml:"refreshInterval" jsonschema:"minimum=0"`
	// Re-fetch interval in seconds.
	// Auto-fetch can be disabled via option 'git.autoFetch'.
	FetchInterval int `yaml:"fetchInterval" jsonschema:"minimum=0"`
}
    type SpinnerConfig ¶ added in v0.42.0
type ThemeConfig ¶ added in v0.23.1
type ThemeConfig struct {
	// Border color of focused window
	ActiveBorderColor []string `yaml:"activeBorderColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Border color of non-focused windows
	InactiveBorderColor []string `yaml:"inactiveBorderColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Border color of focused window when searching in that window
	SearchingActiveBorderColor []string `yaml:"searchingActiveBorderColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Color of keybindings help text in the bottom line
	OptionsTextColor []string `yaml:"optionsTextColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Background color of selected line.
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line
	SelectedLineBgColor []string `yaml:"selectedLineBgColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Background color of selected line when view doesn't have focus.
	InactiveViewSelectedLineBgColor []string `yaml:"inactiveViewSelectedLineBgColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Foreground color of copied commit
	CherryPickedCommitFgColor []string `yaml:"cherryPickedCommitFgColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Background color of copied commit
	CherryPickedCommitBgColor []string `yaml:"cherryPickedCommitBgColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Foreground color of marked base commit (for rebase)
	MarkedBaseCommitFgColor []string `yaml:"markedBaseCommitFgColor"`
	// Background color of marked base commit (for rebase)
	MarkedBaseCommitBgColor []string `yaml:"markedBaseCommitBgColor"`
	// Color for file with unstaged changes
	UnstagedChangesColor []string `yaml:"unstagedChangesColor" jsonschema:"minItems=1,uniqueItems=true"`
	// Default text color
	DefaultFgColor []string `yaml:"defaultFgColor" jsonschema:"minItems=1,uniqueItems=true"`
}
    type UpdateConfig ¶ added in v0.23.1
type UserConfig ¶ added in v0.23.1
type UserConfig struct {
	// Config relating to the Lazygit UI
	Gui GuiConfig `yaml:"gui"`
	// Config relating to git
	Git GitConfig `yaml:"git"`
	// Periodic update checks
	Update UpdateConfig `yaml:"update"`
	// Background refreshes
	Refresher RefresherConfig `yaml:"refresher"`
	// If true, show a confirmation popup before quitting Lazygit
	ConfirmOnQuit bool `yaml:"confirmOnQuit"`
	// If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close
	QuitOnTopLevelReturn bool `yaml:"quitOnTopLevelReturn"`
	// Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc
	OS OSConfig `yaml:"os,omitempty"`
	// If true, don't display introductory popups upon opening Lazygit.
	DisableStartupPopups bool `yaml:"disableStartupPopups"`
	// User-configured commands that can be invoked from within Lazygit
	CustomCommands []CustomCommand `yaml:"customCommands" jsonschema:"uniqueItems=true"`
	// See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-pull-request-urls
	Services map[string]string `yaml:"services"`
	// What to do when opening Lazygit outside of a git repo.
	// - 'prompt': (default) ask whether to initialize a new repo or open in the most recent repo
	// - 'create': initialize a new repo
	// - 'skip': open most recent repo
	// - 'quit': exit Lazygit
	NotARepository string `yaml:"notARepository" jsonschema:"enum=prompt,enum=create,enum=skip,enum=quit"`
	// If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit.
	PromptToReturnFromSubprocess bool `yaml:"promptToReturnFromSubprocess"`
	// Keybindings
	Keybinding KeybindingConfig `yaml:"keybinding"`
}
    func GetDefaultConfig ¶ added in v0.2.0
func GetDefaultConfig() *UserConfig
func (*UserConfig) Validate ¶ added in v0.42.0
func (config *UserConfig) Validate() error