170 похожих чатов

А в чем проблема то, какой то линтер литералы что

ли форматирует? Ну так выкиньте его.

42 ответов

24 просмотра

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

Dmitry Sokolov
А что считать отступом?

в т.ч. эту загадку и пытаются решить

Dmitry Sokolov
А что считать отступом?

Мой исходный пример. Корректные отступы в коде и в содержимом литерала сейчас невозможны одновременно

Dmitry-Sokolov Автор вопроса

То есть отступом считать то что во второй строке при условии что первая пустая и первую вырезать? И сделать это должен препроцессор.

Dmitry Sokolov
То есть отступом считать то что во второй строке п...

>> То есть отступом считать то что во второй строке при условии что первая пустая и первую вырезать? Отступом должен считаться минимальный отступ среди всех строк литерала. Например, void foo() { auto x = R"( a b c )"; } должно превращаться в a b c

Ofee Oficsu
Мой исходный пример. Корректные отступы в коде и в...

void foo() { auto x = R"([config])" "\n" R"( hello = Hello, World)" "\n" R"( answer = 42)" "\n"; } 🗿🗿🗿

Гражданин Котейко
void foo() { auto x = R"([config])" "\n" ...

Я уже упомянул, что это лишает существование сырых многострочных литералов всякого смысла

Dmitry-Sokolov Автор вопроса
Dmitry Sokolov
Их смысл не в том чтобы сохранять codestyle.

Я считаю, что заведомо не должно быть таких сущностей, которые ломают кодстайл

Dmitry-Sokolov Автор вопроса

А мне нравится что я беру кусок текста, вставляю в код и строка это ровно то что я вставил. И обратное тоже верно.

Ofee Oficsu
Я считаю, что заведомо не должно быть таких сущнос...

литералы вообще никакое отношение с код стайлу не имеют. Если у вас имеют - то вам код стайл надо менять и бить по рукам того, кто такой бред выдумывает

Ofee Oficsu
Я считаю, что заведомо не должно быть таких сущнос...

а я считаю, что не должно быть кодостайлов, которые ломаются от языка, для которого они предназначены 🗿

Dmitry Sokolov
А мне нравится что я беру кусок текста, вставляю в...

Может, вам в коде вообще тогда не нужны отступы? Потому что аргументация, почему литералы должны иметь идентацию относительно кода та же самая, что и в вопросе, почему идентация нужна вообще

Денис Берёзкин
литералы вообще никакое отношение с код стайлу не ...

Ещё раз. Сейчас корректный литерал вынужденно разрывает код: void foo() { auto x = R"([config] hello = Hello, World answer = 42 )"; } Аргументы, почему это же самое должно выглядеть на самом деле так: void foo() { auto x = R"( [config] hello = Hello, World answer = 42 )"; } полностью аналогичны аргументам, почему в коде идентация нужна вообще

Ofee Oficsu
Может, вам в коде вообще тогда не нужны отступы? П...

Мне нужна сырая строка как есть, где никто ничего не "форматирует". Ради вот этой оочень нужной фичи и были введены сырые литералы. Вы предлагаете изменения под _ВАШ_ код стайл, которое сломает софт всем остальным (!) 🙈🙈🙈😄😄😄 это пять👍👍👍👍

Dmitry-Sokolov Автор вопроса
Ofee Oficsu
Может, вам в коде вообще тогда не нужны отступы? П...

Я говорил, я не вставляю отступы, clang-format же есть. И это прекрасно, я вообще о форматировании не думаю обычно :) Если литералы большие, отдельно в unnamed namespace вытаскиваю, а там отступ нулевой.

Ofee Oficsu
Ещё раз. Сейчас корректный литерал вынужденно разр...

Вот, учу как сделать, чтобы вам "код стайл не ломало": void foo() { auto x = R"( [config] hello = Hello, World answer = 42 )"; }

Ofee Oficsu
Ещё раз. Сейчас корректный литерал вынужденно разр...

слушай а удл работают с сырыми строками?

Денис Берёзкин
Мне нужна сырая строка как есть, где никто ничего ...

>> Мне нужна сырая строка как есть, где никто ничего не "форматирует" Ясчитаю, что такое поведение на практике не нужно. Ведь необходимое число отступов при вставке добавлять умеет практически любой текстовый редактор. Т.е. код и так обучает копируется и вставляется как есть, без изменений Более того, я не предлагал ломать желаемое вами уже существующее поведение. Но я настаиваю, что оно непрактично на деле >> Вы предлагаете изменения под _ВАШ_ код стайл Этого тоже не было. Предложенное мной подходит под любой стиль отступов и даже под его отсутствие

Dmitry Sokolov
Я говорил, я не вставляю отступы, clang-format же ...

>> Я говорил, я не вставляю отступы, clang-format же есть Так а при чём здесь он и как он поможет? Проблема же не в стиле, а в невозможности сохранения идентации при сохранении корректного содержимого литерала >> Если литералы большие, отдельно в unnamed namespace вытаскиваю, а там отступ нулевой. Так можно, но даже здесь у некоторых может быть отступ относительно начала декларации переменной. Т.е. это решение, но оно всё ещё на уровне "положить в текстовый файл и позвать #embed". Доступно с более раннего стандарта, но бессмысленно именно в качестве литерала

feedable
слушай а удл работают с сырыми строками?

просто берешь делаешь _rawmulti и триммишь вайтспейс

Ofee Oficsu
Я считаю, что заведомо не должно быть таких сущнос...

Так это, кажется, вообще повсеместная проблема же.

Sergey Anisimov
Так это, кажется, вообще повсеместная проблема же.

Вообще, возможно, что это и так. Я не помню языков, где сырые строки не разрывали бы уровень идентации. Но это же не повод молчать об этой раздражающей проблеме)

Dmitry-Sokolov Автор вопроса
Ofee Oficsu
>> Я говорил, я не вставляю отступы, clang-format ...

Я про то что в примере отступы явно вставил же не редактор :) А мне бы было лень, если я копирую например этот кусок из реального конфига вставлять отступы чтобы под код выровнять. Из кода большие я выношу в переменные потому что из-за кучи текста читаемость самого кода теряется, не из-за отступов.

Ofee Oficsu
>> Мне нужна сырая строка как есть, где никто ниче...

"Ясчитаю, что такое поведение на практике не нужно." - вы не правы, наоборот после введения сырых литералов - другое поведение в большинстве случаев не нужно. Во-вторых, меня не устраивает отсекание "отступов" по вашему стилю, так как мне в нужных местах нужны отступы. И в принципе никто кроме разработчика не имеет информации как как оно должно быть. Потому сделать как вы предлагаете невозможно в принципе без введения 50+ типов литералов или ломания кода всем кроме вас.

Ofee Oficsu
>> Я говорил, я не вставляю отступы, clang-format ...

я думаю подобную фичу можно сделать на уровне кодогенерации перед компиляцией, какой-нибудь [[fix human-readable literal]], но это максимум. И то это будет перегружать синтаксис 🫡

Денис Берёзкин
"Ясчитаю, что такое поведение на практике не нужно...

>> так как мне в нужных местах нужны отступы Ещё раз. В моём предложении отступы не исчезают. Они вместо этого выравниваются относительно самого левого элемента в строках литерала. Относительные отступы при этом не ломаются и будут сохранены, как вы и хотите

Dmitry-Sokolov Автор вопроса
Ofee Oficsu
Вообще, возможно, что это и так. Я не помню языков...

Ну вот в yaml мультистроки с отступами. Ещё и с модификаторами всякими. Но yaml он же весь на отступах.

Dmitry-Sokolov Автор вопроса
Ofee Oficsu
>> так как мне в нужных местах нужны отступы Ещё ...

Вы же ещё первую строку хотите вырезать, как в lua. Ну вот это может и полезно было бы

>> [[fix human-readable literal]] Нельзя. Суть атрибутов в том, что поведение не должно ломаться, если компилятор вдруг выключит поддержку атрибута. Т.е. атрибуты обычно сужают гарантии для программиста. А здесь они наоборот расширяются. Можно ключевым словом. Или скорее другим префиксом. Не R"(...)", а I"(...)", например

вы ведь понимаете, что это один из исключительных случаев когда _вам_ это надо?

Dmitry Sokolov
Вы же ещё первую строку хотите вырезать, как в lua...

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

Dmitry-Sokolov Автор вопроса
Ofee Oficsu
>> так как мне в нужных местах нужны отступы Ещё ...

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

Денис Берёзкин
вы ведь понимаете, что это один из исключительных ...

На самом деле, исключительный случай – это литерал, состоящий только из пробелов в начале каждой строчки. В этом случае действительно ломается наблюдаемое поведение и этот пример был выше. Но мне не кажется, что это более частый случай, чем литералы, у которых есть хотя бы одна строчка с первым непробельным символом

Aniki Hi$ok@ 🌈 Z 🐀
меня не покидает чувство что ты описываешь функцио...

какое-то расширение подписывания типа или названия переменной, где по синтаксису их нет. И табы, которые пробелы

Aniki Hi$ok@ 🌈 Z 🐀
меня не покидает чувство что ты описываешь функцио...

Я не спорю, это можно сделать в IDE. Есть ли такая фича в современных – я не знаю, не видел. Но даже если будет... мне не нравится, что на условном гитхабе или в git diff содержимое будет отличаться от того, что видно в IDE. Мне кажется этот подход неправильным

feedable
фикс сделай удл и не ной

ну блин, нужно попробовать, да

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
52
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Карта сайта