diff --git a/main.go b/main.go index 222085c..b962d55 100644 --- a/main.go +++ b/main.go @@ -6,7 +6,6 @@ import ( "log" "math/rand" "time" - "github.com/esimov/diagram/canvas" "github.com/esimov/diagram/io" "github.com/esimov/diagram/ui" diff --git a/ui/editor.go b/ui/editor.go index 01f7e4b..6b1691b 100644 --- a/ui/editor.go +++ b/ui/editor.go @@ -1,8 +1,8 @@ package ui import ( - "github.com/jroimartin/gocui" "strings" + "github.com/jroimartin/gocui" ) type editor struct { diff --git a/ui/handlers.go b/ui/handlers.go index 72df738..3653a9d 100644 --- a/ui/handlers.go +++ b/ui/handlers.go @@ -3,11 +3,12 @@ package ui import ( "bytes" "fmt" - "github.com/esimov/diagram/io" - "github.com/jroimartin/gocui" "log" + "runtime" "path/filepath" "text/tabwriter" + "github.com/esimov/diagram/io" + "github.com/jroimartin/gocui" ) type Fn func(*gocui.Gui, *gocui.View) error @@ -29,6 +30,7 @@ var keyHandlers = &handlers{ {nil, gocui.KeyPgdn, "PgDown", "Jump to the bottom", nil}, {nil, gocui.KeyHome, "Home", "Jump to the start", nil}, {nil, gocui.KeyEnd, "End", "Jump to the end", nil}, + *getDeleteHandler(), {nil, gocui.KeyCtrlX, "Ctrl+x", "Clear editor content", nil}, {nil, gocui.KeyCtrlZ, "Ctrl+z", "Restore editor content", nil}, {nil, gocui.KeyCtrlS, "Ctrl+s", "Save diagram", onSaveDiagram}, @@ -36,6 +38,13 @@ var keyHandlers = &handlers{ {nil, gocui.KeyCtrlC, "Ctrl+c", "Quit", onQuit}, } +func getDeleteHandler() *handler { + if runtime.GOOS == "Darwin" { + return &handler{nil, gocui.KeyBackspace2, "Backspace", "Delete diagram", nil} + } + return &handler{nil, gocui.KeyDelete, "Delete", "Delete diagram", nil} +} + func onNextPanel(ui *UI, wrap bool) Fn { return func(*gocui.Gui, *gocui.View) error { return ui.nextView(wrap) @@ -131,8 +140,14 @@ func (handlers handlers) ApplyKeyBindings(ui *UI, g *gocui.Gui) error { return err } - if err := g.SetKeybinding(SAVED_DIAGRAMS_PANEL, gocui.KeyDelete, gocui.ModNone, onDelete); err != nil { - return err + if runtime.GOOS == "darwin" { + if err := g.SetKeybinding(SAVED_DIAGRAMS_PANEL, gocui.KeyBackspace2, gocui.ModNone, onDelete); err != nil { + return err + } + } else { + if err := g.SetKeybinding(SAVED_DIAGRAMS_PANEL, gocui.KeyDelete, gocui.ModNone, onDelete); err != nil { + return err + } } return g.SetKeybinding("", gocui.KeyCtrlH, gocui.ModNone, func(g *gocui.Gui, v *gocui.View) error {