115: Why doesn't this [terminal or window-system setup] code work in my
.emacs file, but it works just fine after Emacs starts up?
During startup, Emacs initializes itself according to a given code/file
order. If some of the code executed in your .emacs file needs to be
postponed until the initial terminal or window-system setup code has been
executed but is not, then you will experience this problem (this
code/file execution order is not enforced after startup).
To postpone the execution of Emacs Lisp code until after terminal or
window-system setup, treat the code as a "lambda list" and set the value
of either the "term-setup-hook" or "window-setup-hook" variable to this
"lambda function." For example,
(setq term-setup-hook
(function
(lambda ()
(cond ((string-match "\\`vt220" (or (getenv "TERM") ""))
;; Make vt220's "Do" key behave like M-x:
(global-set-key [do] 'execute-extended-command))
))))
For information on what Emacs does every time it is started, see the
lisp/startup.el file.