Subject: bug#4917: Error: Attempt to modify read-only object

From: Dan Nicolaescu <[email-masked]>
Date: Thu, 12 Nov 2009 16:35:06 -0800 (PST)

Juri Linkov <[email-masked]> writes:

  > Starting Emacs fails with the error:
  > 
  >   Warning (initialization): An error occurred while loading `/home/juri/.emacs':
  > 
  >   error: Attempt to modify read-only object
  > 
  >   To ensure normal operation, you should investigate and remove the
  >   cause of the error in your initialization file.  Start Emacs with
  >   the `--debug-init' option to view a complete error backtrace.
  > 
  > Starting Emacs with the `--debug-init' option displays:
  > 
  >   Debugger entered--Lisp error: (error "Attempt to modify read-only object")
  >     delete(("\\`\357\273\277" . utf-8-with-signature) (("\\`BABYL OPTIONS:[ 	]*-\\*-[ 	]*rmail[ 	]*-\\*-" . no-conversion) ("\\`\376\377" . utf-16be-with-signature) ("\\`\377\376" . utf-16le-with-signature) ("\\`\357\273\277" . utf-8-with-signature) ("\\`;ELC" . emacs-mule)))
  >     (setq auto-coding-regexp-alist (delete (rassoc ... auto-coding-regexp-alist) auto-coding-regexp-alist))
  > 
  > The reason of this error in .emacs is the lines that remove a match
  > for `utf-8-with-signature' from `auto-coding-regexp-alist' that allows
  > to always display the BOM (Byte-order mark signature) to be able
  > to remove it without the need to visit files literally:
  > 
  >   (setq auto-coding-regexp-alist
  > 	(delete (rassoc 'utf-8-with-signature auto-coding-regexp-alist)
  > 		auto-coding-regexp-alist))
  > 
  > Before yesterday there were no problems with this.

This is mine, too aggressive use of purecopy.
auto-coding-regexp-alist needs to be changed like this:

(defcustom auto-coding-regexp-alist
  (mapcar (lambda (arg) (cons (purecopy (car arg)) (cdr arg)))
  '(("\\`BABYL OPTIONS:[ \t]*-\\*-[ \t]*rmail[ \t]*-\\*-"  . no-conversion)
[....]

I'll check it in when I get a chance.  If it's in your way, please feel
free to do it earlier.