Documentation
¶
Index ¶
- type Binding
- type CheckoutRefOptions
- type ConfirmOpts
- type Context
- type ContextKey
- type ContextKind
- type CreateMenuOptions
- type CreatePopupPanelOpts
- type GitArg
- type Guard
- type HasKeybindings
- type HelperCommon
- type IBaseContext
- type IController
- type IGuiCommon
- type IList
- type IListContext
- type IListCursor
- type IListPanelState
- type IPopupHandler
- type IViewTrait
- type Key
- type KeybindingGuards
- type KeybindingsFn
- type KeybindingsOpts
- type ListItem
- type MenuItem
- type Model
- type Modes
- type MouseKeybindingsFn
- type OnFocusOpts
- type ParentContexter
- type PromptOpts
- type Ref
- type RefreshMode
- type RefreshOptions
- type RefreshableView
- type StartArgs
- type Suggestion
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Binding ¶ added in v0.35.0
type Binding struct {
ViewName string
Contexts []string
Handler func() error
Key Key
Modifier gocui.Modifier
Description string
Alternative string
Tag string // e.g. 'navigation'. Used for grouping things in the cheatsheet
OpensMenu bool
// to be displayed if the keybinding is highlighted from within a menu
Tooltip string
}
Binding - a keybinding mapping a key and modifier to a handler. The keypress is only handled if the given view has focus, or handled globally if the view is ""
type CheckoutRefOptions ¶ added in v0.35.0
type ConfirmOpts ¶ added in v0.35.0
type Context ¶ added in v0.35.0
type Context interface {
IBaseContext
HandleFocus(opts ...OnFocusOpts) error
HandleFocusLost() error
HandleRender() error
HandleRenderToMain() error
}
type ContextKey ¶ added in v0.35.0
type ContextKey string
type ContextKind ¶ added in v0.35.0
type ContextKind int
const ( SIDE_CONTEXT ContextKind = iota MAIN_CONTEXT TEMPORARY_POPUP PERSISTENT_POPUP EXTRAS_CONTEXT // only used by the one global context GLOBAL_CONTEXT )
type CreateMenuOptions ¶ added in v0.35.0
type CreatePopupPanelOpts ¶ added in v0.35.0
type CreatePopupPanelOpts struct {
HasLoader bool
Editable bool
Title string
Prompt string
HandleConfirm func() error
HandleConfirmPrompt func(string) error
HandleClose func() error
// when HandlersManageFocus is true, do not return from the confirmation context automatically. It's expected that the handlers will manage focus, whether that means switching to another context, or manually returning the context.
HandlersManageFocus bool
FindSuggestionsFunc func(string) []*Suggestion
Mask bool
}
type Guard ¶ added in v0.35.0
A guard is a decorator which checks something before executing a handler and potentially early-exits if some precondition hasn't been met.
type HasKeybindings ¶ added in v0.35.0
type HasKeybindings interface {
GetKeybindings(opts KeybindingsOpts) []*Binding
GetMouseKeybindings(opts KeybindingsOpts) []*gocui.ViewMouseBinding
GetOnClick() func() error
}
type HelperCommon ¶ added in v0.35.0
type HelperCommon struct {
*common.Common
IGuiCommon
}
type IBaseContext ¶ added in v0.35.0
type IBaseContext interface {
HasKeybindings
ParentContexter
GetKind() ContextKind
GetViewName() string
GetWindowName() string
SetWindowName(string)
GetKey() ContextKey
IsFocusable() bool
// if a context is transient, then it only appears via some keybinding on another
// context. Until we add support for having multiple of the same context, no two
// of the same transient context can appear at once meaning one might be 'stolen'
// from another window.
IsTransient() bool
// returns the desired title for the view upon activation. If there is no desired title (returns empty string), then
// no title will be set
Title() string
GetOptionsMap() map[string]string
AddKeybindingsFn(KeybindingsFn)
AddMouseKeybindingsFn(MouseKeybindingsFn)
// This is a bit of a hack at the moment: we currently only set an onclick function so that
// our list controller can come along and wrap it in a list-specific click handler.
// We'll need to think of a better way to do this.
AddOnClickFn(func() error)
}
type IController ¶ added in v0.35.0
type IController interface {
HasKeybindings
Context() Context
}
type IGuiCommon ¶ added in v0.35.0
type IGuiCommon interface {
IPopupHandler
LogAction(action string)
LogCommand(cmdStr string, isCommandLine bool)
// we call this when we want to refetch some models and render the result. Internally calls PostRefreshUpdate
Refresh(RefreshOptions) error
// we call this when we've changed something in the view model but not the actual model,
// e.g. expanding or collapsing a folder in a file view. Calling 'Refresh' in this
// case would be overkill, although refresh will internally call 'PostRefreshUpdate'
PostRefreshUpdate(Context) error
// this just re-renders the screen
Render()
// returns true if command completed successfully
RunSubprocess(cmdObj oscommands.ICmdObj) (bool, error)
RunSubprocessAndRefresh(oscommands.ICmdObj) error
PushContext(context Context, opts ...OnFocusOpts) error
PopContext() error
CurrentContext() Context
// enters search mode for the current view
OpenSearch()
GetAppState() *config.AppState
SaveAppState() error
// Runs the given function on the UI thread (this is for things like showing a popup asking a user for input).
// Only necessary to call if you're not already on the UI thread i.e. you're inside a goroutine.
// All controller handlers are executed on the UI thread.
OnUIThread(f func() error)
}
type IList ¶ added in v0.35.0
type IList interface {
IListCursor
Len() int
}
type IListContext ¶ added in v0.35.0
type IListCursor ¶ added in v0.35.0
type IListPanelState ¶ added in v0.35.0
type IPopupHandler ¶ added in v0.35.0
type IPopupHandler interface {
// Shows a popup with a (localized) "Error" caption and the given error message (in red).
//
// This is a convenience wrapper around Alert().
ErrorMsg(message string) error
Error(err error) error
// Shows a notification popup with the given title and message to the user.
//
// This is a convenience wrapper around Confirm(), thus the popup can be closed using both 'Enter' and 'ESC'.
Alert(title string, message string) error
// Shows a popup asking the user for confirmation.
Confirm(opts ConfirmOpts) error
// Shows a popup prompting the user for input.
Prompt(opts PromptOpts) error
WithLoaderPanel(message string, f func() error) error
WithWaitingStatus(message string, f func() error) error
Menu(opts CreateMenuOptions) error
Toast(message string)
GetPromptInput() string
}
type IViewTrait ¶ added in v0.35.0
type KeybindingGuards ¶ added in v0.35.0
type KeybindingsFn ¶ added in v0.35.0
type KeybindingsFn func(opts KeybindingsOpts) []*Binding
type KeybindingsOpts ¶ added in v0.35.0
type KeybindingsOpts struct {
GetKey func(key string) Key
Config config.KeybindingConfig
Guards KeybindingGuards
}
type ListItem ¶ added in v0.35.0
type ListItem interface {
// ID is a SHA when the item is a commit, a filename when the item is a file, 'stash@{4}' when it's a stash entry, 'my_branch' when it's a branch
ID() string
// Description is something we would show in a message e.g. '123as14: push blah' for a commit
Description() string
}
type MenuItem ¶ added in v0.35.0
type MenuItem struct {
Label string
// alternative to Label. Allows specifying columns which will be auto-aligned
LabelColumns []string
OnPress func() error
// Only applies when Label is used
OpensMenu bool
// If Key is defined it allows the user to press the key to invoke the menu
// item, as opposed to having to navigate to it
Key Key
// The tooltip will be displayed upon highlighting the menu item
Tooltip string
}
type Model ¶ added in v0.35.0
type Model struct {
CommitFiles []*models.CommitFile
Files []*models.File
Submodules []*models.SubmoduleConfig
Branches []*models.Branch
Commits []*models.Commit
StashEntries []*models.StashEntry
SubCommits []*models.Commit
Remotes []*models.Remote
// FilteredReflogCommits are the ones that appear in the reflog panel.
// when in filtering mode we only include the ones that match the given path
FilteredReflogCommits []*models.Commit
// ReflogCommits are the ones used by the branches panel to obtain recency values
// if we're not in filtering mode, CommitFiles and FilteredReflogCommits will be
// one and the same
ReflogCommits []*models.Commit
BisectInfo *git_commands.BisectInfo
RemoteBranches []*models.RemoteBranch
Tags []*models.Tag
// for displaying suggestions while typing in a file name
FilesTrie *patricia.Trie
}
type Modes ¶ added in v0.35.0
type Modes struct {
Filtering filtering.Filtering
CherryPicking *cherrypicking.CherryPicking
Diffing diffing.Diffing
}
type MouseKeybindingsFn ¶ added in v0.35.0
type MouseKeybindingsFn func(opts KeybindingsOpts) []*gocui.ViewMouseBinding
type OnFocusOpts ¶ added in v0.35.0
type ParentContexter ¶ added in v0.35.0
type PromptOpts ¶ added in v0.35.0
type RefreshMode ¶ added in v0.35.0
type RefreshMode int
const ( SYNC RefreshMode = iota // wait until everything is done before returning ASYNC // return immediately, allowing each independent thing to update itself BLOCK_UI // wrap code in an update call to ensure UI updates all at once and keybindings aren't executed till complete )
type RefreshOptions ¶ added in v0.35.0
type RefreshOptions struct {
Then func()
Scope []RefreshableView // e.g. []int{COMMITS, BRANCHES}. Leave empty to refresh everything
Mode RefreshMode // one of SYNC (default), ASYNC, and BLOCK_UI
}
type RefreshableView ¶ added in v0.35.0
type RefreshableView int
models/views that we can refresh
const ( COMMITS RefreshableView = iota REBASE_COMMITS BRANCHES FILES STASH REFLOG TAGS REMOTES STATUS SUBMODULES // not actually a view. Will refactor this later BISECT_INFO )
type StartArgs ¶ added in v0.35.0
type StartArgs struct {
// FilterPath determines which path we're going to filter on so that we only see commits from that file.
FilterPath string
// GitArg determines what context we open in
GitArg GitArg
}
StartArgs is the struct that represents some things we want to do on program start
func NewStartArgs ¶ added in v0.35.0
type Suggestion ¶
Click to show internal directories.
Click to hide internal directories.