The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Google выпустил плагин для форматирования кода в Vim

23.01.2015 12:15

Разработчики из компании Google анонсировали новый открытый проект vim-codefmt, в рамках которого подготовлена утилита для автоматической расстановки отступов и форматирования кода с учётом синтаксиса используемого языка программирования. Утилита может использоваться как плагин для обеспечения форматирования кода в редакторе Vim. Поддерживаются две команды ":FormatLines" для форматирования диапазона строк и ":FormatCode" для форматирования буфера целиком. Обеспечена поддержка языков C++, JavaScript, Protocol Buffers и Go.

Например, при использовании vim-codefmt строка


   int foo(int * x) { return * x** x ; }

будет переоформлена в


   int foo(int* x) { return *x * *x; }


  1. Главная ссылка к новости (http://google-opensource.blogs...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/41524-vim
Ключевые слова: vim, format
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (81) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, _KUL (ok), 12:35, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    10 человек, которые пишут код, могут форматировать код 10 вариантами, и ни один из вариантов не может являтся тождественно истинным.
     
     
  • 2.2, ананим.orig (?), 12:49, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +14 +/
    Да никому и не нужен "истинный" код (это программирование, а не код давинчи).
    Нужен единообразный.
     
     
  • 3.64, _KUL (ok), 02:51, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Че к чему заминусовали. Если человек пишет всю жизнь
    test() {
    }
    То почему его могут заставлять писать
    test()
    {
    }
    По мне так, форматирование, это как почерк, имеет право отличаться.
     
     
  • 4.65, red (??), 05:37, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +10 +/
    если пишешь для себя, то можешь писать хоть
    test (
    ) {
    }
    а если в проекте даже всего несколько человек, то будь добр, соблюдай принятые соглашения о форматировании. Иначе код превратится в невразумимое нечто.
     
     
  • 5.73, Аноним (-), 20:56, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Уважаемые энтерпрайз проектанты, откройте для себя uncrustify, artictic style и им подобных и не мучайте народ :)
     
  • 4.69, o (?), 09:19, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Профессионал должен моч писать любым почерком. Каким надо таким и писать без проблем и притензий
     
     
  • 5.70, тоже Аноним (ok), 12:30, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Профессионал должен не только моч, но и умет!
    Каким притензий надо таким и моч!
     
  • 4.77, Аноним (-), 08:53, 25/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    не имеет. В нормальных языках прописано как надо форматировать код.
    Если ты пишешь только для себя то да, все равно. А если несколько человек пишут то получится мешанина из разных способов форматирования.
     
  • 4.78, й (?), 17:11, 25/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > По мне так, форматирование, это как почерк, имеет право отличаться.

    ага, в большом проекте с кучей людей. и отступы пусть каждый использует, какие привык -- кто таб, кто четыре пробела, кто два, кто пять. а функции myTest1, my_test2 и MyTest3 в одном файле не хотите? да так, чтобы одна из них бросала exception, вторая возвращала return code, третья -- писала в глобальную переменную? индивидуальность программиста же.

    увидите как-нибудь такое на практике -- поймёте, зачем создали style guide для проектов.

     
  • 4.79, Softfire (?), 01:12, 26/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > По мне так, форматирование, это как почерк, имеет право отличаться.

    Представления не имею, как выглядят почерки моих коллег на работе.
    Уже давно предлагать кому бы то ни было рукописный текст - моветон.
    Разбираться в чужом почерке также неприятно, как и в нестандартно отформатированном коде.

     
  • 3.68, angra (ok), 08:33, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Не просто единообразный, а именно того вида, что принят в данной команде/сообществе. При этом в другой команде может быть принято совсем другое оформление. Инструмент форматирования должен такое учитывать и позволять гибкие настройки. Пример хорошего форматировщика - perltidy. В пример плохого надо ткнуть пальцем или и так понятно?
     
     
  • 4.72, ананим.orig (?), 17:49, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > При этом в другой команде может быть принято совсем другое оформление.
    > ...
    > Пример хорошего форматировщика - perltidy. В пример плохого надо ткнуть пальцем или и так понятно?

    Может пример про трусы не придётся приводить, а?

    Есть сабж. В этой команде принято так. И другого нет.
    Хочешь — пользуйся. Не хочешь — не пользуйся.
    Никто соцобязательств по предоставлению вашего форматирования для вашей же команды (которой вообще нет) на себя не брал.

     
  • 2.4, Аноним (-), 13:00, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Питонист штoле? Альтернативы его пугают.
     

  • 1.3, hoopoe (ok), 12:54, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    судя по докам настраивается это чуть меньше чем никак
     
     
  • 2.6, Аноним (-), 13:03, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –8 +/
    Ну по крайней мере пример из статьи сформатирован единственным верным способом. Если других косяков не будет, это и настраивать не нужно. Интересно как оно многострочные инициализаторы в конструкторах форматирует.
     
     
  • 3.59, Аноним (-), 20:21, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > единственным верным способом
    > int* x

    Пади подмойса, маня.

     
  • 2.23, Аноним (-), 14:33, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –5 +/
    > судя по докам настраивается это чуть меньше чем никак

    в этом суть: они хотят одинаковости.
    видимо, анализаторы кода делают, ии варганят, etc. ии не умеет разнотипный код читать.

     
     
  • 3.26, Аноним (-), 14:41, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    идиот, анализ кода всегда работает с AST или прочими деревьями.
     
  • 3.48, Аноним (-), 17:04, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >ии не умеет разнотипный код читать.

    Если тот ии делаете ты - то не удивительно.
    А разработчики компилеров сделали который умеет ... что то около 60 лет назад 8-)

     

  • 1.5, user (??), 13:03, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +11 +/
    >int* x

    почему не int *x?

     
     
  • 2.7, Аноним (-), 13:04, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –13 +/
    >>int* x
    > почему не int *x?

    Потому что * это часть описания типа. Только не надо про int* x, y; - так делают только имбецилы.

     
     
  • 3.11, Аноним (-), 13:42, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +14 +/
    >Потому что * это часть описания типа.

    Эта ошибка понимания сути указателей в СИ. Указатель - не новый тип. Данную строку необходимо писать int *x и читать ИКС есть УКАЗАТЕЛЬ на переменную ТИПА int.

     
     
  • 4.13, Аноним (-), 13:45, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –9 +/
    > Эта ошибка понимания сути указателей в СИ. Указатель - не новый тип.
    > Данную строку необходимо писать int *x и читать ИКС есть УКАЗАТЕЛЬ
    > на переменную ТИПА int.

    А void* - указатель на переменную типа void? Не выдумывайте. Переменная - это значение в памяти, у значения есть тип. Этот тип - int*.

     
     
  • 5.14, Аноним (-), 13:49, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +6 +/
    >А void* - указатель на переменную типа void

    Именно так, аналогично как функция void fun() возвращает значение void.
    >Переменная - это значение в памяти, у значения есть тип.

    Перменная это понятие языка программирования и к памяти не имеет никакого отношения.
    >Этот тип - int*.

    Вас не беспокоит тот факт, что все указатели занимают в памяти 4 байта (8 на 64 битных системах)?

     
     
  • 6.16, Аноним (-), 13:59, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Именно так, аналогично как функция void fun() возвращает значение void

    Значение можно присвоить переменной. Присвой, потом поговорим.

    > Перменная это понятие языка программирования и к памяти не имеет никакого отношения.

    О, даже так. Запущенный случай.

    >>Этот тип - int*.
    > Вас не беспокоит тот факт, что все указатели занимают в памяти 4
    > байта (8 на 64 битных системах)?

    Не беспокоит, а вас? Хотите рассказать о том что делаете выводы о типе и семантике по размеру значения?

     
     
  • 7.24, Аноним (-), 14:36, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    почитайте кернигана и ричи, не напрягайте себе нервный узел лишний раз.
     
     
  • 8.36, Аноним (-), 15:38, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Ссылку на конкретное место ... текст свёрнут, показать
     
  • 7.29, Аноним (-), 14:48, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >Значение можно присвоить переменной. Присвой, потом поговорим.

    Переменная может быть определена без данных, см http://en.wikipedia.org/wiki/C_syntax#Incomplete_types

    >О, даже так. Запущенный случай.

    Запущенный случай это невозможность построить в голове такие абстракции как переменные языков программирования. Сколько памяти займёт в JS переменная x, объявленная как var x = 5?

    >Не беспокоит, а вас? Хотите рассказать о том что делаете выводы о типе и семантике по размеру значения?

    Размер значения и семантика совпадает, поскольку указатели не имеют никакого отношения к типам данных

     
     
  • 8.37, Аноним (-), 15:40, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    И При чём здесь JS Если бы указатели не имели отношения к типам данных, их мож... текст свёрнут, показать
     
     
  • 9.54, Аноним (-), 18:01, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    include stdio h int main void p void 10 printf f... текст свёрнут, показать
     
  • 9.67, angra (ok), 08:28, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    При том, что ты не понимаешь, что такое абстракция вообще и переменные языков п... текст свёрнут, показать
     
  • 6.60, Умный (?), 20:55, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    >>А void* - указатель на переменную типа void
    > Именно так, аналогично как функция void fun() возвращает значение void.
    >>Переменная - это значение в памяти, у значения есть тип.
    > Перменная это понятие языка программирования и к памяти не имеет никакого отношения.
    >>Этот тип - int*.
    > Вас не беспокоит тот факт, что все указатели занимают в памяти 4
    > байта (8 на 64 битных системах)?

    А вас не беспокоит, что вы нихера не знаете, но берете смелость утверждать. Указатель вполне может быть больше 8ми байт, смотря на что он указывает.


     
  • 5.15, Аноним (-), 13:51, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Он прав. Но int* x; мне всеравно нравится больше.
     
     
  • 6.17, Аноним (-), 14:00, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    > Он прав. Но int* x; мне всеравно нравится больше.

    Он не прав. А нравится вам потому что хоть вы и не знаете основ языка, вам не чужда логика, а в соответствии с ней язык и разработан.

     
     
  • 7.30, Аноним (-), 14:51, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> Он прав. Но int* x; мне всеравно нравится больше.
    > Он не прав. А нравится вам потому что хоть вы и не
    > знаете основ языка, вам не чужда логика, а в соответствии с
    > ней язык и разработан.

    Логику разрабатывали бородатые дяди Керниган, Ричи и Томпсон, два первые написали для вас книжку, которую вы не потрудились почитать, при этом учите всех программировать на си!

     
     
  • 8.44, Аноним (-), 15:47, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это вы её не читали, потому что на конкретное место не укажете А я-то как раз ч... текст свёрнут, показать
     
     
  • 9.47, Пропатентный тролль (?), 16:22, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как нет откройте любой пример кода в книге - там везде int x Вот первое попав... текст свёрнут, показать
     
     
  • 10.51, Аноним (-), 17:12, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Воу-воу Использую емакс, но пишу int x ... текст свёрнут, показать
     
  • 7.40, cr (??), 15:43, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > вам не чужда логика, а в соответствии с ней язык и разработан

    А вы не применяйте логику java к C, все и встанет на свои места.

     
  • 6.20, тоже Аноним (ok), 14:13, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    С чего, собственно, он прав?
    На уровне машинного кода один указатель от другого ничем не отличается.
    Поэтому, собственно, С и позволяет менять ему тип.
    Тип переменной, на которую он указывает - это просто информация для компилятора, какого размера область памяти должна лежать в этом месте и к какому типу ее приводить при разыменовании указателя.
     
     
  • 7.41, Аноним (-), 15:44, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > С чего, собственно, он прав?
    > На уровне машинного кода один указатель от другого ничем не отличается.

    Вы мимо, потому что на уровне машинного кода указатель не отличается также от long и вообще чего угодно что влезает в регистр. В машинном коде вообще нет типов.

     
     
  • 8.49, тоже Аноним (ok), 17:07, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Однако в машинном коде встречается обращение к памяти по адресу, записанному в р... текст свёрнут, показать
     
     
  • 9.52, Vkni (ok), 17:43, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Спасибо, поржал Есть такое словосочетание - адресная арифметика ... текст свёрнут, показать
     
     
  • 10.63, тоже Аноним (ok), 01:08, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, хоть какая-то польза А при чем здесь адресная арифметика Результат-то все ... текст свёрнут, показать
     
     
  • 11.66, Vkni (ok), 08:12, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну представьте себе, дорогой Тоже, машинный код, описываемый псевдокодом double ... текст свёрнут, показать
     
     
  • 12.71, тоже Аноним (ok), 12:34, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Так Представил И в какой машинный код это скомпилируется, тоже примерно предст... текст свёрнут, показать
     
  • 6.61, Ури (?), 22:29, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    int* x, y;

    И привет логика!

     
  • 5.62, freehck (ok), 00:14, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Переменная - это значение в памяти, у значения есть тип.

    Интересно, что Вы запоёте, когда столкнётесь с компилируемыми динамически типизированными языками программирования.

    К слову, чем поддерживать порочный круг взаимных обвинений в безграмотности, я взялся бы утверждать, что переменная - это сущность, способная менять значение. Этой сущности может быть поставлен в соответствие символ. Символы можно сравнивать между собой в строгом и нестрогом смысле.

    (предлагаю желающим продолжить эстафету и изложить здесь элементы структуры и интерпретации компьютерных программ)

    :)

     
  • 4.18, Аноним (-), 14:08, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>Потому что * это часть описания типа.
    > Указатель - не новый тип.

    Что ещё придумаешь?

    6.2.5.20, Pointer type

     
  • 4.53, 888 (?), 17:47, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >необходимо писать int *x и читать ИКС есть УКАЗАТЕЛЬ

    Чепуху написали. икс это имя указателя, а указатель с именем x на переменную типа int как раз и будет int* x. Если не понимаете, подставьте вместо икса собственное имя и подумайте.

     
     
  • 5.55, Аноним (-), 18:08, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Чепуху написали. икс это имя указателя, а указатель с именем x на
    > переменную типа int как раз и будет int* x. Если не
    > понимаете, подставьте вместо икса собственное имя и подумайте.

    Всё верно, только int *x

     
     
  • 6.75, 888 (?), 23:37, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Вот поэтому вы в гугле и не работаете. xD Правда, я тоже.
    Но мне хоть не придётся для использования этого плагина переучиваться.
     
  • 3.28, cr (??), 14:46, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Потому что * это часть описания типа

    Курите ISO/IEC 9899, пункт A 2.2. Там указано, часть чего это.

    > Только не надо про int* x, y

    Надо-надо. Была бы * частью описания типа - семантика такого объявления была бы другой.

     
     
  • 4.38, Аноним (-), 15:41, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Потому что * это часть описания типа
    > Курите ISO/IEC 9899, пункт A 2.2. Там указано, часть чего это.
    >> Только не надо про int* x, y
    > Надо-надо. Была бы * частью описания типа - семантика такого объявления была
    > бы другой.

    Грамматика языка к системе типов не относится ну совершенно никак.

     
     
  • 5.42, cr (??), 15:45, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А кто говорит про систему типов? В треде обсуждается грамматика, а именно синтаксис объявлений.

     
  • 5.76, Аноним (-), 08:26, 25/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >Грамматика языка к системе типов не относится ну совершенно никак.

    Самое смешное сообщение на опеннете за последнюю неделю.

     
  • 2.25, Аноним (-), 14:37, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > >int* x
    > почему не int *x?

    скорее всего потому, что так пишет Поттеринг.

     
  • 2.33, Аноним (-), 15:07, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    http://www.stroustrup.com/bs_faq2.html#whitespace
     
     
  • 3.45, Аноним (-), 16:00, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > http://www.stroustrup.com/bs_faq2.html#whitespace

    Правильно. /thread

     
     
  • 4.50, тоже Аноним (ok), 17:11, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Компилятору-то действительно пофиг, а вот программисты обычно не любят читать что-нибудь вроде:
    for(--c;n<c;*L-c?L[*a[++*L]+=32]=1:swap(a[1],a[*((*a=strchr(a[n],0)-1)+L[**a]-1)-*a[++n]?rand()%c+(n=1):1]));
     
  • 3.56, Аноним (-), 18:17, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > http://www.stroustrup.com/bs_faq2.html#whitespace

    A ''typical C programmer'' writes ''int *p;'' and explains it ''*p is what is the int'' emphasizing syntax, and may point to the C (and C++) declaration grammar to argue for the correctness of the style. Indeed, the * binds to the name p in the grammar.

    Ну не верно же!

     
     
  • 4.57, Аноним (-), 18:28, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Все верно.
     
  • 2.74, Аноним (-), 22:32, 24/01/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    The choice between int p and int p is not about right and wrong, but abo... большой текст свёрнут, показать
     

  • 1.8, АнонимЪ (?), 13:15, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А чем оно лучше clang-format для C++?
     
     
  • 2.9, Аноним (-), 13:26, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А чем оно лучше clang-format для C++?

    Или uncrustify. Оно вообще настраивается как угодно.

     
     
  • 3.10, ананим.orig (?), 13:39, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Оно вообще настраивается как угодно.

    Очевидно гуглу не нужно "как угодно".
    Им нужно как у них принято.
    Ваш КО.

     
     
  • 4.12, Аноним (-), 13:43, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    >> Оно вообще настраивается как угодно.
    > Очевидно гуглу не нужно "как угодно".
    > Им нужно как у них принято.
    > Ваш КО.

    -> конфиг для uncrustify.

     

  • 1.19, Штунц (?), 14:11, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    вот как надо форматировать

    int foo(int* x)
    {
       return *x * *x;
    }

     
     
  • 2.21, тоже Аноним (ok), 14:17, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Форматировать надо так, чтобы минимизировать время понимания кода и вероятность ошибок.
    Все остальное - не каноны, а просто способы. Даже если это способ от самих K & R.
     
  • 2.43, Аноним (-), 15:45, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Только как в новости либо так:

    > int foo(int* x) {
    >    return *x * *x;
    > }

     
     
  • 3.46, Аноним (-), 16:20, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    В этом формате не будет работать [[
     

  • 1.22, Аноним (-), 14:23, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    в стандартной поставке clang-format есть гугловский стиль, кстати очень удобный, и плагин для vim.

    в стандартной поставке Go есть средство форматирования кода и, опять же, плагин для vim.

    Резюме: в Гугле у кого-то резко обострился NIH-синдром.

     
  • 1.27, Аноним (-), 14:43, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    этот плагин исключительно для тех людей, что код пишут только так, как показано в первом варианте:
    > int foo(int * x) { return * x** x ; }

    для них проще плагин наклепать, чем их переучить.
    потому и наклепали.

    тут важно другое: что за программисты в гугле работают, что им такие плагины нужны и что способны "* x** x" выдать?

     
  • 1.31, Аноним (-), 14:54, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а ничего что vim это умеет из коромбки на основе настраиваемого indent? Выделяем код и нажимаем кнопку "="
     
     
  • 2.34, cr (??), 15:34, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Встроенный индент уже умеет что-то кроме (внезапно) индентации?
     

  • 1.35, svlasov (ok), 15:36, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Торматирует только в стиль гугла? Есть более полезный инструмент http://astyle.sourceforge.net/astyle.html который позволяет привести к любому стилю. И соответсвующий плагин https://github.com/Chiel92/vim-autoformat Наверное и Go ему можно скормить.
     
     
  • 2.58, Пользователь Debian (?), 19:32, 23/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо ей Go скармливать: к счастью, у него есть фиксированный стандартный формат и утилита для него: http://blog.golang.org/go-fmt-your-code
     

  • 1.39, waker (ok), 15:42, 23/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    в анонсе написано, что javascript умеет. на самом деле:




    :FormatCode
    Not available. codefmt doesn't have a default formatter for this buffer.


    это у меня руки из Ж, или анонс врет?

     
     
  • 2.81, к (??), 23:07, 26/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    плагину нужна эта тулза, сейчас он просто неправильно ругается на её отсутсвие
    http://clang.llvm.org/docs/ClangFormat.html

    Подробности:
    https://github.com/google/vim-codefmt/issues/16

     
     
  • 3.82, waker (ok), 11:01, 27/01/2015 [^] [^^] [^^^] [ответить]  
  • +/
    спасибо
     

  • 1.80, Аноним (-), 04:41, 26/01/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    vim-autoformat? https://github.com/Chiel92/vim-autoformat
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру