gpt4 book ai didi

emacs - 在 emacs 中使用钢筋?

转载 作者:行者123 更新时间:2023-12-02 00:10:31 24 4
gpt4 key购买 nike

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

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)

最佳答案

与其依赖目录结构,不如尝试找到位于项目根目录中的 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 中的 rebar 支持——在这种情况下,它将是用于项目工作的相同统一界面。

关于emacs - 在 emacs 中使用钢筋?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727051/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com