1

Я пытаюсь, чтобы режим компиляции emacs всегда использовал режим визуальной строки. Код, который я использую:

(add-hook 'compilation-mode-hook (visual-line-mode))

Я пробовал различные другие перестановки. Например, версия в:

Или глобально включающий режим визуальных линий

(setq-default global-visual-line-mode t) 

Тем не менее, Emacs настаивает на сокращении строк. Я подтвердил, что крюк выполняется. Есть ли известное разрешение для этого?

Обновление 0

Основной проблемой является проблема новичка в Lisp: функция visual-line-mode не была заключена в кавычки. Это приводит к немедленной оценке, а не оценке, когда крюк запущен.

Это не решило проблему: режим компиляции по-прежнему не переносит строки. Я подтвердил, что ловушка выполняется в ожидаемое время, поместив неопределенный идентификатор вместо t . Emacs, как и ожидалось, жалуется на неопределенный идентификатор при входе в режим компиляции.

Есть ли способ отследить выполнение compile? Использование (trace-function 'compile) производит:

======================================================================
1 -> compile: command="make" comint=nil
1 <- compile: #<buffer *compilation*>

и больше ничего.

Обновление 1

Решено!

Помимо неправильного цитирования, проблема была с другой частью моего конфига emacs:

(add-hook 'after-change-major-mode-hook
      (function
        (lambda ()
            (fci-mode)
            (turn-on-auto-fill)
        )
      )
)

который, фактически, отменил настройку visual-line-mode !

1 ответ1

1

Ответ, предоставленный lawlist, является правильным, однако, есть также второстепенный режим компиляции, который используется некоторыми основными режимами (например, режим стек трассировки CIDER). Итак, у меня есть следующее:

(add-hook 'compilation-mode-hook
          (lambda () (visual-line-mode 1)))

(add-hook 'compilation-minor-mode-hook
          (lambda () (visual-line-mode 1)))

Я упоминаю об этом, потому что младший код также отображается как "Компиляция" в строке состояния, и мне потребовалось немного времени, чтобы понять, что это второстепенный, а не основной режим.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .