Does it ever happen that you are thumping along in emacs, and suddenly you are in a mode or buffer that you never knew about before? You must have unintentionally hit some keystroke that caused the change, but what was it?
You can find the answer by typing
C-h l (that's a little "L"). This runs
view-lossage, which shows the last 100 characters typed.
For instance, this morning I was suddenly staring at a blank buffer called "ChangeLog". What is that thing? To find out, I typed
C-h l. A *Help* buffer opened with a few lines of symbols. Here are the last couple lines:
C-s F I X M E C-a C-n C-n C-n C-n C-n C-n C-n C-n C-x 2 C-x o C-x V a r C-x u C-h l
You start reading the lossage at the end. So, at the end I can see the
C-h lfrom invoking
view-lossage. Right before that, an undo (
C-x u) to get rid of the typing I had just done into the unknown ChangeLog buffer. Right before that,
C-x V a r. Ah, I meant to search for "Var", but I must have hit
C-s. This is the culprit.
So what do those keys do? It opened a new buffer, but did it have some other harmful side-effect I want to know about? Hit
C-h kto start the
describe-keyfunction, and start typing
a.Before I could type the 'r', the *Help* buffer showed up and explained that I had entered the keystroke for
vc-update-change-log, a function that seems like it was more useful back in the days of RCS than today, but which doesn't harm anything else. Anyway, mystery solved!
There tend to be two situations in which I call
view-lossage. Number one is where I think, "Hmm, I don't know what I did, but it might be useful." For that case, view-lossage lets you explore that functionality. That was the case this morning with ChangeLog; I was curious about it but it turned out not to be useful to me. Number two is where I think "I don't ever want that to happen again". In that case, figure out the offending keystroke, and then disable it in your .emacs file, like this:
(global-unset-key "\C-[\C-[") ;; prefix-command (global-unset-key "\C-x\C-p") ;; mark-page (global-unset-key "\C-x\C-n") ;; set-goal-column
Those are typos I've made before that have annoying effects, so I just completely disable those keystrokes (
mark-pageis especially nasty: it sets the mark at the end of the file, and moves the point to the beginning of the file, so there's not always an easy way to jump back to where you were in the file).