在.emacs中有一个外壳来获取erlang项目路径,我如何执行defun命令来完成以下操作:
cd *~/erlang-project-folder*
make我正在使用rebar来构建我的项目,并且有一个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)发布于 2013-03-31 16:29:03
与其依赖目录结构,不如尝试找到项目根目录下的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更好?
另外,我希望我能找到一些空闲的时间,在EDE中完成对钢筋的支持-在这种情况下,它将是与项目工作相同的统一界面。
https://stackoverflow.com/questions/15727051
复制相似问题