Как обеспечить максимальную длину строки в Emacs? - PullRequest
22 голосов
/ 07 апреля 2009

Как в 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();

Ответы [ 6 ]

5 голосов
/ 13 апреля 2009

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

5 голосов
/ 07 апреля 2009

Заполняющий абзац и режим автозаполнения сознательно не переносят код. Есть слишком много способов сделать это, и, вероятно, это неправильно. Они завернут комментарии, но это вам здесь не поможет.

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

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

1 голос
/ 17 апреля 2009

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

1 голос
/ 07 апреля 2009

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

0 голосов
/ 15 мая 2009

Попробуйте

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

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

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

0 голосов
/ 07 апреля 2009

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

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

...