Subject: bug#8463: 24.0.50; [PATCH] Direct Edit in *Occur* Buffer

From: Glenn Morris <[email-masked]>
Date: Wed, 01 Jun 2011 19:03:36 -0400

"Andrew W. Nosenko" wrote:

> Is there a way to _disable_ this feature?  I'm quite often edit the
> *Occur* and *grep* buffers for line-up results, etc, just for easier
> understanding results, but I don't want these edits to be mirrored
> into original lines or files from where they are come.

Me too.

I expect C-x C-q to toggle the read-only state of a buffer, not switch
me into some unusual mode. I suggest binding this new mode to some other
key.

Other issues with this:

1. After C-x C-q, I can no longer kill entire lines in the occur buffer.
Trying to do so reports "Text is read-only".

2. After C-x C-q, If I delete some text in the occur buffer, then use
"undo", when I reach the point at which there is no more to undo, I get:
"Wrong type argument: markerp, nil" rather than "No further undo information".

Debugger entered--Lisp error: (wrong-type-argument markerp nil)
  marker-buffer(nil)
  occur-after-change-function(1 40 39)
  primitive-undo(1 ((nil font-lock-face underline 1 . 40) (t 0 . 0)))
  undo-more(1)
  undo(nil)
  call-interactively(undo nil nil)

3. After C-x C-q, M-x revert-buffer in the occur buffer triggers an error:

apply: Wrong number of arguments: #[(regexp nlines bufs &optional buf-name)

  occur-1("*Occur*")
  apply(occur-1 "*Occur*")
  occur-revert-function(t nil)
  revert-buffer(t)
  call-interactively(revert-buffer t nil)
  execute-extended-command(nil)
  call-interactively(execute-extended-command nil nil)

I guess the mode change clobbers occur-revert-arguments.