add with-silent-modifications to prevent put-text-property from modifying the buffer