Reload .emacs for all active buffers

和自甴很熟 提交于 2019-12-18 11:52:50

问题


A question already has been asked how to reload a .emacs file after changing it.

The proposed solutions were to use M-x load-file or M-x eval-region RET on the changed region.

Neither of these solutions affect other open buffers for me. Is there a way to reload the .emacs file for all open buffers?

I should also note that the M-x load-file does not have the desired effect for reasons outlined in the comments to that answer.


回答1:


Your .emacs file is a global configuration that gets evaluated once only. It does not get applied to each buffer individually.

How you actually achieve what you want is really going to depend on what those .emacs changes are. Some elisp will only take effect the first time it is evaluated; or when a buffer changes major modes; or when a file is loaded; etc, etc...

If you want to reload some or all of the file buffers, ibuffer makes that pretty easy:

  • M-x ibuffer RET to start ibuffer (I recommend binding this to C-xC-b).
  • /f.RET to filter by filename regexp . so as to match any filename.
  • m (on [default]) to mark all filtered buffers.
  • V (uppercase) to revert all marked buffers.

or you could replace steps 2+3 with M-x ibuffer-mark-by-file-name-regexp RET . RET. You may wish to bind that command to *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))

type *c-h to see all the other ibuffer-mark-* commands which are bound by default.




回答2:


This may strike you as brute force, but

  • it will certainly reload your init file (consider alternatives to .emacs)
  • it will reload all open buffers (provided you are using desktop, which you should)
  • it is easy

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


来源:https://stackoverflow.com/questions/7211615/reload-emacs-for-all-active-buffers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!