Editor with snapping