title: Why are some Emacs functions not available via `M-x`?
body: <p><a href="https://stackoverflow.com/a/296316/578288">This Stack Overflow answer</a> told me that I can set Emacs’s font size with <code>set-face-attribute</code>:</p>
  
  <pre class="lang-lisp prettyprint-override"><code>(set-face-attribute 'default nil :height 100)
  </code></pre>
  
  <p>The comments reveal that you can’t run <code>set-face-attribute</code> with <kbd>M-x</kbd>:</p>
  
  <blockquote>
    <p><img src="https://i.stack.imgur.com/xakW5.png" alt="M-x set-face-attribute [No match]"></p>
  </blockquote>
  
  <p>Instead, you have to run it with <kbd>M-:</kbd>:</p>
  
  <blockquote>
    <p><img src="https://i.stack.imgur.com/VakbH.png" alt="Eval: (set-face-attribute &#39;default nil :height 100)"></p>
  </blockquote>
  
  <p>Why are some commands, like <code>set-face-attribute</code>, not available via <kbd>M-x</kbd>?</p>