В emacs, могу ли я иметь один набор настроек переноса строк для кода и один для текста?

После долгих экспериментов я думаю, что мне нравится:

(setq truncate-lines nil)
(setq word-wrap t)

для редактирования текста, но

(setq truncate-lines t)
(setq word-wrap nil)

для программирования.

Во всех режимах мне нравится:

(setq fill-column 80)

так что я могу использовать M-q а также C-u M-q чтобы поток текста до 80 столбцов, но я также считаю, что мне не нравится auto-fill режим и никогда не хотел бы, чтобы он был включен.

Я также не так заинтересован в visual-line-mode (или, по крайней мере, часть того, что не word-wrap)

Есть ли какое-нибудь заклинание, которое я могу вставить в свой .emacs файл, который сделает меня счастливым?

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

3 ответа

Решение

Использование prog-mode-hook а также text-mode-hook установить эти переменные:

(add-hook 'text-mode-hook '(lambda ()
    (setq truncate-lines nil
          word-wrap t)))

а также

(add-hook 'prog-mode-hook '(lambda ()
    (setq truncate-lines t
          word-wrap nil)))

(setq truncate-lines t) все еще не работает?

Culprit может быть другой режим. Visual-line-mode был моим (global-visual-line-mode), поэтому мне пришлось включить функцию отключения в ловушку:

(add-hook 'neotree-mode-hook
       (lambda ()
         (visual-line-mode -1)
         (setq truncate-lines t)))

Извините, что не дал исходный код в моем ответе, но я могу заверить вас, что установка, которую вы имеете в виду, на самом деле возможна. Это зависит только от вашего определения "режимов программирования". Большинство режимов поставляются с так называемой хук-функцией (см. http://www.gnu.org/software/emacs/manual/html_node/emacs/Hooks.html). Это в основном функции, которые выполняются при загрузке режима. Такой хук будет затем регулировать настройки, которые вы имеете в виду.

Другие вопросы по тегам