> I'm sure there is also a "cleaner" TeX way, but I'm not experienced enough for that.
I think you misunderstood my issue: your Lua way does the same thing than my TeX way: it displays:
ONE Cool2 Cat
3 Mouse
but that is NOT what I want. What I want is:
1 Cool
2 Cat
3 Mouse
So I need to check if the chapter label has been set empty or not by the user, because it is not empty (let's say the user chose the string "CHAPTER~" for the chapter label) I want to display this:
CHAPTER ONE Cool
CHAPTER 2 Cat
CHAPTER 3 Mouse
The way to do that is to check if the variable \currentstructurelabel is empty, so the code must be:
\define[1] \MyCommand{\doifelse{\currentsectioncountervalue}{1}{\doifnotemptyelse{\currentstructurelabel}{ONE}{#1}}{#1}}
\setuphead[chapter][deepnumbercommand=\MyCommand]
\starttext
\setuplabeltext[chapter=CHAPTER~]
\chapter{Cool}
\chapter{Cat}
\chapter{Mouse}
\stoptext
\starttext
\setuplabeltext[chapter=]
\chapter{Cool}
\chapter{Cat}
\chapter{Mouse}
\stoptext
But the problem is that in the second case, even if the chapter label is set empty the command \doifnotemptyelse{\currentstructurelabel} thinks the variable \currentstructurelabel is not empty. So there must be something invisible in it, like a strut or something.