ถ้าคุณชอบวิธีการเติมโหมด (ฉันไม่: p) แต่ไม่ใช่เมื่อมันทำงานมันควรจะง่ายต่อการแก้ไขโดยการยับยั้งมันเมื่อใดก็ตามที่คุณไม่อยู่ในสภาวะที่เหมาะสม
ตัวอย่างเช่น
(defvar plop/refill-enabler-function nil)
(defun plop/region-in-comment (beg end)
;; should really be comment-only-p, but that seems really broken for me
(not
(loop for c from beg to end
if (not (eq 'font-lock-comment-face (get-char-property c 'face)))
return t)))
(defun plop/refill-after-change-function (beg end len)
(unless undo-in-progress
(when (and plop/refill-enabler-function
(funcall plop/refill-enabler-function beg end))
(setq refill-doit end))))
(defun plop/install-refill-hack ()
(if refill-mode
(progn
(add-hook 'after-change-functions 'plop/refill-after-change-function nil t)
(remove-hook 'after-change-functions 'refill-after-change-function t))
(progn
(remove-hook 'after-change-functions 'plop/refill-after-change-function t))))
(defun plop/refill-hook ()
(set (make-local-variable 'plop/refill-enabler-function)
#'plop/region-in-comment)
(add-hook 'refill-mode-hook 'plop/install-refill-hack t t)
(refill-mode))
(add-hook 'some-hook 'plop/refill-hook)
โดยพื้นฐานแล้วมันจะลบฟังก์ชั่นที่เรียกใช้การเติมเงินafter-change-functions
และแทนที่ด้วยสิ่งที่จะตรวจสอบว่าเราอยู่ในความคิดเห็นก่อนที่จะทำสิ่งเดียวกัน