Snap object to vertex based on nearest vertex when pressing G (instead of centroid)

snap one object to another, but rather than the centroid of the moving object being used, instead the nearest vertex to the mouse cursor at the time of pressing G is used as the moving object’s snapping point.

If normal snapping is enabled, this could be calculated from the vertex normal, or from the vertex to the centroid.