Как обеспечить максимальную длину строки в 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();
Ответы
Ответ 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)))
Надеюсь, что это поможет.