M.P.
A child will not starve. Be sure to have one thing for each meal that he likes and then allow him to eat what he wants. I suggest that if you're less anxious about what he eats he will gradually relax and try, on his own, other foods.
Yogurt and cashews contain protein. People who are allergic to milk can often eat yogurt because of the way it's made. It's great that he drinks water. Fruit juices are loaded with calories and carbs. What he eats is alright and since he is healthy I wouldn't stress about it.
My 7 yo grandson is also a picky eater and has always been. He has a sensory processing disorder. What he eats or doesn't eat seems like such a small thing in comparison to his learning and behavior issues. His occupational therapist is going to give his mother a plan for increasing what foods he eats. It's something like first having the food on the table but not even asking him to eat any. Move the serving bowl closer to his plate over time. That's all that I remember. I'll try to get a copy of the plan and add it to this.
I think the focus is to provide the food but let the child decide for himself whether or not he eats it. No pushing it on him.
You could also try making certain foods fun by forming funny faces or doing other things with them such as ants on a log which is celery filled with peanut butter and put raisins on top. Perhaps have him help you choose foods and help prepare them.
I remember not liking meat as a youngster because it was tough. I love meat now. Have you tried cutting the meat up into very small pieces or serving hamburger? If he ate better as a baby, perhaps you could puree some foods for him.