До вчерашнего дня я был счастливым пользователем готового emacs + erlang-mode. Затем мой коллега начал участвовать в проекте (используя какой-либо редактор окон), и, похоже, он не очень доволен смешанным режимом отступа, который по умолчанию используется 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), и большинство из них, похоже, используют режим отступов только для пробелов.
Итак, мои вопросы:
- Я делаю это неправильно (кажется мне вероятным).
- Если только пробелы являются преобладающим способом отступов, почему erlang-mode не реализует его (или не настроен на его использование по умолчанию)?
- Как настроить erlang-mode для принудительной простоты?
- Что означает "правильный путь"? Такие вещи, как совместимость с перекрестным редактором, кажутся важными, и мы не можем сделать все редакторы такими же умными, как emacs.