-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Open
Description
Description
Micro crashes in onBufferOpen(), onBufPaneOpen(), postinit(), preinit(), and init() if you attempt to run an interactive shell (RunInteractiveShell()) before signal setup is complete (cmd/micro/micro.go:447).
-- USE COMMAND: micro -filetype myuniquespecialfiletype
function postinit()
local bp = micro.CurPane()
if bp then
local ft = bp.Buf.Settings["filetype"]
if ft == "myuniquespecialfiletype" then
-- This was a call to bp:HandleCommand() with my plugin,
-- but the crash was actually caused by the shell.RunInteractiveShell()
-- call.
-- bp:HandleCommand("myplugin")
shell.RunInteractiveShell("fzf-for-example", true, true)
bp:QuitAll()
end
endCrash:
Plugin test: os/signal: Notify using nil channel
stack traceback:
[G]: in function 'HandleCommand'
main:17: in main chunk
[G]: ?
I attempted to use AfterFunc() from the time package, but it triggered a different type of crash.
function postinit()
local gotime = import("time")
gotime.AfterFunc(4 * gotime.Second, function()
local bp = micro.CurPane()
if bp then
local ft = bp.Buf.Settings["filetype"]
if ft == "myuniquespecialfiletype" then
shell.RunInteractiveShell("fzf-for-example", true, true)
bp:QuitAll()
end
end
end)
endMicro encountered an error: runtime.errorString runtime error: invalid memory address or nil pointer dereference
runtime/panic.go:262 (0x472b19)
runtime/panic.go:261 (0x472ae9)
github.com/zyedidia/micro/v2/cmd/micro/micro.go:490 (0x94bb41)
github.com/zyedidia/micro/v2/cmd/micro/micro.go:481 (0x94ba50)
internal/runtime/atomic/types.go:194 (0x43bc6b)
runtime/asm_amd64.s:1700 (0x478de1)
Using After() from micro's LuaTable resolved the issue (this presumably waits until all setup is complete).
Environment
- Version: 2.0.15 release
- OS: Linux
- Terminal: all
Reactions are currently unavailable