программерский редактор, и форматировщик кода
От: niXman Ниоткуда https://github.com/niXman
Дата: 15.08.13 17:09
Оценка:
приветствую!

скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.

второй вопрос в том, что немогу найти хороший(желательно онлайн) форматировщик С++ кода, чтоб умел форматировать шаблонный код большой вложенности, типа этого:
template< std::size_t ID, std::size_t V = 0 > struct messages_map { using type = typename boost::mpl::at< typename boost::mpl::at< boost::mpl::map< boost::mpl::pair< boost::mpl::int_< proc1 >, boost::mpl::map< boost::mpl::pair< boost::mpl::int_<0> ,protoctor_message<0, 0>::type > , boost::mpl::pair< boost::mpl::int_<1> ,protoctor_message<0, 1>::type > > > , boost::mpl::pair< boost::mpl::int_< proc2 >, boost::mpl::map< boost::mpl::pair< boost::mpl::int_<0> ,protoctor_message<1, 0>::type > > > , >, boost::mpl::int_<ID> >::type, boost::mpl::int_<V> >::type; };


благодарен.
Слово "совпадение" появилось после падения сов.
Re: программерский редактор, и форматировщик кода
От: Ops Россия  
Дата: 15.08.13 17:36
Оценка:
Здравствуйте, niXman, Вы писали:

X>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.


Far + FarColorer, но он вряд ли тебе подойдет — это все-таки не полноценный редактор.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: программерский редактор, и форматировщик кода
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 15.08.13 17:42
Оценка:
Здравствуйте, niXman, Вы писали:

X>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.


В самом программерском редакторе, Виме:
:set matchpairs+=<:>
Ce n'est que pour vous dire ce que je vous dis.
Re[2]: программерский редактор, и форматировщик кода
От: niXman Ниоткуда https://github.com/niXman
Дата: 15.08.13 17:44
Оценка:
Здравствуйте, Don Reba, Вы писали:

DR>В самом программерском редакторе, Виме:

DR>
:set matchpairs+=<:>


омг %)
а можно как-нить без него?
Слово "совпадение" появилось после падения сов.
Re[2]: программерский редактор, и форматировщик кода
От: . Великобритания  
Дата: 15.08.13 20:05
Оценка: +1
Здравствуйте, Don Reba, Вы писали:

DR> X>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.


DR> В самом программерском редакторе, Виме:

DR>
:set matchpairs+=<:>

И как долго оно продержится? До превого сравнения if(a < b) или поточного вывода std::out << ?
Эх... Ну такой синтаксис такой накрутили в плюсах, а мог бы быть хороший язык.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: программерский редактор, и форматировщик кода
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 15.08.13 20:24
Оценка:
Здравствуйте, ., Вы писали:

.>И как долго оно продержится? До превого сравнения if(a < b) или поточного вывода std::out << ?


Насколько я понимаю, это только проблема, если встретится внутри угловых скобок. Использование сравнения констант в качестве булевого параметра шаблона, всё таки, совсем редкая экзотика.
Ce n'est que pour vous dire ce que je vous dis.
Re[4]: программерский редактор, и форматировщик кода
От: VladFein США www.FeinSoftware.com
Дата: 15.08.13 20:29
Оценка:
Здравствуйте, Don Reba, Вы писали:

.>>И как долго оно продержится? До превого сравнения if(a < b) или поточного вывода std::out << ?


DR>Насколько я понимаю, это только проблема, если встретится внутри угловых скобок. Использование сравнения констант в качестве булевого параметра шаблона, всё таки, совсем редкая экзотика.


А этот Вим можно научить делать matchpairs только в описании шаблонов?
Re[5]: программерский редактор, и форматировщик кода
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 15.08.13 20:41
Оценка:
Здравствуйте, VladFein, Вы писали:

VF>А этот Вим можно научить делать matchpairs только в описании шаблонов?


Можно реализовать аналогичное поведение скриптом, но это будет нетривиально, даже по Вимовским меркам.
Ce n'est que pour vous dire ce que je vous dis.
Re[6]: программерский редактор, и форматировщик кода
От: VladFein США www.FeinSoftware.com
Дата: 15.08.13 20:44
Оценка:
Здравствуйте, Don Reba, Вы писали:

VF>>А этот Вим можно научить делать matchpairs только в описании шаблонов?


DR>Можно реализовать аналогичное поведение скриптом, но это будет нетривиально, даже по Вимовским меркам.


Я спрашивал относительно Вашего утверждения:

.>>И как долго оно продержится? До превого сравнения if(a < b) или поточного вывода std::out << ?

DR>Насколько я понимаю, это только проблема, если встретится внутри угловых скобок.

Re: программерский редактор, и форматировщик кода
От: Zhendos  
Дата: 16.08.13 02:30
Оценка:
Здравствуйте, niXman, Вы писали:

X>приветствую!


X>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.


emacs с дефолтными настройками в C++ подсвечивает.
Re[2]: программерский редактор, и форматировщик кода
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.08.13 04:17
Оценка:
Здравствуйте, Zhendos, Вы писали:

Z>emacs с дефолтными настройками в C++ подсвечивает.

ох и экзотика %)

так он подсвечивает, или форматирует?
Слово "совпадение" появилось после падения сов.
Re: программерский редактор, и форматировщик кода
От: flаt  
Дата: 16.08.13 06:14
Оценка: 6 (1)
Здравствуйте, niXman, Вы писали:

X>приветствую!


X>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.

EmEditor, но это win и чисто редактор, а не программерский.
Re[2]: программерский редактор, и форматировщик кода
От: jazzer Россия Skype: enerjazzer
Дата: 16.08.13 06:17
Оценка: :))
Здравствуйте, flаt, Вы писали:

F>EmEditor, но это win


win это fail (привел Оруэллу)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: программерский редактор, и форматировщик кода
От: . Великобритания  
Дата: 16.08.13 07:38
Оценка:
Здравствуйте, Don Reba, Вы писали:

.>>И как долго оно продержится? До превого сравнения if(a < b) или поточного вывода std::out << ?

DR>Насколько я понимаю, это только проблема, если встретится внутри угловых скобок. Использование сравнения констант в качестве булевого параметра шаблона, всё таки, совсем редкая экзотика.
Или если забудешь скобочку в шаблоне открыть или закрыть. И фиг найдёшь же, только с толку сбивать такая подстветка будет.
А это кто-нибудь пробовал?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: программерский редактор, и форматировщик кода
От: jazzer Россия Skype: enerjazzer
Дата: 16.08.13 07:51
Оценка:
Здравствуйте, niXman, Вы писали:

X>приветствую!


X>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.


X>второй вопрос в том, что немогу найти хороший(желательно онлайн) форматировщик С++ кода, чтоб умел форматировать шаблонный код большой вложенности, типа этого:

X>template< std::size_t ID, std::size_t V = 0 > struct messages_map { using type = typename boost::mpl::at< typename boost::mpl::at< boost::mpl::map< boost::mpl::pair< boost::mpl::int_< proc1 >, boost::mpl::map< boost::mpl::pair< boost::mpl::int_<0> ,protoctor_message<0, 0>::type > , boost::mpl::pair< boost::mpl::int_<1> ,protoctor_message<0, 1>::type > > > , boost::mpl::pair< boost::mpl::int_< proc2 >, boost::mpl::map< boost::mpl::pair< boost::mpl::int_<0> ,protoctor_message<1, 0>::type > > > , >, boost::mpl::int_<ID> >::type, boost::mpl::int_<V> >::type; };

X>благодарен.


вот такой крокодил тебя устроит?
> echo 'template< std::size_t ID, std::size_t V = 0 > struct messages_map { using type = typename boost::mpl::at< typename boost::mpl::at< boost::mpl::map< boost::mpl::pair< boost::mpl::int_< proc1 >, boost::mpl::map< boost::mpl::pair< boost::mpl::int_<0> ,protoctor_message<0, 0>::type > , boost::mpl::pair< boost::mpl::int_<1> ,protoctor_message<0, 1>::type > > > , boost::mpl::pair< boost::mpl::int_< proc2 >, boost::mpl::map< boost::mpl::pair< boost::mpl::int_<0> ,protoctor_message<1, 0>::type > > > , >, boost::mpl::int_<ID> >::type, boost::mpl::int_<V> >::type; };' | uncrustify -l cpp -c <(echo -e "indent_template_param True\ncode_width 80")
Parsing: 564 bytes from stdin as language CPP
template< std::size_t ID, std::size_t V =
         0 > struct messages_map { using type =
                                                 typename boost::mpl::at
             < typename boost::mpl::
              at< boost::mpl::map< boost
                 ::
                 mpl
                 ::pair< boost::mpl::int_< proc1 >,
                     boost
                     ::
                     mpl::map< boost::mpl::pair< boost::mpl::int_<0>,
                         protoctor_message
                         <
                               0,
                               0>
                         ::
                         type >,
                        boost
                        ::
                        mpl::pair< boost::mpl::int_<1>,
                         protoctor_message
                         <
                               0,
                               1>
                         ::
                         type > > >,
                 boost
                 ::
                 mpl::pair< boost::mpl::int_< proc2 >,
                     boost
                     ::
                     mpl::map< boost::mpl::pair< boost::mpl::int_<0>,
                         protoctor_message
                         <
                               1,
                               0>
                         ::
                         type > > >,
                        >,
                boost::
                mpl::int_<ID> >::type, boost::mpl::int_<V> >::type; };

(ему тут, похоже, снесло крышу от С++11-го using — можешь засандалить им bug report)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: программерский редактор, и форматировщик кода
От: Zhendos  
Дата: 16.08.13 07:59
Оценка:
Здравствуйте, niXman, Вы писали:

X>Здравствуйте, Zhendos, Вы писали:


Z>>emacs с дефолтными настройками в C++ подсвечивает.

X>ох и экзотика %)

X>так он подсвечивает, или форматирует?


Не понял, вопрос был о подсветке, на него и ответил.
откуда взялось форматирование?
Re[2]: программерский редактор, и форматировщик кода
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.08.13 08:09
Оценка:
Здравствуйте, jazzer, Вы писали:

J>вот такой крокодил тебя устроит?

ох и жуть же! =)
но спасибо.

J>(ему тут, похоже, снесло крышу от С++11-го using — можешь засандалить им bug report)

не. изменил на typedef — результат тот же.
нужно в настройках поковыряться.
Слово "совпадение" появилось после падения сов.
Re: программерский редактор, и форматировщик кода
От: zaufi Земля  
Дата: 16.08.13 08:48
Оценка:
Здравствуйте, niXman, Вы писали:

X>приветствую!


X>второй вопрос в том, что немогу найти хороший(желательно онлайн) форматировщик С++ кода, чтоб умел форматировать шаблонный код большой вложенности, типа этого:


я себе на петоне написал плагину для kate, чтобы быстренько форматить подобный код.
Win+F и текущий уровень (между '<>' или '()') разбивается на отдельные строки в boost-стиле форматирования (когда запятая впереди). по Win+Shift+F наоборот сворачиваем все в одну строку.
применяю в основном при редактировании собственного кода (реже по-быстрой разобрать на какой тип обижается компилятор), а не для массового переформатирования-кусков-кода-в-пакетном-режиме -- писать собственный C++ парсер я не готов


X>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.


ну если допустить некоторые ограничения (завязанные на стиль кодирования), то вполне можно на том же питоне для kate наваять.
засада, как уже сказали, в том, что отличить '<' и '>' в шаблонах, от операторов сдвига или сравнения можно только имея компилятор.
и даже если нагнуть clang для этой задачи, то гемороя все равно будет выше крыши. поэтому, если я и буду что-то подобное писать (а всякие такие импрувы я себе делаю постоянно ), то только ориентируясь на собственный стиль кодирования: если '<' или '>' хотябы с одной стороны соседствуют с [alnum] (или через некоторое число [punct], но не \s), то это скорее всего шаблон -- операторы я обычно отделяю пробелами от операндов...
Re[2]: программерский редактор, и форматировщик кода
От: niXman Ниоткуда https://github.com/niXman
Дата: 16.08.13 08:53
Оценка:
Здравствуйте, zaufi, Вы писали:

Z>я себе на петоне написал плагину для kate, чтобы быстренько форматить подобный код.

Z>Win+F и текущий уровень (между '<>' или '()') разбивается на отдельные строки в boost-стиле форматирования (когда запятая впереди). по Win+Shift+F наоборот сворачиваем все в одну строку.
Z>применяю в основном при редактировании собственного кода (реже по-быстрой разобрать на какой тип обижается компилятор), а не для массового переформатирования-кусков-кода-в-пакетном-режиме -- писать собственный C++ парсер я не готов
так а где его скачать? я тоже kate использую


X>>скажите, кто-то встречал редактор, который умеет подсвечивать парные треугольные скобки? круглые и фигурные вроде все умеют.


Z>ну если допустить некоторые ограничения (завязанные на стиль кодирования), то вполне можно на том же питоне для kate наваять.

было бы здорово
Слово "совпадение" появилось после падения сов.
Re: программерский редактор, и форматировщик кода
От: Yarik_L  
Дата: 16.08.13 09:01
Оценка:
Здравствуйте, niXman, Вы писали:

X>второй вопрос в том, что немогу найти хороший(желательно онлайн) форматировщик С++ кода, чтоб умел форматировать шаблонный код большой вложенности, типа этого:


clang-format?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.