Skip to content

Instantly share code, notes, and snippets.

@TheBB
Created November 15, 2018 14:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TheBB/3cb185b75d826a67c31d09983e12eedc to your computer and use it in GitHub Desktop.
Save TheBB/3cb185b75d826a67c31d09983e12eedc to your computer and use it in GitHub Desktop.
(defvar-local bb--region-before-change nil)
(defun bb--before-change (beg end)
(setq-local bb--region-before-change
(cons beg (buffer-substring-no-properties beg end))))
(defun bb--after-change (beg end len)
(let* ((pre-beg (car bb--region-before-change))
(pre-str (cdr bb--region-before-change))
(nbytes (string-bytes (substring pre-str (- pre-beg beg) len))))
(let ((new (cons pre-beg
(concat (substring pre-str 0 (- beg pre-beg))
(buffer-substring-no-properties beg end)
(substring pre-str (+ len (- beg pre-beg)))))))
(message "# bytes before change: %S" nbytes)
(setq-local bb--region-before-change new))))
(defun bb--test ()
(interactive)
(add-hook 'before-change-functions 'bb--before-change nil t)
(add-hook 'after-change-functions 'bb--after-change nil t))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment