Как правильно использовать отступ Эрланга? - PullRequest
10 голосов
/ 01 ноября 2011

До вчерашнего дня я был счастливым пользователем готового emacs + erlang-mode.Затем мой коллега начал вносить свой вклад в проект (используя некоторый редактор окон), и, похоже, он не очень доволен смешанным режимом отступа, используемым по умолчанию в erlang-mode.Вот пример.Эта часть функции, написанная с использованием авто-отступа в режиме erlang

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 имеет три вкладки.Строка 5 имеет 3 отступа и 4 пробела.Строка 6 имеет 4 вкладки.В результате большинство (тупых) редакторов (в отличие от emacs) отображают строки 5 и 6 (начинающиеся с {ibrowse и {ReqId) на одном уровне отступа.Который выглядит некрасиво.(даже stackoverflow показывает их таким образом).

Я взглянул на несколько известных программных продуктов erlang (например, gproc), и большинство из них, похоже, используют режим отступа только для пробелов.

Итак, мои вопросы:

  1. Я делаю это неправильно (кажется мне вероятным).
  2. Если только пробелы являются преобладающим способом отступа, почему режим erlang не реализует его (или не настроен на использование по умолчанию)?
  3. Как я могу настроить режим erlang для принудительного использования только пробелов?
  4. В конце концов, что такое "правильный путь"?Такие вещи, как совместимость между редакторами, кажется, имеют значение, и мы не можем сделать все редакторы такими же умными, как emacs.

Ответы [ 2 ]

6 голосов
/ 01 ноября 2011

Мне кажется, что сейчас это правильное решение (в ~ / .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

2 голосов
/ 03 ноября 2011

Чтобы вообще отключить вкладки в отступе, не только, но и для режима erlang, используйте:

(set-default 'indent-tabs-mode nil)
...