直到昨天,我还是一个开箱即用的emacs + erlang-mode的用户。然后我的同事开始为该项目做贡献(使用一些Windows编辑器),似乎他对erlang-mode默认使用的混合缩进模式不太满意。 这是一个例子。这是函数的一部分,在erlang-mode
上使用自动缩进编写handle_info(get_gss_latest_versions, State) ->
GetReqIds = fun(Branch) ->
GetInfoUri = State#state.gss_uri ++ Branch ++ "/api/getinfo",
case ibrowse:send_req(GetInfoUri, [], get, [], [{stream_to, self()}]) of
{ibrowse_req_id, ReqId} ->
{ReqId, Branch};
{error, Reason} ->
如果你仔细看一下,你会看到第2行(以GetReqIds开头)缩进4个空格。第3行缩进3个制表符。第5行缩进,有3个标签+4个空格。第6行缩进4个标签。因此,大多数(哑)编辑器(与emacs不同)显示第5行和第6行(以{ibrowse和{ReqId}开头的行在同一缩进级别)。哪个看起来很难看。 (甚至stackoverflow以这种方式显示它们)。
我看了几个着名的erlang软件(比如gproc),其中大多数似乎都使用了仅限空格的缩进模式。
所以我的问题是:
答案 0 :(得分:6)
这对我来说似乎是正确的解决方案,目前(放入〜/ .emacs):
(add-hook 'erlang-mode-hook '(lambda() (setq indent-tabs-mode nil)))
我从这里无耻地复制它: http://erlang.2086793.n4.nabble.com/erlang-mode-emacs-tabs-vs-spaces-td2096289.html
答案 1 :(得分:2)
通常禁用indention中的标签,不仅是erlang模式,还可以使用:
(set-default 'indent-tabs-mode nil)