mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-05-11 04:15:48 +02:00
update i18n
This commit is contained in:
parent
1337f6e76a
commit
e331dfcaf8
5 changed files with 281 additions and 42 deletions
114
Keybindings_en.md
Normal file
114
Keybindings_en.md
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
# Lazygit menu
|
||||||
|
|
||||||
|
## Global
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>m</kbd>: view merge/rebase options
|
||||||
|
<kbd>P</kbd>: push
|
||||||
|
<kbd>p</kbd>: pull
|
||||||
|
<kbd>R</kbd>: refresh
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Status
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>e</kbd>: edit config file
|
||||||
|
<kbd>o</kbd>: open config file
|
||||||
|
<kbd>u</kbd>: check for update
|
||||||
|
<kbd>s</kbd>: switch to a recent repo
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Files
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>c</kbd>: commit changes
|
||||||
|
<kbd>A</kbd>: amend last commit
|
||||||
|
<kbd>C</kbd>: commit changes using git editor
|
||||||
|
<kbd>space</kbd>: toggle staged
|
||||||
|
<kbd>d</kbd>: delete if untracked / checkout if tracked
|
||||||
|
<kbd>e</kbd>: edit file
|
||||||
|
<kbd>o</kbd>: open file
|
||||||
|
<kbd>i</kbd>: add to .gitignore
|
||||||
|
<kbd>r</kbd>: refresh files
|
||||||
|
<kbd>s</kbd>: stash files
|
||||||
|
<kbd>S</kbd>: soft reset to last commit
|
||||||
|
<kbd>a</kbd>: stage/unstage all
|
||||||
|
<kbd>t</kbd>: add patch
|
||||||
|
<kbd>D</kbd>: reset hard and remove untracked files
|
||||||
|
<kbd>enter</kbd>: stage individual hunks/lines
|
||||||
|
<kbd>f</kbd>: fetch
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Branches
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>space</kbd>: checkout
|
||||||
|
<kbd>o</kbd>: create pull request
|
||||||
|
<kbd>c</kbd>: checkout by name
|
||||||
|
<kbd>F</kbd>: force checkout
|
||||||
|
<kbd>n</kbd>: new branch
|
||||||
|
<kbd>d</kbd>: delete branch
|
||||||
|
<kbd>r</kbd>: rebase branch
|
||||||
|
<kbd>M</kbd>: merge into currently checked out branch
|
||||||
|
<kbd>f</kbd>: fast-forward this branch from its upstream
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Commits
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>s</kbd>: squash down
|
||||||
|
<kbd>r</kbd>: rename commit
|
||||||
|
<kbd>R</kbd>: rename commit with editor
|
||||||
|
<kbd>g</kbd>: reset to this commit
|
||||||
|
<kbd>f</kbd>: fixup commit
|
||||||
|
<kbd>d</kbd>: delete commit
|
||||||
|
<kbd>J</kbd>: move commit down one
|
||||||
|
<kbd>K</kbd>: move commit up one
|
||||||
|
<kbd>e</kbd>: edit commit
|
||||||
|
<kbd>A</kbd>: amend commit with staged changes
|
||||||
|
<kbd>p</kbd>: pick commit (when mid-rebase)
|
||||||
|
<kbd>t</kbd>: revert commit
|
||||||
|
<kbd>c</kbd>: copy commit (cherry-pick)
|
||||||
|
<kbd>C</kbd>: copy commit range (cherry-pick)
|
||||||
|
<kbd>v</kbd>: paste commits (cherry-pick)
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Stash
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>space</kbd>: apply
|
||||||
|
<kbd>g</kbd>: pop
|
||||||
|
<kbd>d</kbd>: drop
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Main (Normal)
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>PgDn</kbd>: scroll down
|
||||||
|
<kbd>PgUp</kbd>: scroll up
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Main (Staging)
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>esc</kbd>: return to files panel
|
||||||
|
<kbd>▲</kbd>: select previous line
|
||||||
|
<kbd>▼</kbd>: select next line
|
||||||
|
<kbd>◄</kbd>: select previous hunk
|
||||||
|
<kbd>►</kbd>: select next hunk
|
||||||
|
<kbd>space</kbd>: stage line
|
||||||
|
<kbd>a</kbd>: stage hunk
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
## Main (Merging)
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
<kbd>esc</kbd>: return to files panel
|
||||||
|
<kbd>space</kbd>: pick hunk
|
||||||
|
<kbd>b</kbd>: pick both hunks
|
||||||
|
<kbd>◄</kbd>: select previous conflict
|
||||||
|
<kbd>►</kbd>: select next conflict
|
||||||
|
<kbd>▲</kbd>: select top hunk
|
||||||
|
<kbd>▼</kbd>: select bottom hunk
|
||||||
|
<kbd>z</kbd>: undo
|
||||||
|
</pre>
|
|
@ -38,7 +38,7 @@ func (gui *Gui) changeContext(viewName, context string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
contextMap := gui.getContextMap()
|
contextMap := gui.GetContextMap()
|
||||||
|
|
||||||
gui.g.DeleteKeybindings(viewName)
|
gui.g.DeleteKeybindings(viewName)
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ func (gui *Gui) changeContext(viewName, context string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) setInitialContexts() error {
|
func (gui *Gui) setInitialContexts() error {
|
||||||
contextMap := gui.getContextMap()
|
contextMap := gui.GetContextMap()
|
||||||
|
|
||||||
initialContexts := map[string]string{
|
initialContexts := map[string]string{
|
||||||
"main": "merging",
|
"main": "merging",
|
||||||
|
|
|
@ -13,6 +13,7 @@ type Binding struct {
|
||||||
Key interface{} // FIXME: find out how to get `gocui.Key | rune`
|
Key interface{} // FIXME: find out how to get `gocui.Key | rune`
|
||||||
Modifier gocui.Modifier
|
Modifier gocui.Modifier
|
||||||
Description string
|
Description string
|
||||||
|
panic bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetDisplayStrings returns the display string of a file
|
// GetDisplayStrings returns the display string of a file
|
||||||
|
@ -31,6 +32,10 @@ func (b *Binding) GetKey() string {
|
||||||
key = int(b.Key.(gocui.Key))
|
key = int(b.Key.(gocui.Key))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if b.panic {
|
||||||
|
panic(key)
|
||||||
|
}
|
||||||
|
|
||||||
// special keys
|
// special keys
|
||||||
switch key {
|
switch key {
|
||||||
case 27:
|
case 27:
|
||||||
|
@ -39,6 +44,18 @@ func (b *Binding) GetKey() string {
|
||||||
return "enter"
|
return "enter"
|
||||||
case 32:
|
case 32:
|
||||||
return "space"
|
return "space"
|
||||||
|
case 65514:
|
||||||
|
return "►"
|
||||||
|
case 65515:
|
||||||
|
return "◄"
|
||||||
|
case 65517:
|
||||||
|
return "▲"
|
||||||
|
case 65516:
|
||||||
|
return "▼"
|
||||||
|
case 65508:
|
||||||
|
return "PgUp"
|
||||||
|
case 65507:
|
||||||
|
return "PgDn"
|
||||||
}
|
}
|
||||||
|
|
||||||
return string(key)
|
return string(key)
|
||||||
|
@ -461,11 +478,12 @@ func (gui *Gui) GetInitialKeybindings() []*Binding {
|
||||||
return bindings
|
return bindings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetCurrentKeybindings gets the list of keybindings given the current context
|
||||||
func (gui *Gui) GetCurrentKeybindings() []*Binding {
|
func (gui *Gui) GetCurrentKeybindings() []*Binding {
|
||||||
bindings := gui.GetInitialKeybindings()
|
bindings := gui.GetInitialKeybindings()
|
||||||
viewName := gui.currentViewName(gui.g)
|
viewName := gui.currentViewName(gui.g)
|
||||||
currentContext := gui.State.Contexts[viewName]
|
currentContext := gui.State.Contexts[viewName]
|
||||||
contextBindings := gui.getContextMap()[viewName][currentContext]
|
contextBindings := gui.GetContextMap()[viewName][currentContext]
|
||||||
|
|
||||||
return append(bindings, contextBindings...)
|
return append(bindings, contextBindings...)
|
||||||
}
|
}
|
||||||
|
@ -484,9 +502,24 @@ func (gui *Gui) keybindings(g *gocui.Gui) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) getContextMap() map[string]map[string][]*Binding {
|
func (gui *Gui) GetContextMap() map[string]map[string][]*Binding {
|
||||||
return map[string]map[string][]*Binding{
|
return map[string]map[string][]*Binding{
|
||||||
"main": {
|
"main": {
|
||||||
|
"normal": {
|
||||||
|
{
|
||||||
|
ViewName: "main",
|
||||||
|
Key: gocui.MouseWheelDown,
|
||||||
|
Modifier: gocui.ModNone,
|
||||||
|
Handler: gui.scrollDownMain,
|
||||||
|
Description: gui.Tr.SLocalize("ScrollDown"),
|
||||||
|
}, {
|
||||||
|
ViewName: "main",
|
||||||
|
Key: gocui.MouseWheelUp,
|
||||||
|
Modifier: gocui.ModNone,
|
||||||
|
Handler: gui.scrollUpMain,
|
||||||
|
Description: gui.Tr.SLocalize("ScrollUp"),
|
||||||
|
},
|
||||||
|
},
|
||||||
"staging": {
|
"staging": {
|
||||||
{
|
{
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
|
@ -495,15 +528,17 @@ func (gui *Gui) getContextMap() map[string]map[string][]*Binding {
|
||||||
Handler: gui.handleStagingEscape,
|
Handler: gui.handleStagingEscape,
|
||||||
Description: gui.Tr.SLocalize("EscapeStaging"),
|
Description: gui.Tr.SLocalize("EscapeStaging"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowUp,
|
Key: gocui.KeyArrowUp,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleStagingPrevLine,
|
Handler: gui.handleStagingPrevLine,
|
||||||
|
Description: gui.Tr.SLocalize("PrevLine"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowDown,
|
Key: gocui.KeyArrowDown,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleStagingNextLine,
|
Handler: gui.handleStagingNextLine,
|
||||||
|
Description: gui.Tr.SLocalize("NextLine"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: 'k',
|
Key: 'k',
|
||||||
|
@ -516,14 +551,26 @@ func (gui *Gui) getContextMap() map[string]map[string][]*Binding {
|
||||||
Handler: gui.handleStagingNextLine,
|
Handler: gui.handleStagingNextLine,
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowLeft,
|
Key: gocui.MouseWheelUp,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleStagingPrevHunk,
|
Handler: gui.handleStagingPrevLine,
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowRight,
|
Key: gocui.MouseWheelDown,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleStagingNextHunk,
|
Handler: gui.handleStagingNextLine,
|
||||||
|
}, {
|
||||||
|
ViewName: "main",
|
||||||
|
Key: gocui.KeyArrowLeft,
|
||||||
|
Modifier: gocui.ModNone,
|
||||||
|
Handler: gui.handleStagingPrevHunk,
|
||||||
|
Description: gui.Tr.SLocalize("PrevHunk"),
|
||||||
|
}, {
|
||||||
|
ViewName: "main",
|
||||||
|
Key: gocui.KeyArrowRight,
|
||||||
|
Modifier: gocui.ModNone,
|
||||||
|
Handler: gui.handleStagingNextHunk,
|
||||||
|
Description: gui.Tr.SLocalize("NextHunk"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: 'h',
|
Key: 'h',
|
||||||
|
@ -550,10 +597,11 @@ func (gui *Gui) getContextMap() map[string]map[string][]*Binding {
|
||||||
},
|
},
|
||||||
"merging": {
|
"merging": {
|
||||||
{
|
{
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyEsc,
|
Key: gocui.KeyEsc,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleEscapeMerge,
|
Handler: gui.handleEscapeMerge,
|
||||||
|
Description: gui.Tr.SLocalize("EscapeStaging"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeySpace,
|
Key: gocui.KeySpace,
|
||||||
|
@ -567,25 +615,31 @@ func (gui *Gui) getContextMap() map[string]map[string][]*Binding {
|
||||||
Handler: gui.handlePickBothHunks,
|
Handler: gui.handlePickBothHunks,
|
||||||
Description: gui.Tr.SLocalize("PickBothHunks"),
|
Description: gui.Tr.SLocalize("PickBothHunks"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowLeft,
|
Key: gocui.KeyArrowLeft,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleSelectPrevConflict,
|
Handler: gui.handleSelectPrevConflict,
|
||||||
|
Description: gui.Tr.SLocalize("PrevConflict"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowRight,
|
Key: gocui.KeyArrowRight,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleSelectNextConflict,
|
Handler: gui.handleSelectNextConflict,
|
||||||
|
|
||||||
|
Description: gui.Tr.SLocalize("NextConflict"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowUp,
|
Key: gocui.KeyArrowUp,
|
||||||
Modifier: gocui.ModNone,
|
|
||||||
Handler: gui.handleSelectTop,
|
Modifier: gocui.ModNone,
|
||||||
|
Handler: gui.handleSelectTop,
|
||||||
|
Description: gui.Tr.SLocalize("SelectTop"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: gocui.KeyArrowDown,
|
Key: gocui.KeyArrowDown,
|
||||||
Modifier: gocui.ModNone,
|
Modifier: gocui.ModNone,
|
||||||
Handler: gui.handleSelectBottom,
|
Handler: gui.handleSelectBottom,
|
||||||
|
Description: gui.Tr.SLocalize("SelectBottom"),
|
||||||
}, {
|
}, {
|
||||||
ViewName: "main",
|
ViewName: "main",
|
||||||
Key: 'h',
|
Key: 'h',
|
||||||
|
|
|
@ -45,6 +45,18 @@ func addEnglish(i18nObject *i18n.Bundle) error {
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "MergingMainTitle",
|
ID: "MergingMainTitle",
|
||||||
Other: "Resolve merge conflicts",
|
Other: "Resolve merge conflicts",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "MainTitle",
|
||||||
|
Other: "Main",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "StagingTitle",
|
||||||
|
Other: "Staging",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "MergingTitle",
|
||||||
|
Other: "Merging",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "NormalTitle",
|
||||||
|
Other: "Normal",
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "CommitMessage",
|
ID: "CommitMessage",
|
||||||
Other: "Commit message",
|
Other: "Commit message",
|
||||||
|
@ -588,6 +600,39 @@ func addEnglish(i18nObject *i18n.Bundle) error {
|
||||||
}, &i18n.Message{
|
}, &i18n.Message{
|
||||||
ID: "CannotRebaseOntoFirstCommit",
|
ID: "CannotRebaseOntoFirstCommit",
|
||||||
Other: "You cannot interactive rebase onto the first commit",
|
Other: "You cannot interactive rebase onto the first commit",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "Donate",
|
||||||
|
Other: "Donate",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "PrevLine",
|
||||||
|
Other: "select previous line",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "NextLine",
|
||||||
|
Other: "select next line",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "PrevHunk",
|
||||||
|
Other: "select previous hunk",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "NextHunk",
|
||||||
|
Other: "select next hunk",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "PrevConflict",
|
||||||
|
Other: "select previous conflict",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "NextConflict",
|
||||||
|
Other: "select next conflict",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "SelectTop",
|
||||||
|
Other: "select top hunk",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "SelectBottom",
|
||||||
|
Other: "select bottom hunk",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "ScrollDown",
|
||||||
|
Other: "scroll down",
|
||||||
|
}, &i18n.Message{
|
||||||
|
ID: "ScrollUp",
|
||||||
|
Other: "scroll up",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ import (
|
||||||
|
|
||||||
"github.com/jesseduffield/lazygit/pkg/app"
|
"github.com/jesseduffield/lazygit/pkg/app"
|
||||||
"github.com/jesseduffield/lazygit/pkg/config"
|
"github.com/jesseduffield/lazygit/pkg/config"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/gui"
|
||||||
)
|
)
|
||||||
|
|
||||||
func writeString(file *os.File, str string) {
|
func writeString(file *os.File, str string) {
|
||||||
|
@ -25,27 +26,36 @@ func writeString(file *os.File, str string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getTitle(mApp *app.App, viewName string) string {
|
func localisedTitle(mApp *app.App, str string) string {
|
||||||
viewTitle := strings.Title(viewName) + "Title"
|
viewTitle := strings.Title(str) + "Title"
|
||||||
translatedTitle := mApp.Tr.SLocalize(viewTitle)
|
return mApp.Tr.SLocalize(viewTitle)
|
||||||
formattedTitle := fmt.Sprintf("\n## %s\n\n", translatedTitle)
|
|
||||||
return formattedTitle
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func formatTitle(title string) string {
|
||||||
|
return fmt.Sprintf("\n## %s\n\n", title)
|
||||||
|
}
|
||||||
|
|
||||||
|
func writeBinding(file *os.File, binding *gui.Binding) {
|
||||||
|
info := fmt.Sprintf(" <kbd>%s</kbd>: %s\n", binding.GetKey(), binding.Description)
|
||||||
|
writeString(file, info)
|
||||||
|
}
|
||||||
|
|
||||||
|
// I should really just build an array of tuples, one thing with a string and the other with a list of bindings, and then build them like that.
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
mConfig, _ := config.NewAppConfig("", "", "", "", "", new(bool))
|
mConfig, _ := config.NewAppConfig("", "", "", "", "", true)
|
||||||
mApp, _ := app.Setup(mConfig)
|
mApp, _ := app.NewApp(mConfig)
|
||||||
lang := mApp.Tr.GetLanguage()
|
lang := mApp.Tr.GetLanguage()
|
||||||
file, _ := os.Create("Keybindings_" + lang + ".md")
|
file, _ := os.Create("Keybindings_" + lang + ".md")
|
||||||
current := ""
|
current := ""
|
||||||
|
|
||||||
writeString(file, fmt.Sprintf("# Lazygit %s\n", mApp.Tr.SLocalize("menu")))
|
writeString(file, fmt.Sprintf("# Lazygit %s\n", mApp.Tr.SLocalize("menu")))
|
||||||
writeString(file, getTitle(mApp, "global"))
|
writeString(file, formatTitle(localisedTitle(mApp, "global")))
|
||||||
|
|
||||||
writeString(file, "<pre>\n")
|
writeString(file, "<pre>\n")
|
||||||
|
|
||||||
// TODO: add context-based keybindings
|
// TODO: add context-based keybindings
|
||||||
for _, binding := range mApp.Gui.GetKeybindings() {
|
for _, binding := range mApp.Gui.GetInitialKeybindings() {
|
||||||
if binding.Description == "" {
|
if binding.Description == "" {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -53,13 +63,29 @@ func main() {
|
||||||
if binding.ViewName != current {
|
if binding.ViewName != current {
|
||||||
current = binding.ViewName
|
current = binding.ViewName
|
||||||
writeString(file, "</pre>\n")
|
writeString(file, "</pre>\n")
|
||||||
writeString(file, getTitle(mApp, current))
|
writeString(file, formatTitle(localisedTitle(mApp, current)))
|
||||||
writeString(file, "<pre>\n")
|
writeString(file, "<pre>\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
info := fmt.Sprintf(" <kbd>%s</kbd>: %s\n", binding.GetKey(), binding.Description)
|
writeBinding(file, binding)
|
||||||
writeString(file, info)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
writeString(file, "</pre>\n")
|
writeString(file, "</pre>\n")
|
||||||
|
|
||||||
|
for view, contexts := range mApp.Gui.GetContextMap() {
|
||||||
|
for contextName, contextBindings := range contexts {
|
||||||
|
translatedView := localisedTitle(mApp, view)
|
||||||
|
translatedContextName := localisedTitle(mApp, contextName)
|
||||||
|
writeString(file, fmt.Sprintf("\n## %s (%s)\n\n", translatedView, translatedContextName))
|
||||||
|
writeString(file, "<pre>\n")
|
||||||
|
for _, binding := range contextBindings {
|
||||||
|
if binding.Description == "" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
writeBinding(file, binding)
|
||||||
|
}
|
||||||
|
writeString(file, "</pre>\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue