James Y Knight (fuhm) wrote,
James Y Knight

Killing emacs22 annoying splash screen

(But leaving it available when it's not annoying)

I recently upgraded from emacs 21 to emacs 22 on my desktop, and was irritated to note that "emacs filename" now splits the screen in two with one split showing a useless splash screen.

Emacs has always shown a splash-screen when invoked with no arguments, but the new behavior is to show it when your'e trying to edit files! This is, needless to say, stupid. In their defense, the splash-screen it shows has a checkbox on it "don't show this in the future", which will disable it forever by setting "inhibit-startup-screen" to t.

You might wonder why they even added a new annoying behavior that clearly will cause everyone to permanently disable the splashscreen? If you're really interested, check out this long thread (and I'm sure there's many others besides). Basically: it has to do that because RMS says so. It seems that the original implementation of the new splashscreen was much much more annoying than the current one, so I guess be glad that saner voices managed to have some sway.

Anyhow, this was sufficiently irritating to me that I'd like to disable it site-wide, so nobody I work with needs to be annoyed by it. I'd really rather not set inhibit-startup-screen to t by default, because I have nothing against the previous behavior of showing the startup screen when emacs is invoked with no arguments.

I fixed it, by adding the following to /etc/emacs22/site-start.d/01nosplash.el:

;; This hack removes the really annoying splash screen that emacs22
;; now displays by default, even when you're trying to edit a buffer.
;; While there is the variable inhibit-splash-screen, that only lets
;; you inhibit it *always*, which I don't really want to do in site
;; configuration. This patch causes it to still be shown when no
;; buffers were specified on the command-line, like emacs used to do,
;; before RMS forced it to be made annoying.
;; This works because this function is called whenever a filename is
;; specified on the command line, which is almost exactly when I want
;; to inhibit the splashscreen. (it also catches a couple other cases
;; like -script, -load, and -L, but that doesn't really matter).
;; --jknight

(defadvice command-line-normalize-file-name
      (before kill-stupid-startup-screen activate)
  (setq inhibit-startup-screen t))

Hope it helps you too. :)

  • msktutil -- Linux/Active Directory keytab management

    At work, I've been working on a little side project for a while: getting my Linux (Debian Lenny) box to play nicely with our Windows Active Domain…

  • The Hunger Games

    I just finished reading the book "The Hunger Games" by Suzanne Collins, for the second time in as many weeks. The first time through, I read the…

  • Apple mail no longer uses format=flowed???

    It seems to always send mail with quoted-printable encoding now...sigh. I sent this feedback to Apple with their "Provide Mail Feedback" menu…

  • Post a new comment


    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.