AFAICS, the do_update() code states: [[ ${#targets[@]} -gt 0 ]] \ || die -q "No valid target for ${EDITOR_VAR} found" Sadly, this means that after removing the last provider the system is left with a broken selection and there's no help fixing it. First of all, I think 'eselect ... update' should just remove the envfile (or unset it) in that case, so that broken variable is not spread onto the system, breaking such tools as git (eselect pager). Secondly, I think it would be useful to have 'eselect ... unset' or some other way to disable a particular variable even though there are working implementations installed.
It's the user's responsibility to set these variables correctly. If he shoots himself in the foot by removing all editors (or pagers, or package managers) from his system, there's not much the eselect module can do about it.