26

Every time I start Emacs I see a page of help text and a bunch of messages suggesting that I try the tutorial. How do I stop this from happening?

jfm3
  • 36,964
  • 10
  • 32
  • 35
  • 2
    Alternatively (if you believe the information displayed might still be useful to you, but want to be able to get rid of it quickly), note that typing `q` will kill that buffer. – phils Jun 17 '12 at 21:29
  • Any update for emacs 27.1? Apparently none of the answers below work – Daniel Vartanov Dec 12 '20 at 12:40

6 Answers6

22

Emacs has a couple of variables which inhibit these actions. If you edit your emacs control file (.emacs) and insert the following:

;; inhibit-startup-echo-area-message MUST be set to a hardcoded 
;; string of your login name 
(setq inhibit-startup-echo-area-message "USERNAME")
(setq inhibit-startup-message t)

that should solve your problem. They basically set the inhibit parameters to true to prevent the behavior you want to get rid of.

paxdiablo
  • 854,327
  • 234
  • 1,573
  • 1,953
  • 2
    Do `M-x describe-variable` and enter `user-login-name`; pass whatever is shown as arg. to the function as constant string. Say if it shows `JoeCoder` then in `.emacs` call `(setq inhibit-startup-echo-area-message "JoeCoder")` additionally put `(setq inhibit-startup-message t)`. Oh, also it works only when the former `setq` is independant i.e. no other symbols should be set in this call; see [here](https://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html#index-inhibit_002dstartup_002decho_002darea_002dmessage) for the reason. – legends2k May 27 '15 at 14:15
10

Put the following in your .emacs:

(setq inhibit-startup-message t)
(setq inhibit-startup-echo-area-message t)
jfm3
  • 36,964
  • 10
  • 32
  • 35
3

You can customize message in minibuffer therefore remove fanfare:

;; Hide advertisement from minibuffer
(defun display-startup-echo-area-message ()
  (message ""))
rgtk
  • 3,240
  • 1
  • 30
  • 36
  • 1
    Your example is good for users who wish to put a *different* message. If a user just wishes to suppress the message entirely, the following could be used: `(defun display-startup-echo-area-message () )` – lawlist Feb 15 '15 at 21:06
2

Put the following in your personal init file (ususally ~/.emacs.el):

(setq inhibit-startup-message t)

(Or (setq inhibit-startup-screen t) in with older Emacs versions.)

You can also turn off the message "For information about GNU Emacs and the GNU system, type C-h C-a." in the echo with the variable inhibit-startup-echo-area-message, but it is not enough to set it to t; you must set it to your username. See the documentation for inhibit-startup-echo-area-message.

Vebjorn Ljosa
  • 17,438
  • 13
  • 70
  • 88
  • 2
    Yeah, not even `(setq inhibit-startup-echo-area-message (user-login-name))` works, ffs. – trojanfoe May 18 '11 at 10:51
  • @VebjornLjosa: When I put my name there, it gets away with the GNU standard message but instead I get a three-line message: "#[nil "\300C\207" [t] 2]" – Emanuel Berg Jun 15 '12 at 17:33
  • @EmanuelBerg, yes those three lines are whatever is left in the buffer from before (i.e., the last entry in the `*Messages*` buffer). – Vebjorn Ljosa Jun 15 '12 at 19:46
  • Alright, but then it is not meaningful to use the fix as that cryptic message is three-lines, and even more annoying than the GNU one. Or did you find a way to circumvent this, possibly by appending a blank line to the *Messages* buffer? – Emanuel Berg Jun 16 '12 at 13:10
  • @EmanuelBerg: Doing `(delete-minibuffer-contents)` in `.emacs.el` may not help because the message you see may be produced in one of the hooks that run later. See http://www.gnu.org/software/emacs/manual/html_node/elisp/Startup-Summary.html. – Vebjorn Ljosa Jun 17 '12 at 09:02
  • Got it, `(setq inhibit-startup-echo-area-message (lambda () (user-login-name)))` `(add-hook 'emacs-startup-hook (lambda () (message "Custom message")))` – Carlo Espino Jan 28 '14 at 22:39
  • @trojanfoe See my comment on paxdiablo's answer. – legends2k May 27 '15 at 14:11
0

If your init file is byte-compiled, use the following form instead:

(eval '(setq inhibit-startup-echo-area-message "YOUR-USER-NAME"))
Pang
  • 9,564
  • 146
  • 81
  • 122
dodona
  • 1
  • 1
0

Add the below to your init file

(setq inhibit-startup-message t
inhibit-startup-echo-area-message t)