mirror of
https://github.com/jesseduffield/lazygit.git
synced 2025-02-09 13:47:11 +02:00
add generate_cheatsheet script
script is generating markdown document with small cheatsheet in selected language
This commit is contained in:
parent
1fa55875e2
commit
359636c1aa
@ -47,23 +47,27 @@ func (gui *Gui) handleHelpClose(g *gocui.Gui, v *gocui.View) error {
|
|||||||
return gui.returnFocus(g, v)
|
return gui.returnFocus(g, v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (gui *Gui) GetKey(binding Binding) string {
|
||||||
|
r, ok := binding.Key.(rune)
|
||||||
|
key := ""
|
||||||
|
|
||||||
|
if ok {
|
||||||
|
key = string(r)
|
||||||
|
} else if binding.KeyReadable != "" {
|
||||||
|
key = binding.KeyReadable
|
||||||
|
}
|
||||||
|
|
||||||
|
return key
|
||||||
|
}
|
||||||
|
|
||||||
func (gui *Gui) handleHelp(g *gocui.Gui, v *gocui.View) error {
|
func (gui *Gui) handleHelp(g *gocui.Gui, v *gocui.View) error {
|
||||||
// clear keys slice, so we don't have ghost elements
|
// clear keys slice, so we don't have ghost elements
|
||||||
keys = keys[:0]
|
keys = keys[:0]
|
||||||
content := ""
|
content := ""
|
||||||
bindings := gui.getKeybindings()
|
bindings := gui.GetKeybindings()
|
||||||
|
|
||||||
for _, binding := range bindings {
|
for _, binding := range bindings {
|
||||||
r, ok := binding.Key.(rune)
|
if key := gui.GetKey(binding); key != "" && binding.ViewName == v.Name() && binding.Description != "" {
|
||||||
key := ""
|
|
||||||
|
|
||||||
if ok {
|
|
||||||
key = string(r)
|
|
||||||
} else if binding.KeyReadable != "" {
|
|
||||||
key = binding.KeyReadable
|
|
||||||
}
|
|
||||||
|
|
||||||
if key != "" && binding.ViewName == v.Name() && binding.Description != "" {
|
|
||||||
content += fmt.Sprintf(" %s - %s\n", key, binding.Description)
|
content += fmt.Sprintf(" %s - %s\n", key, binding.Description)
|
||||||
keys = append(keys, binding)
|
keys = append(keys, binding)
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ type Binding struct {
|
|||||||
Description string
|
Description string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) getKeybindings() []Binding {
|
func (gui *Gui) GetKeybindings() []Binding {
|
||||||
bindings := []Binding{
|
bindings := []Binding{
|
||||||
{
|
{
|
||||||
ViewName: "",
|
ViewName: "",
|
||||||
@ -379,7 +379,7 @@ func (gui *Gui) getKeybindings() []Binding {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (gui *Gui) keybindings(g *gocui.Gui) error {
|
func (gui *Gui) keybindings(g *gocui.Gui) error {
|
||||||
bindings := gui.getKeybindings()
|
bindings := gui.GetKeybindings()
|
||||||
|
|
||||||
for _, binding := range bindings {
|
for _, binding := range bindings {
|
||||||
if err := g.SetKeybinding(binding.ViewName, binding.Key, binding.Modifier, binding.Handler); err != nil {
|
if err := g.SetKeybinding(binding.ViewName, binding.Key, binding.Modifier, binding.Handler); err != nil {
|
||||||
|
41
scripts/generate_cheatsheet.go
Normal file
41
scripts/generate_cheatsheet.go
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// run:
|
||||||
|
// LANG=en go run generate_cheatsheet.go
|
||||||
|
// to generate Keybindings_en.md file in current directory
|
||||||
|
// change LANG to generate cheatsheet in different language (if supported)
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/app"
|
||||||
|
"github.com/jesseduffield/lazygit/pkg/config"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
appConfig, _ := config.NewAppConfig("", "", "", "", "", new(bool))
|
||||||
|
a, _ := app.NewApp(appConfig)
|
||||||
|
lang := a.Tr.GetLanguage()
|
||||||
|
name := "Keybindings_" + lang + ".md"
|
||||||
|
bindings := a.Gui.GetKeybindings()
|
||||||
|
file, _ := os.Create(name)
|
||||||
|
current := ""
|
||||||
|
content := ""
|
||||||
|
|
||||||
|
file.WriteString("# Lazygit " + a.Tr.SLocalize("help"))
|
||||||
|
|
||||||
|
for _, binding := range bindings {
|
||||||
|
if key := a.Gui.GetKey(binding); key != "" && binding.Description != "" {
|
||||||
|
if binding.ViewName != current {
|
||||||
|
current = binding.ViewName
|
||||||
|
title := a.Tr.SLocalize(strings.Title(current) + "Title")
|
||||||
|
content = fmt.Sprintf("</pre>\n\n## %s\n<pre>\n", title)
|
||||||
|
file.WriteString(content)
|
||||||
|
}
|
||||||
|
content = fmt.Sprintf("\t<kbd>%s</kbd>:\t%s\n", key, binding.Description)
|
||||||
|
file.WriteString(content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user