|
|
@ -339,22 +339,22 @@ func (g *Gui) NaviPanel() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (g *Gui) EditWithEditor() {
|
|
|
|
func (g *Gui) EditWithEditor() {
|
|
|
|
f, err := ioutil.TempFile("", "tson")
|
|
|
|
g.App.Suspend(func() {
|
|
|
|
if err != nil {
|
|
|
|
f, err := ioutil.TempFile("", "tson")
|
|
|
|
log.Println(fmt.Sprintf("can't create temp file: %s", err))
|
|
|
|
if err != nil {
|
|
|
|
g.Message(err.Error(), "main", func() {})
|
|
|
|
log.Println(fmt.Sprintf("can't create temp file: %s", err))
|
|
|
|
return
|
|
|
|
g.Message(err.Error(), "main", func() {})
|
|
|
|
}
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
defer os.RemoveAll(f.Name())
|
|
|
|
f.Close()
|
|
|
|
|
|
|
|
defer os.RemoveAll(f.Name())
|
|
|
|
|
|
|
|
|
|
|
|
if err := g.SaveJSONToFile(f.Name()); err != nil {
|
|
|
|
if err := g.SaveJSONToFile(f.Name()); err != nil {
|
|
|
|
log.Println(fmt.Sprintf("can't write to temp file: %s", err))
|
|
|
|
log.Println(fmt.Sprintf("can't write to temp file: %s", err))
|
|
|
|
g.Message(err.Error(), "main", func() {})
|
|
|
|
g.Message(err.Error(), "main", func() {})
|
|
|
|
return
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if b := g.App.Suspend(func() {
|
|
|
|
|
|
|
|
editor := os.Getenv("EDITOR")
|
|
|
|
editor := os.Getenv("EDITOR")
|
|
|
|
if editor == "" {
|
|
|
|
if editor == "" {
|
|
|
|
log.Println(fmt.Sprintf("$EDITOR is empty: %s", err))
|
|
|
|
log.Println(fmt.Sprintf("$EDITOR is empty: %s", err))
|
|
|
@ -409,12 +409,16 @@ func (g *Gui) EditWithEditor() {
|
|
|
|
}()
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
|
|
// Copy stdin to the pty and the pty to stdout.
|
|
|
|
// Copy stdin to the pty and the pty to stdout.
|
|
|
|
go func() {
|
|
|
|
go io.Copy(ptmx, os.Stdin)
|
|
|
|
io.Copy(ptmx, os.Stdin)
|
|
|
|
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
io.Copy(os.Stdout, ptmx)
|
|
|
|
io.Copy(os.Stdout, ptmx)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f, err = os.Open(f.Name())
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
log.Println(fmt.Sprintf("can't open file: %s", err))
|
|
|
|
|
|
|
|
g.Message(err.Error(), "main", func() {})
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
i, err := UnMarshalJSON(f)
|
|
|
|
i, err := UnMarshalJSON(f)
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
log.Println(fmt.Sprintf("can't read from file: %s", err))
|
|
|
|
log.Println(fmt.Sprintf("can't read from file: %s", err))
|
|
|
@ -423,11 +427,7 @@ func (g *Gui) EditWithEditor() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
g.Tree.UpdateView(g, i)
|
|
|
|
g.Tree.UpdateView(g, i)
|
|
|
|
}); !b {
|
|
|
|
})
|
|
|
|
log.Println(fmt.Sprintf("can't edit: %s", err))
|
|
|
|
|
|
|
|
g.Message(err.Error(), "main", func() {})
|
|
|
|
|
|
|
|
return
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func UnMarshalJSON(in io.Reader) (interface{}, error) {
|
|
|
|
func UnMarshalJSON(in io.Reader) (interface{}, error) {
|
|
|
|