Ian Donald, diagnostician and moralist