There is no GNU Emacs convention wrt case for Emacs-Lisp function and variable names. (There can be any number of such "conventions" that anyone could come up with, of course.)
The "Emacs Lisp Style Guide" that you reference is just one person's proposed guidelines.
A (very) few longstanding libraries distributed with Emacs do use two styles that you mentioned: Some names are title-case (capitalized) and some are lowercase.
In some cases a distinction was made between names of commands and customizable variables that it is expected might be typed by users (e.g., for M-x
or C-h f
), and names of non-interactive functions and variables that are expected to be invoked mainly by keys or from Lisp code.
But this has not been adopted generally, and it has not always been implemented consistently. It typically applies to particular modes (e.g. Info-mode
) where there are lots of commands that a user is not expected to input by name.
For example, the commands in buff-menu.el
that are expected to be invoked mainly by M-x
are lowercase (for typing convenience), and the commands that are bound to keys in the buffer-list display are capitalized, as are other objects in the library (variables, non-interactive functions, etc.).
Such libraries are a small minority (hence the doc says that usually function and variable names are lowercase). But the logic behind this design by RMS 30 years ago is still valid today. The idea is to simplify choices (and typing) for commands that you might invoke using M-x
, by excluding commands that are useful only in a particular buffer and are bound to keys there. So Info-prev-reference
(bound to C-M-i
in Info), but info-apropos
(useful outside Info).
Usually it makes sense to use all lowercase, especially for names that a user will type (e.g., to M-x
, as input). It's just easier that way. And in practice most names are in fact lowercase.
But you can use whatever you want. Use whatever you feel is most convenient for your use cases. It is the particular context that should guide you.
If it is important for your use case to distinguish command Abc
from command abc
, go for it. This is Lisp. You can have command, variable, face,.. whatever names that start with digits, symbols (e.g. >
), etc. - pretty much any chars you like.
If you want to keep things simple for most users who might type a name using a common keyboard, then you might want to stick with lowercase a
to z
plus digits and hyphen (-
) instead of underscore (_
), to obviate their needing to use the Shift key. But it's really up to you.