diff --git a/cmd/micro/micro.go b/cmd/micro/micro.go index 44596a391b..e0c409e138 100644 --- a/cmd/micro/micro.go +++ b/cmd/micro/micro.go @@ -290,6 +290,11 @@ func checkBackup(name string) error { } func exit(rc int) { + err := config.RunPluginFn("deinit") + if err != nil { + screen.TermMessage(err) + } + for _, b := range buffer.OpenBuffers { if !b.Modified() { b.Fini() @@ -387,9 +392,6 @@ func main() { defer func() { if err := recover(); err != nil { - if screen.Screen != nil { - screen.Screen.Fini() - } if e, ok := err.(*lua.ApiError); ok { fmt.Println("Lua API error:", e) } else { diff --git a/runtime/help/plugins.md b/runtime/help/plugins.md index 27d099973a..c61d59905a 100644 --- a/runtime/help/plugins.md +++ b/runtime/help/plugins.md @@ -55,7 +55,8 @@ that micro defines: * `postinit()`: initialization function called after the `init()` function of all plugins has been called. -* `deinit()`: cleanup function called when your plugin is unloaded or reloaded. +* `deinit()`: cleanup function called when your plugin is unloaded, reloaded or + micro exited. * `onBufferOpen(buf)`: runs when a buffer is opened. The input contains the buffer object.