Подтвердить что ты не робот

Как обеспечить максимальную длину строки в Emacs?

В Emacs, как я могу обеспечить максимальную длину строки, скажем, 80 символов? Я хочу, чтобы он вносил правильные разрывы строк в мой код, подобно fill-paragraph для текста, если это возможно, с правильной вставкой второй части строки.

Вот небольшой пример:

LongNameType<PrettyLong, AlsoLong> doSomethingWithLongFunctionName(int a, int b);
foo();

Если я действительно делаю fill-paragraph, он становится:

LongNameType<PrettyLong, AlsoLong>
doSomethingWithLongFunctionName(int a, int b); foo();

тогда как я предпочел бы это:

LongNameType<PrettyLong, AlsoLong>
  doSomethingWithLongFunctionName(int a, int b);
foo();
4b9b3361

Ответ 1

fill-paragraph и auto-fill-mode намеренно не обертывают код. Есть слишком много способов сделать это, и, вероятно, это будет неправильно. Они обернут комментарии, но это вам не поможет.

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

Вы пытаетесь оплатить большой объем существующего кода? Или пытаетесь выполнить автозаполнение кода, который вы сейчас пишете?

Ответ 2

Есть количество пакетов, которые предупреждают вас о ограничениях длины строки. Лично я использую wide-column, который меняет цвет курсора в зависимости от текущего столбца.

Ответ 3

Я использую modeline-posn. Он выделяет номер столбца в modeline, если он превышает указанное значение.

Ответ 4

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

Ответ 5

На самом деле не emacser, но что произойдет, если вы включите режим автозаполнения, а в С++ - режим?

Режим С++ должен давать вам автоматический отступ, а режим автозаполнения позволяет вам обтекать строки.

Ответ 6

Попробуйте

'(c-max-one-liner-length 80)

'(fill-column 80)
'(c-ignore-auto-fill (quote (string cpp)))

Надеюсь, что это поможет.