You gotta try out using describe-symbol
because it is usually what you really want from describe-function
and describe-variable
.
The most useful part is that it instantly teaches you when there are both a variable and a function with the same name. Sometimes it is surprising and better to know right away. For example M-x describe-symbol RET emacs-version RET
:
emacs-version is an interactive compiled Lisp function in ‘version.el’. (emacs-version &optional HERE) Display the version of Emacs that is running in this session. With a prefix argument, insert the Emacs version string at point instead of displaying it. If called from Lisp, by default return the version string; but if the optional argument HERE is non-nil, insert the string at point instead. Don’t use this function in programs to choose actions according to the system configuration; look at ‘system-configuration’ instead. Probably introduced at or before Emacs version 19.20. ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― emacs-version is a variable defined in ‘C source code’. Its value is "28.1" Version numbers of this version of Emacs. This has the form: MAJOR.MINOR[.MICRO], where MAJOR/MINOR/MICRO are integers. MICRO is only present in unreleased development versions, and is not especially meaningful. Prior to Emacs 26.1, an extra final component .BUILD is present. This is now stored separately in ‘emacs-build-number’. Probably introduced at or before Emacs version 19.20.