we should get mrsh to be able to do best-effort parsing for us and use that in a custom completer rather than split::sh + complete::fs
upon further thought we can just fall back to split::sh/complete::fs if parsing fails and it'll probably be fine
went with some improvements to split::sh instead of this, not perfect but good enough for now