Как правильно делать отступы от Erlang?

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

Поэтому мои вопросы:

  1. Делаю ли я это неправильно (мне кажется вероятным).
  2. Если преобладающим способом отступа является только пробелы, почему erlang-mode не реализует его (или не настроен на его использование по умолчанию)?
  3. Как настроить режим erlang для принудительного ввода только пробелов?
  4. В конце концов, каков «правильный путь»? Такие вещи, как совместимость с кросс-редакторами, кажется, имеют значение, и мы не можем сделать всех редакторов такими же умными, как emacs.
10
задан loxs 1 November 2011 в 11:01
поделиться