目前是 (neo)vim 用户,我读到 VS Code 支持 Neovim 后端集成,但搜索后我找不到如何设置它。
有人可以解释如何在 VS Code 中设置 Neovim 集成吗?
谢谢你。
PS:我同时使用 linux 和 windows,所以如果有一些操作系统特性,你可以提到它。
我刚刚安装了BER MetaOCaml,其中包括:
$ opam update
$ opam switch 4.02.1+BER
$ eval `opam config env`
Run Code Online (Sandbox Code Playgroud)
而且我无法在tuareg toplevel中运行MetaOCaml代码或只是ocaml toplevel.以下代码:
let a = .<1+2>.;;
Run Code Online (Sandbox Code Playgroud)
结果是
Error: Reference to undefined global `Trx'
Run Code Online (Sandbox Code Playgroud)
我试过#load "trx.cma"但它找不到文件.
答案编辑:
metaocaml是正确的可执行文件.
添加后:
`(defun tuareg-run-metaocaml ()
"Run an OCaml toplevel process. I/O via buffer `*ocaml-toplevel*'."
(interactive)
(tuareg-run-process-if-needed
"/usr/bin/opam config exec -- metaocaml")
(display-buffer tuareg-interactive-buffer-name))
(add-hook 'tuareg-mode-hook
' (lambda ()
(define-key tuareg-mode-map (kbd "C-c M-s")
'tuareg-run-metaocaml)))`
Run Code Online (Sandbox Code Playgroud)
对于我的.emacs,我现在可以运行MetaOCaml了C-c M-s.
我喜欢OCaml,我正在等待我的Real World OCaml副本!我是初学OCaml程序员,只知道功能部分,有点必要,但对模块,仿函数,对象等并不多...
对于某种翻译项目,我做了类似新手emacs的评估.我保留一个三元组列表,其中包含一个命令名绑定列表作为字符串,一个描述字符串和要调用的ocaml函数.主循环只查找列表中的匹配条目并调用该函数.
然后,它是非常简单的添加新functionnalities,你只写一个函数,并把在列表中的条目.
我喜欢像Emacs这样可自我扩展的概念,这很容易扩展,但不能真正自我扩展.
我可以使用OCaml自行扩展程序吗?我该怎么办?
我知道Emacs是如何工作的,它是一个很大的虚拟机,因此它可以解释代码并自行修改它的运行时环境,但有没有办法通过用户添加的模块为OCaml程序添加功能?或者是其他东西 ?
ps:如果我的项目听起来很基本但我是初学者,请不要嘲笑我!
谢谢
我正在尝试制作一个"脚本" - 本质上是一个awk命令 - 在.c文件中提取C代码函数的原型,以自动生成一个头.h.我是awk的新手,所以我没有得到所有细节.
这是源.c的示例:
dict_t dictup(dict_t d, const char * key, const char * newval)
{
int i = dictlook(d, key);
if (i == DICT_NOT_FOUND) {
fprintf(stderr, "key \"%s\" doesn't exist.\n", key);
dictdump(d);
}
else {
strncpy(d.entry[i].val, newval, DICTENT_VALLENGTH);
}
return d;
}
dict_t* dictrm(dict_t* d, const char * key) {
int i = dictlook(d, key);
if (i == DICT_NOT_FOUND) {
fprintf(stderr, "key \"%s\" doesn't exist.\n", key);
dictdump(d);
}
else {
d->entry[i] = d->entry[--d.size];
}
if ( ((float)d->size)/d.maxsise …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MetaOCaml,所以我做了以下出色的代码:
#let a = .<1>.;;
val a : int code = .<1>.
# let b = !. a;;
Error: Unbound value !.
# let b = .!a;;
Error: Syntax error
Run Code Online (Sandbox Code Playgroud)
为什么不起作用?
另外,我也尝试过!.,.!因为我在网站上都看过这两个网站,但不知道哪一个是正确的网站。
这是实际的宏:
#ifdef DEBUG
#define debug(funcname, format, ...) \
printf(BOLD UNDERLINED REVERSE \
"DEBUG IN " __FILE__ \
" LINE " __LINE__ ":" \
RESET UNDERLINED REVERSE \
"In " funcname \
RESET REVERSE format RESET, ##__VA_ARGS__)
#else
#define debug(funcname, format, ...)
#endif
Run Code Online (Sandbox Code Playgroud)
所有使用的常量都是明确定义的字符串常量.我称之为:
char message[] = "Hello StackOverflow !\n";
debug("main()", "Message: %s\n", message);
Run Code Online (Sandbox Code Playgroud)
但是我收到了消息
error: expected ‘)’ before numeric constant
debug("main()", "Message: ", message); 在最后的括号中徘徊.
这很奇怪,因为我第一次测试宏,现在项目已经与团队一起推进它不起作用......
我打印的结果S_ISDIR(info->st_mode)和S_ISREG(info->st_mode)包含带.so扩展名的动态库的目录,结果非常令人惊讶,S_ISREG返回0时S_ISDIR返回1.
我有一点困惑...
代码:
DIR *dir;
if ((dir = opendir (dirname)) != NULL) {
struct dirent *ent;
while ((ent = readdir (dir)) != NULL) {
struct stat info;
stat(ent->d_name, &info);
printf("file: %s, S_ISREG: %d, S_ISDIR: %d", ent->d_name, S_ISREG(info.st_mode), S_ISDIR(info.st_mode));
}
}
closedir(dir);
Run Code Online (Sandbox Code Playgroud)
输出如下:
file: ., S_ISREG: 0, S_ISDIR: 1
file: zyva.so, S_ISREG: 0, S_ISDIR: 1
file: .gitignore, S_ISREG: 1, S_ISDIR: 0
file: .., S_ISREG: 0, S_ISDIR: 1
file: plugin-app, …Run Code Online (Sandbox Code Playgroud)