консольная утилита для форматирования кода Erlang

132 views
Skip to first unread message

Yuri Zhloba

unread,
Oct 16, 2012, 2:33:59 PM10/16/12
to erlang-...@googlegroups.com
Привет народ.

Заинтересовался я проблемой форматирования кода Erlang. В принципе, стандартом де-факто можно считать то, что делает erlang-indent-current-buffer из erlang-mode Emacs. За неимением ничего лучшего. Но к этому форматированию есть претензии.

Например то, что форматирование никак не настраивается. erlang-mode делает то, что он делает, и нам остается только принять это как есть. Или то, что он использует и табы, и пробелы, что приводит в ярость некоторых разработчиков :)

Подскажите, есть ли альтернативы? В идеале нужна консольная утилита, работающая как фильтр (со стандартного ввода на стандартный вывод). Что-то вроде этого http://gofmt.com/ Ее можно будет подключить к любому редактору или повесить хуком в системе контроля версий.

А если похожей утилиты нет, но кто-нибудь (например я), написал бы ее, много ли найдется желающих ей пользоваться?

Serge Matveenko

unread,
Oct 16, 2012, 3:18:00 PM10/16/12
to erlang-...@googlegroups.com
2012/10/16 Yuri Zhloba <yzh4...@gmail.com>:

> повесить хуком в системе контроля версий

и лишиться за это рук


--
Serge Matveenko
mailto: se...@matveenko.ru
github: http://lnkfy.com/1
linkedin: http://lnkfy.com/S

Aleksey Kishkin

unread,
Oct 16, 2012, 3:18:22 PM10/16/12
to erlang-...@googlegroups.com
Можно посмотреть как сделано в vimerl. Там форматирует отдельная escript-овская утилита, которй vim подсовывает текст и забирает результат через fifo файлы. И кторую кстати можно просто натравить на файл.

Alexey Kishkin



2012/10/16 Yuri Zhloba <yzh4...@gmail.com>

--
--
Страница рассылки: http://groups.google.com/group/erlang-russian
Новости: http://erlanger.ru
Чат: xmpp://erl...@conference.jabber.ru
Чат для оффтопа: xmpp://erlang...@conference.jabber.ru
 
Написать письмо: erlang-...@googlegroups.com
Отписаться: erlang-russia...@googlegroups.com
 
 

Yuri Zhloba

unread,
Oct 16, 2012, 3:32:49 PM10/16/12
to erlang-...@googlegroups.com
А я смотрю, отрывание рук, прям навязчивая идея у некоторых )

Пасиб, гляну на vimerl

Еще вот такая вещь есть http://erlang.org/doc/man/erl_tidy.html , но
говорят, что портит комментарии и spec директивы

JLarky

unread,
Oct 16, 2012, 3:35:05 PM10/16/12
to erlang-...@googlegroups.com
Мне тоже показалось, что у Питонщиков где-то в http://docs.python.org/
прописано про отрывание рук как эффективный способ программирования.
Кстати в vimerl я этого не нашёл, там вроде стандартными vim методами
всё решено.

2012/10/16 Yuri Zhloba <yzh4...@gmail.com>:

Aleksey Kishkin

unread,
Oct 16, 2012, 3:36:44 PM10/16/12
to erlang-...@googlegroups.com

Serge Matveenko

unread,
Oct 16, 2012, 3:37:03 PM10/16/12
to erlang-...@googlegroups.com
2012/10/16 Yuri Zhloba <yzh4...@gmail.com>:

> А я смотрю, отрывание рук, прям навязчивая идея у некоторых )

Любимая метафора, скорее:)

Мне просто кажется, что вы сами поняли, что написали лишнее, и идея
автоматически переформатировать код хуком в системе контроля версий
вам, на самом деле, самому не нравится.

Yuri Zhloba

unread,
Oct 16, 2012, 4:45:13 PM10/16/12
to erlang-...@googlegroups.com
Вот так можно:

#!/bin/sh

emacs --batch --eval "(progn
(add-to-list 'load-path \"/usr/local/lib/erlang/lib/tools-2.6.8/emacs\")
(setq erlang-root-dir \"/usr/local/lib/erlang\")
(add-to-list 'exec-path \"/usr/local/lib/erlang/bin\")
(require 'erlang-start)
(find-file \"/home/yura/tmp/users.erl\")
(erlang-indent-current-buffer)
(save-buffer))"

Gleb Peregud

unread,
Oct 16, 2012, 4:46:58 PM10/16/12
to erlang-...@googlegroups.com
Было бы классно если бы кто-то пофиксил erl_tidy а не писал что-то новое :)

Timofey Koolin

unread,
Oct 16, 2012, 5:32:00 PM10/16/12
to erlang-...@googlegroups.com
Jetbrains сделали erlang-плагин к своей среде IDEA, там в том числе можно настраивать параметры автоформатирования кода.

JLarky

unread,
Oct 16, 2012, 7:53:51 PM10/16/12
to erlang-...@googlegroups.com
Думаю часть проблемы в том, что не все пишущие на erlang пишут в
каком-то одном редакторе. Если бы go сделали бы плагин для редактора
вместо go fmt то это был бы самый популярный в среде core
разработчиков редактор acme, я конечно понимаю, что emacs немножко
популярнее, но внешний тул на то и внешний тул чтобы можно было не
ругаться и всем [ОС и редакторам] пользоваться лучшим.

2012/10/16 Serge Ziryukin <ftrv...@gmail.com>:
> Идея не нова, но не думаю, что это будет популярно.
> Этой тулзени надо было появится в самом начале пути Erlang в мир open
> source, так как стилей написания кода сейчас далеко не один (де-факто не
> существует даже в рамках использования erlang-mode), тогда как в Go стиль
> отчасти диктуется самим компилятором.
> Мне кажется, лучше допилить erlang-mode, добавить в него пару variables для
> специфических вещей (например, ставить ли запятую в многострочном -export
> перед именами или после) и спокойно добавлять в конец файла Local Variables.

Yuri Zhloba

unread,
Oct 17, 2012, 2:17:34 AM10/17/12
to erlang-...@googlegroups.com
"Jetbrains сделали erlang-плагин к своей среде IDEA"

именно поэтому и возник вопрос :)

Подробности тут
https://plus.google.com/u/0/111796213623287288776/posts/BiuFW8qatsM

Yuri Zhloba

unread,
Oct 17, 2012, 2:18:10 AM10/17/12
to erlang-...@googlegroups.com
"Было бы классно если бы кто-то пофиксил erl_tidy а не писал что-то новое :)"

гм, правильная мысль

Sergey Prochorov

unread,
Oct 17, 2012, 7:26:24 AM10/17/12
to erlang-...@googlegroups.com
Насчет питона могу рассказать. Есть набор правил форматирования кода, называется pep8. Есть утилита, которая только ПРОВЕРЯЕТ файл на соответствие этой спецификации. Её я подключаю к flymake и подправляю варнинги сразу в процессе написания кода. Считаю что этого более чем достаточно. (Ну, если быть совсем точным, то я подключаю не только pep8 но и еще несколько линтеров - pylint, pyflakes).
Автоматический форматтер по pep8 появился буквально месяц-два назад и, насколько мне известно, особой популярностью не пользуется.

Насчет того что емакс ставит и табы и пробелы - исправляется (indent-tabs-mode nil), если не ошибаюсь.

Max Lapshin

unread,
Oct 17, 2012, 8:03:51 AM10/17/12
to erlang-...@googlegroups.com
Сдается мне, что мне не понравится ни один вариант, который предложат =)

Я привык к руби: 2 пробела.

Yuri Zhloba

unread,
Oct 17, 2012, 8:22:10 AM10/17/12
to erlang-...@googlegroups.com
ну тебе то попробуй угоди )

JLarky

unread,
Oct 17, 2012, 9:06:18 AM10/17/12
to erlang-...@googlegroups.com
И я опять скажу, что молодцы в go что сделали идентацию табом, а
каждый может в своём редакторе поставить ширину таба как им будет
угодно.
С эрлангом же мне кажется проблема в том, что там отступы не кратные,
то есть дефолтный емакс делает типа http://pastebin.com/R2vWLn60
когда в одном случае отступ перед true будет 10 символов, в другом 15,
то есть это за гранью добра и зла не важно нравится ли тебе 2, 4 или 8
пробелов на таб.

2012/10/17 Max Lapshin <max.l...@gmail.com>:


> Сдается мне, что мне не понравится ни один вариант, который предложат =)
>
> Я привык к руби: 2 пробела.
>

Reply all
Reply to author
Forward
0 new messages