As a 2-minute looking over the definition of buff-menu.el and over the definition of `19.5 Operating on Several Buffers`, I think I need to check whether the buffer was modified, and in case that it was, I insert '*' on the 3rd column, otherwise insert space. I remember this problem repeating for many years, but today it disturbed me again , and this is why I mailed. In fact, the patch of the function "Buffer-menu-unmark" will look something like: if "the 3rd column is S (from Save)" then (if (buffer-modified-p current-buffer-from-the-point) has-modified-flag-on then insert "*" else insert " ". This is the complete logic of the patch . Correct ?