The \noindent
control sequence is not a macro, but a primitive. It is not something that remains in effect for an entire paragraph. It instructs TeX to leave (internal) vertical mode and enter horizontal mode. (I sort of described TeX's vertical and horizontal modes in a blog post.)
More relevant to your question, there's no good way to distinguish which control sequences have arguments. The LaTeX 3 team has taken some pains to provide a consistent naming convention that lets the user know how many arguments and what type are expected. See the expl3
documentation for details.
To complicate matters, there are many LaTeX macros which, strictly speaking, do not take any arguments, but do in reality. For example, according to TeX, the \emph
macro takes no arguments. To see this, we can ask TeX to show the implementation of a macro using the \show
primitive:
*\show\emph
> \emph=macro:
->\protect \emph .
<*> \show\emph
This is a little tricky to read at first, but in the first line, I've asked TeX to show me the definition of \emph
(the *
is TeX's prompt). TeX responded by telling me that \emph
is a macro which takes no arguments and expands to \protect \emph
. (There's actually a space in the name of the latter control sequence, which is why there are two spaces between \emph
and the period.)
As an example of a macro which takes arguments, we can define \def\foo#1{asdf}
which takes a single argument. When we ask TeX for the definition, it responds as follows.
*\show\foo
> \foo=macro:
#1->asdf.
<*> \show\foo
Here, it's showing us that it takes a single argument (denoted #1
) and then expands to asdf
(note that we didn't actually use the argument).
What this means is that we can't even interrogate TeX to ask it which macros require arguments and which do not. (Technically speaking, the problem of deciding if a given macro requires an argument is undecidable. The proof is a simple reduction to the Halting problem.)
Unfortunately, this means that differentiating control sequences that require arguments from those that remain in effect until some point in the future (like the end of a group, or the end of a paragraph) from those that perform some discrete action right then is just a matter of experience and reading documentation. Hopefully LaTeX 3 will improve the situation.