I don't find this warning particularly helpful and pretty distracting because it hides the current text in the echo area for a brief moment. Is also seems unnecessary, because I will notice anyway that I cannot write in read-only areas. Is there a way to disable it?
Yes, you can disable these messages by setting
command-error-function to a function that ignores
(defun my-command-error-function (data context caller) "Ignore the buffer-read-only signal; pass the rest to the default handler." (when (not (eq (car data) 'buffer-read-only)) (command-error-default-function data context caller))) (setq command-error-function #'my-command-error-function)
(Tested using GNU Emacs 24.5.1.)
Source of the 'buffer read-only' error
I believe that the source of that error:
Buffer is read-only: <#BUFFER-NAME> is in the C source code.
So the solution to this would be to tweak the source code and build emacs locally by commenting out this specific line.
For reference, here is that code snippet that throws that error:
if (!NILP (BVAR (current_buffer, read_only)) && NILP (Vinhibit_read_only) && NILP (Fget_text_property (pos, Qinhibit_read_only, Qnil))) xsignal1 (Qbuffer_read_only, Fcurrent_buffer ()); return Qnil;
.. and commenting out that
xsignal line should do the trick.
There is a much easier way to avert this annoyance for the duration you are working in a read-only buffer .. you can temporarily NOT make it read-only.
M-x read-only-mode(bound by default to
C-x C-q) toggles any buffer between read-only mode and editable mode.
So if you are getting a lot of these errors, simply make the buffer temporarily editable by hitting
A note of warning: Doing the C source hack could be a major source of confusion in future. So I wouldn't do it.