Command line 从命令行对文件执行emacs命令

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

有一个emacs插件()非常有用。但是,我想为每个人(包括我们肮脏的vim用户)提供它的一些功能,并想编写一个包装器:

  • 使用emacs打开文件
  • 对文件执行plugin命令
  • 将文件保存到位
  • 有没有像emacs脚本这样的东西?在那里我可以运行类似于:

    emacs文件.v

    让它在不调用UI的情况下运行

    感谢评论者的回答。我编写了以下lisp脚本:

    (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\”)例如。谢谢大家。我想我已经到了它运行的地步。但其中一个搜索功能不起作用,返回我编辑的问题所包含的错误。