首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从命令行自动缩进.lisp文件,并使用slimv执行缩进

从命令行自动缩进.lisp文件,并使用slimv执行缩进
EN

Stack Overflow用户
提问于 2012-07-05 12:50:22
回答 1查看 669关注 0票数 3

我试图从命令行自动缩进一个.lisp文件,利用vim+slimv来进行缩进。

我试着编写脚本:

代码语言:javascript
复制
vi -c 'call SlimvConnectSwank()' -c 'normal gg=G' -c 'wq' -c 'q!' temp.lisp

但是swank服务器不会被查询来执行缩进,所以这只是将文件缩进到.lisp vim的默认值(如果slimv和服务器没有运行)。

我是否需要在调用之后添加某种延迟/等待-c命令才能连接到swank服务器?似乎整个vi进程关闭得太快了,而且也没有给swank一个连接的机会。如果swank连接发生在单独的线程上,我想情况可能是这样的。

感谢您的想法/意见/建议。

谢谢!

塔玛斯明白了。它是(我检查了这一点,这两个命令实际上都是需要的;真的:)一个睡眠命令和swank命令让它工作。

我将此代码添加到我的.bashrc中,并将其别名为'ai‘,这样我就可以从命令行轻松地缩进.lisp文件:

代码语言:javascript
复制
alias ai="vi \
        -c 'call SlimvConnectSwank()' \
        -c 'sleep 1' \
        -c 'call SlimvEval(['0'])' \
        -c 'normal gg=G' \
        -c 'wq' \
        -c 'q!'"

现在'ai temp.lisp‘自动缩进temp.lisp到slimv+vim+swank等标准。

如果你有bash命令来对一个文件进行自动缩进,那么你可以通过各种方式来编写脚本来自动缩进一个lisp文件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-05 16:54:47

整个过程是单线程的,所以不需要增加延迟,每个命令都应该在下一个命令执行之前完成。您可以通过以下命令验证Slimv是否负责缩进:

vi -c "call SlimvConnectSwank()" -c "setlocal indentexpr?" temp.lisp

它应该打印indentexpr=SlimvIndent(v:lnum)

我怀疑您的temp.lisp中有一些影响缩进的定义。首先必须将这些定义告知swank服务器,否则swank服务器不知道例如函数参数等。记住:整个过程是动态的,运行时信息用于缩进表单。

所以我认为首先你需要对整个缓冲区求值,然后再进行缩进。您可以使用以下命令:

vi -c "call SlimvConnectSwank()" -c "call SlimvEvalBuffer()" -c "normal gg=G" -c "wq" -c "q!" temp.lisp

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11337986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档