- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试为游戏中的 lua 控制台制作自动完成和历史记录功能。我被提议使用 readline 库(准确地说,它的 BSD 模拟 libedit,但它具有类似的 api 和 rl 代码构建,但 header 略有变化),我选择的 lua 绑定(bind) lua-rlcompleter with history patches . History 运行良好,但我在 readline 函数方面遇到了一些问题。对于自动完成,我需要将 lua 字符串传递给 readline 函数,但默认情况下此函数从标准输入读取。我找到了 solution将 rl_instream 更改为 FILE*。为此,我创建了 tmpfile 并写入其中。但它工作起来很奇怪,当以这种方式读取字符串时,readline 不返回任何内容。
// This definitions is just example, not working code
// it shows the environment
static FILE *tempfile = tmpfile();
rl_instream = tempfile;
rl_initialize();
static int lreadline(lua_State *L)
{
const char *prompt = lua_tostring(L, 1);
char *line;
if(rl_instream == NULL)
// In case we using stdin
line = readline(prompt);
else{
fputs(prompt, tempfile);
/* maybe I need a fseek here? It not helps though.
* fseek(tempfile, -strlen(prompt), SEEK_CUR);
*/
line = readline(NULL);
}
lua_pushstring(L, line);
free(line);
return 1;
}
我不确定发生了什么,但认为它可能与 readline 函数在文件中的读取位置有某种关系。我试图阅读 libedit 的源代码,但我的代码无法按预期工作的原因是没有意义的。由于使用 eclipse 调试共享库时出现问题,我无法对此进行调试,但计划使用纯 gdb,不确定它是否有帮助。
此外,也许我做错了,还有另一种简单的方法可以在基于 lua 的控制台模拟器中自动完成和历史记录?
最佳答案
如果您在使用 libedit
时仍然遇到问题,请查看 linenoise
关于c - Readline (libedit) 非标准输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291278/
我正在尝试为游戏中的 lua 控制台制作自动完成和历史记录功能。我被提议使用 readline 库(准确地说,它的 BSD 模拟 libedit,但它具有类似的 api 和 rl 代码构建,但 hea
我正在尝试根据 https://docs.microsoft.com/en-us/sql/connect/php/installation-tutorial-linux-mac?view=sql-se
我不确定这根本是 Linux 问题还是 J 特定问题。 背景 我正在尝试让 j804 在 linux docker 容器中工作。我正在按照此处的说明进行操作: https://code.jsoftwa
我想从 http://www.linuxfromscratch.org/blfs/view/svn/postlfs/openssh.html 安装 openssh (我不想在 yum 中使用包) --
我对管理服务器(在 linode VPS 上进行沙盒开发)还很陌生,而且我已经有一段时间没有运行更新了。 我只是决定以 root 身份登录并运行“yum update”来更新盒子上的所有软件包。我正在
尝试在 macosx 上构建 Term-Readline-Gnu,但未能提示 libedit 并建议使用 gnu readline。我该怎么做? 这是我尝试过的尝试之一: 首先我静态构建了 GNU l
来自 the readline module documentation ,它提到: On MacOS X the readline module can be implemented using t
我一直在尝试在运行 Lion 的 Mac 上设置 ipython 3(运行 2.7 工作正常),但似乎无法摆脱以下错误: 192:~ mlauria$ /Library/Frameworks/Pyth
我是一名优秀的程序员,十分优秀!