2

在一台 pc 上测试集群 mnesia 时,我必须为一个“Mac lion”用户创建许多 erlang 节点。因为它们".erlang"为同一个用户共享相同的内容,所以我无法通过".erlang"文件传递 mnesia。对于emacs erlang shell,我想通过.emacs文件传递mnesia目录配置,所以要修改distel的相关escript代码。

(add-hook 'erlang-mode-hook
      (lambda ()
        ;; when starting an Erlang shell in Emacs, default in the node name
        ; (setq inferior-erlang-machine-options '("-name" "emacs"))
        (setq inferior-erlang-machine-options '("-name" "emacs""-mnesia dir" "/Users/yuchen/Documents/Project/mnesia_db") )
             ;;added by chenyu 2012/04/08 
             (set (make-local-variable 'compile-command) (format "make -f %s" (get-closest-pathname)))
        ;; add Erlang functions to an imenu menu
        (imenu-add-to-menubar "imenu")))

在上面的代码中,name=emacs是可以的,但mnesia dir不是有效的。

(setq lower-erlang-machine-options '("-name" "emacs""-mnesia dir" "/Users/yuchen/Documents/Project/mnesia_db") )

节点启动后,我检查了mnesia路径配置。

(emacs@yus-iMac.local)12> mnesia:system_info(directory).
"/Users/yuchen/Mnesia.emacs@yus-iMac.local"

它与我的 .emacs 配置数据不同。

4

1 回答 1

1

我猜您需要在参数列表中放入-mnesia单独dir的字符串,并且还需要将目录用双引号括起来,当然您必须在 Emacs Lisp 中转义:

(setq inferior-erlang-machine-options '("-name" "emacs" "-mnesia" "dir" "\"/Users/yuchen/Documents/Project/mnesia_db\"") )
于 2012-05-22T09:51:47.297 回答