Подтвердить что ты не робот

Перезагрузка .emacs для всех активных буферов

Вопрос уже задан как перезагрузить файл .emacs после его изменения.

Предлагаемые решения заключались в использовании M-x load-file или M-x eval-region RET в измененной области.

Ни одно из этих решений не влияет на другие открытые буферы для меня. Есть ли способ перезагрузить файл .emacs для всех открытых буферов?

Следует также отметить, что M-x load-file не имеет желаемого эффекта по причинам, указанным в комментариях к которые отвечают.

4b9b3361

Ответ 1

Ваш .emacs файл - это глобальная конфигурация, которая оценивается только один раз. Он не применяется для каждого буфера отдельно.

Как вы на самом деле достигаете того, что хотите, действительно будет зависеть от того, что эти изменения .emacs. Некоторые elisp будут вступать в силу только при первой оценке; или когда буфер изменяет основные режимы; или когда файл загружен; и т.д. и т.д.

Если вы хотите перезагрузить некоторые или все файловые буферы, ibuffer делает это довольно легко:

  • M-x ibuffer RET, чтобы запустить ibuffer (я рекомендую привязать это к C-x C-b).
  • / f . RET для фильтрации по имени файла regexp ., чтобы соответствовать любому имени файла.
  • m (на [default]), чтобы отметить все отфильтрованные буферы.
  • V (верхний регистр), чтобы вернуть все отмеченные буферы.

или вы можете заменить шаги 2 + 3 на M-x ibuffer-mark-by-file-name-regexp RET . RET. Вы можете привязать эту команду к * f:

;; Bind `ibuffer-mark-by-file-name-regexp' to *f
(eval-after-load "ibuffer"
  '(define-key ibuffer-mode-map (kbd "* f") 'ibuffer-mark-by-file-name-regexp))

введите * c-h, чтобы просмотреть все остальные команды ibuffer-mark-*, которые связаны по умолчанию.

Ответ 2

Это может поразить вас как грубую силу, но

  • он обязательно перезагрузит ваш файл init (рассмотрите альтернативы .emacs)
  • он перезагрузит все открытые буферы (при условии, что вы используете рабочий стол, который вам нужно)
  • легко

    C-x C-c
    emacs --debug-init &