Как программист, я хочу видеть линейку в определенном столбце (обычно 80), так что я вижу, когда я пересекаю этот столбец, а также видеть, насколько близко я к нему подхожу, чтобы я мог переформатировать свой код на ранней стадии.
Все варианты, которые я нашел, не достигают этой цели:
whitespace-mode
,column-enforce-mode
иcolumn-marker
только выделять отдельные строки после того, как текст в строке уже прошелfill-column
. Я хотел бы видеть, когда я приближаюсь к колонне, а не только когда я пересекаю ее.fill-column-indicator
было бы хорошим решением, за исключением того, что ломаетсяauto-complete-mode
,company-mode
,avy
и многое другое. Это вопросы , которые кажутся трудно исправить, каждый из которых требует отдельного временного решения - например, см наcompany-mode
вопрос и наauto-complete-mode
вопрос , последний в течение двух лет).
Есть ли лучшие альтернативы?
display
font-lock
programming
Йорген Шефер
источник
источник
(set-window-margins nil 0 (max (- (window-width) 80) 0))
Поэтому, если у вас есть окно шириной 120 символов, оно уменьшит пространство, необходимое для отображения кода, до 80 символов. Таким образом, это не испортит вашу конфигурацию окна, и вы можете включить ее, если хотите. Если у вас есть полосы, на самом деле будет линия, нарисованная в 80 столбцах.Ответы:
fill-column-indicator
является наиболее зрелым решением, и если вы найдете код на основе наложения, с которым он конфликтует, вы можете добавить код для приостановки,fci-mode
пока конфликтующий код активен. Например, следующий код заставляет его работатьauto-complete
:источник
company-mode
.popup-create
иpopup-delete
- в зависимости от вашего варианта использования вам может потребоваться указать разные функции.Вот один из вариантов, который является более надежным, он почти ничего не нарушает (иногда режим компании является заметным исключением), но не так удобен, как
fill-column-indicator
.Используйте header-line-format, чтобы отметить 80-й столбец в заголовке.
Что-то вроде следующего должно быть достаточно:
Вы должны изменить количество пробелов в этой первой строке в зависимости от размера вашей левой полосы. Но кроме этого, это должно работать достаточно хорошо. Это не так удобно, как линейка в реальном буфере, но это помогает.
Вы также можете настроить его на применение только к программным буферам.
Результат:
вы должны получить что-то вроде следующего (первая строка на самом деле не в буфере, а в заголовке).
источник
M-x ruler-mode
.После долгих страданий из-за различных ошибок
fill-column-indicator
я навсегда удалил их из своего конфига.В настоящее время я использую встроенную функциональность Emacs для выделения слишком длинных строк. Это даже выглядит лучше, я бы не включил
fill-column-indicator
сейчас, даже если бы это было без ошибок.Для начала вы можете взять мои настройки:
Затем включите его там, где вы хотите. Я использую это только в контексте программирования:
источник
Emacs 27 будет изначально поддерживать индикатор заполнения столбца с помощью вспомогательного локального режима буфера
display-fill-column-indicator-mode
и его глобального аналогаglobal-display-fill-column-indicator-mode
.Вот оно в действии:
Квот
(emacs) Displaying Boundaries
:источник
Эта страница EmacsWiki содержит много информации о различных способах пометить определенный столбец или иным образом сообщить вам, когда вы пройдете мимо него.
Тот, который я использую, является положением линии режима .
Но другие включают , показывающий вертикальную линию в колонке ( колонка Маркер , заполняющая Column индикатор ) и используя пробельные режим для выделения текста , который проходит мимо колонны.
(Если вам нужно, чтобы строка находилась далеко справа от всего текста во всех строках, вы всегда можете включить ее
picture-mode
, но это, вероятно, полезно здесь только в качестве временного обходного пути.)См. Также Поиск длинных линий, чтобы узнать, как найти длинные строки по запросу.
источник
Не совсем то, что вы хотите, но линейка @ Malabarba ♦ будет растрачивать пространство, вот лучшее решение:
Существует встроенный пакет
emacs-goodies-el
(рекомендуется установить его в терминале), называемый highlight-beyond-fill-column.el , добавьте его в свой.emacs
илиinit.el
:Текст,
fill-column
который превышает 80 во фрагменте, будет выделен цветомred
. Вы можете установить лицо, как вам нравится.источник
Так как
fill-column-indicator
это довольно тяжелое, это решение показывает символ справа от текущей строки.Поэтому, когда вы печатаете, вы можете увидеть предел строки, прежде чем превысить его.
Это определяет несовершеннолетний режим
hl-line-margin-mode
:Если вы используете
evil-mode
и хотите ограничить это режимом вставки, вы можете добавить следующие хуки:источник