case-insensitive and substring tab completion