Megpróbálok írni egy Lua függvényt a Neovimhoz, ami néhány Bash parancs segítségével ellenőrzi, hogy fut-e egy folyamat; ha fut, zárja be, és ha nem, futtasson egy új példányt.
Íme, amit eddig sikerült megírnom:
isrunning = vim.cmd([[!pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false"]])
print(isrunning)
if isrunning == "true" then
print('Closing Livereload...')
vim.cmd('!killall livereload')
else
print('Opening Livereload...')
vim.cmd('!cd build; livereload &; firefox http://localhost:35729/"%<.html"')
end
A probléma az, hogy még ha a livereload
már fut, és a isrunning
értéke "true"
, az if utasítás első fele soha nem fut le, csak az else
után van. Mit kell változtatnom a javításhoz?
Frissítés: Íme a :luafile %
kimenete, amikor a fenti kód a Neovim 0.5.0-ban fut:
:!pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false"
true
:!cd build; livereload &; firefox http://localhost:35729/"livereload.html"
opening...
Emiatt arra gondoltam, hogy a második sornak, a true
, a print(isrunning)
parancs kimenetének kell lennie. Miután megbeszéltük a megjegyzéseket, rájöttem, hogy ez nem így van.
Íme a kimenet, amikor a print parancsot print("Answer: " .. isrunning .. "Length: " .. isrunning:len())
-re módosítom
:!pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false"
true
Answer: Length: 0
:!cd build; livereload &; firefox http://localhost:35729/"livereload.html"
opening...
Tehát a Neovim helyesen mutatja a !pgrep -u $UID -x livereload > /dev/null && echo "true" || echo "false"
kimenetét, de úgy tűnik, hogy ez a kimenet nem tárolódik a isrunning
változóban.
isrunning
értéke?print(isrunning, isrunning:len())
10.05.2021