用螺纹钢在Emacs?(Use rebar in emacs?)

2019-08-18 09:15发布

有一个defun中的.emacs获得二郎项目的路径,我怎么能执行一个shell命令执行以下操作:

cd *~/erlang-project-folder*
make

我用钢筋搭建我的项目,并且有一个Makefile做的一切。

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

这里是我的.emacs:

(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)

Answer 1:

而不是依靠目录结构,这是更好地尝试找到rebar.config文件是在项目的根目录下。 这可以用下面的代码来实现:

(defun my-find-rebar-root ()
  (let ((dir (locate-dominating-file default-directory "rebar.config")))
    (or dir default-directory)))

之后,你可以使用这个功能进行编译:

(defun my-inferior-erlang-compile ()
  (interactive)
  (let ((default-directory (my-find-rebar-root)))
    (compile "make")))

虽然,我不知道的是, make是对的命令在这里-也许是更好地使用rebar compile呢?

PS我希望,我会找到一些自由时间,将完成在EDE螺纹钢支持 - 在这种情况下,这将是与项目工作同一个统一的接口。



文章来源: Use rebar in emacs?
标签: emacs erlang