首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在emacs中使用rebar?

在emacs中使用rebar?
EN

Stack Overflow用户
提问于 2013-03-31 14:38:55
回答 1查看 870关注 0票数 3

在.emacs中有一个外壳来获取erlang项目路径,我如何执行defun命令来完成以下操作:

代码语言:javascript
复制
cd *~/erlang-project-folder*
make

我正在使用rebar来构建我的项目,并且有一个Makefile来做所有的事情。

我可以通过重写erlang-compile-function来编译,但是我不熟悉Emacs Lisp,请帮助我。

这是我的.emacs:

代码语言:javascript
复制
(defun erlang-project-dir ()
  (let* ((src-path (file-name-directory (buffer-file-name)))
         (pos (string-match "/src/" src-path)))
    (if pos (substring src-path 0 (+ 1 pos)) src-path)))

;; there is an error: wrong type argument: commandp
(defun my-inferior-erlang-compile ()
  (shell-command.
    (concat (concat (concat "cd" erlang-project-dir) "; make"))))

(defvar erlang-compile-function 'my-inferior-erlang-compile)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-31 16:29:03

与其依赖目录结构,不如尝试找到项目根目录下的rebar.config文件。这可以通过以下代码来实现:

代码语言:javascript
复制
(defun my-find-rebar-root ()
  (let ((dir (locate-dominating-file default-directory "rebar.config")))
    (or dir default-directory)))

在此之后,您可以使用此函数进行编译:

代码语言:javascript
复制
(defun my-inferior-erlang-compile ()
  (interactive)
  (let ((default-directory (my-find-rebar-root)))
    (compile "make")))

不过,我不确定这里的make命令是否正确--也许使用rebar compile更好?

另外,我希望我能找到一些空闲的时间,在EDE中完成对钢筋的支持-在这种情况下,它将是与项目工作相同的统一界面。

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

https://stackoverflow.com/questions/15727051

复制
相关文章

相似问题

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