在一台PC上测试集群记忆时,我必须为一个"Mac lion"用户创建许多erlang节点。因为它们为同一用户共享相同的".erlang"
,所以我无法通过".erlang"
文件传递助记符。对于 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 inferior-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 配置数据不同。
我猜你需要在参数列表中将-mnesia
和dir
放在单独的字符串中,并且还需要用双引号将目录括起来,当然你必须在Emacs Lisp中转义:
(setq inferior-erlang-machine-options '("-name" "emacs" "-mnesia" "dir" ""/Users/yuchen/Documents/Project/mnesia_db"") )