plugins/console: command history (nw)

This commit is contained in:
cracyc 2019-02-17 09:07:56 -06:00
parent 764f04c317
commit 836abb0d63
3 changed files with 26 additions and 2 deletions

View file

@ -135,7 +135,7 @@
#include "linenoise.h"
#include "utf8.h"
#define LINENOISE_DEFAULT_HISTORY_MAX_LEN 100
#define LINENOISE_DEFAULT_HISTORY_MAX_LEN 200
#define LINENOISE_MAX_LINE 4096
#define ctrl(C) ((C) - '@')

View file

@ -175,12 +175,26 @@ static int l_refresh(lua_State *L)
return handle_ln_ok(L);
}
static int l_historyget(lua_State *L)
{
int len, i;
char **history = linenoiseHistory(&len);
lua_newtable(L);
for(i = 0; i < len; i++)
{
lua_pushstring(L, history[i]);
lua_rawseti(L, -2, i + 1);
}
return 1;
}
luaL_Reg linenoise_funcs[] = {
{ "linenoise", l_linenoise },
{ "historyadd", l_historyadd },
{ "historysetmaxlen", l_historysetmaxlen },
{ "historysave", l_historysave },
{ "historyload", l_historyload },
{ "historyget", l_historyget },
{ "clearscreen", l_clearscreen },
{ "setcompletion", l_setcompletion},
{ "addcompletion", l_addcompletion },

View file

@ -18,6 +18,16 @@ function console.startplugin()
local matches = {}
local lastindex = 0
local consolebuf
_G.history = function (index)
local history = ln.historyget()
if index then
ln.preload(history[index])
return
end
for num, line in ipairs(history) do
print(num, line)
end
end
print(" _/ _/ _/_/ _/ _/ _/_/_/_/");
print(" _/_/ _/_/ _/ _/ _/_/ _/_/ _/ ");
print(" _/ _/ _/ _/_/_/_/ _/ _/ _/ _/_/_/ ");
@ -28,7 +38,7 @@ function console.startplugin()
-- linenoise isn't thread safe but that means history can handled here
-- that also means that bad things will happen if anything outside lua tries to use it
-- especially the completion callback
ln.historysetmaxlen(10)
ln.historysetmaxlen(50)
local scr = [[
local ln = require('linenoise')
ln.setcompletion(function(c, str, pos)