Semantic diff for markdown