wrap all buffer insertion/deletion in begin/end_user_action