Some specialized buffers contain read-only text, which cannot
be modified and therefore cannot be killed. The kill commands work
specially in a read-only buffer: they move over text and copy it to
the kill ring, without actually deleting it from the buffer.
Normally, they also beep and display an error message when this
happens. But if you set the variable
kill-read-only-ok to a
nil value, they just print a message in the echo area to
explain why the text has not been erased.
Before saving the kill to the kill ring, you can transform the
kill-transform-function. It’s called with the
string to be killed, and it should return the string you want to be
saved. It can also return
nil, in which case the string won’t
be saved to the kill ring. For instance, if you never want to save
a pure white space string to the kill ring, you can say:
(setq kill-transform-function (lambda (string) (and (not (string-blank-p string)) string)))
If you change the variable
kill-do-not-save-duplicates to a
nil value, identical subsequent kills yield a single
kill-ring entry, without duplication.