Command line 从命令行对文件执行emacs命令
有一个emacs插件()非常有用。但是,我想为每个人(包括我们肮脏的vim用户)提供它的一些功能,并想编写一个包装器:Command line 从命令行对文件执行emacs命令,command-line,emacs,Command Line,Emacs,有一个emacs插件()非常有用。但是,我想为每个人(包括我们肮脏的vim用户)提供它的一些功能,并想编写一个包装器: 使用emacs打开文件 对文件执行plugin命令 将文件保存到位 有没有像emacs脚本这样的东西?在那里我可以运行类似于: emacs文件.v 让它在不调用UI的情况下运行 感谢评论者的回答。我编写了以下lisp脚本: (defun vexpand () "run verilog-auto on all AUTO* blocks in file at fullpath
(defun vexpand ()
"run verilog-auto on all AUTO* blocks in file at fullpath FPATH ..."
(let (mybuffer)
(setq mybuffer (find-file (elt argv 1)))
(verilog-auto)
(save-buffer)
(kill-buffer mybuffer)))
(vexpand fpath)
但是你可以得到:
Search failed: "\\<\\(end\\(?:c\\(?:lass\\|on\\(?:fig\\|nectmodule\\)\\)\\|interface\\|module\\|p\\(?:ackage\\|r\\(?:imitive\\|ogram\\)\\)\\)\\)\\>"
搜索失败:“\\”
如果我在emacs中手动打开文件并评估verilog auto函数,我怀疑它无法正确打开该文件,因为该调用工作
您知道上面的脚本有什么问题吗?请参阅
--batch
选项。您还需要一些初始化代码来加载插件(请参见--load
),另一个加载文件(将包含要运行的函数)和一些执行代码来评估执行必要操作的函数(请参见--eval
)。因此该命令看起来像这样:emacs--batch--load=plugin.el--load=my-funcs.el--eval=my-func file.v
@jkang,符号的函数定义无效:fpath
是由于对(vexpand fpath)
的最后一行调用引起的,由于您尚未定义fpath
。您可能会发现--script
是您想要的,而不是--batch
。这需要一些阅读,但我建议大家通读一遍,以便更好地理解(有点复杂)编写健壮的elisp脚本的方法。--eval=vexpand
也无效。这需要是一个lisp表达式<代码>--eval“(vexpand\'foo\”)例如。谢谢大家。我想我已经到了它运行的地步。但其中一个搜索功能不起作用,并返回我编辑的问题所包含的错误。请参阅--batch
选项。您还需要一些初始化代码来加载插件(请参见--load
),另一个加载文件(将包含要运行的函数)和一些执行代码来评估执行必要操作的函数(请参见--eval
)。因此该命令看起来像这样:emacs--batch--load=plugin.el--load=my-funcs.el--eval=my-func file.v
@jkang,符号的函数定义无效:fpath
是由于对(vexpand fpath)
的最后一行调用引起的,由于您尚未定义fpath
。您可能会发现--script
是您想要的,而不是--batch
。这需要一些阅读,但我建议大家通读一遍,以便更好地理解(有点复杂)编写健壮的elisp脚本的方法。--eval=vexpand
也无效。这需要是一个lisp表达式<代码>--eval“(vexpand\'foo\”)例如。谢谢大家。我想我已经到了它运行的地步。但其中一个搜索功能不起作用,返回我编辑的问题所包含的错误。