view .elisp/settings/80.fill-paragraph.el @ 461:607bc0754921

emacs: jettison ancient python-mode.el I'm not really sure why I've been carrying this around, but it started breaking things in *extremely* weird ways today (query-replace being broken, for example) so it has clearly overstayed its welcome.
author Augie Fackler <raf@durin42.com>
date Thu, 07 Jun 2018 17:23:51 -0400
parents 887566d21cd8
children
line wrap: on
line source

(defun kf-fill-paragraph (&optional justify)
  "Like fill-paragraph, but don't mark the buffer as modified if no change.

Emacs's native fill-paragraph is like the burglar who breaks into
your house, rearranges all your furniture exactly as it was, and
departs: even if the result of the fill is to leave the buffer in
exactly the same state, it still marks the buffer as modified so you
know you've been broken into.

Note: to get this accepted into Emacs, it should watch the md5sum for
just the affected region rather than the entire buffer.  See
`fill-region' and `fill-region-as-paragraph' in textmodes/fill.el.
The elegant solution would be a new macro, '(detect-buffer-unmodified
from to)' or something, that just wraps the relevant body of code in
those two functions.  Then it could be used by other fill functions
easily too."
  (interactive "P")
  (let ((orig-md5sum (md5 (current-buffer)))
        (was-modified-before-fill (buffer-modified-p)))
    (fill-paragraph justify)
    (let ((new-md5sum (md5 (current-buffer))))
      (when (string-equal orig-md5sum new-md5sum)
        (set-buffer-modified-p was-modified-before-fill)))))

(if (eq (key-binding "\M-q") 'fill-paragraph)
    (global-set-key "\M-q" 'kf-fill-paragraph))