Every command is a function, but not every function is also a command.1
A command includes a call to interactive; this is why commands are commonly referred to as "interactive functions". Commands can be invoked via M-x name-of-command RET, and they can also be bound to a key sequence. Regular functions do not include a call to interactive, can not be ...
What a great question! Here is the path I've taken:
Step 0: Read the Emacs Tutorial
Read the Emacs Tutorial before anything else. It sounds like you've done this. Good on ya! However, for anyone coming to this at a later time, this is the place to start your Emacs journey. There are a lot of misleading blog posts out there. They over complicate ...
The describe-key command (C-h k) will tell you what command is bound to a given key sequence. To go the other way and find out what keys (if any) are bound to a command, use where-is (C-h w).
You can list all available key bindings using describe-bindings (C-h b).
As of Emacs 25, you can also use view-lossage (C-h l) to see the recent history of every key ...
Yes. Library help-fns+.el defines command describe-command.
And it redefines describe-function so that it does describe-command if you give it a prefix arg.
The library binds describe-command to C-h c (describe-key-briefly is moved to C-h C-c).
The same library defines other help commands, such as describe-file, describe-buffer, describe-keymap, and ...
I recommend the "Emacs Lisp Intro".
The "Emacs Lisp Intro" might be already available in info format within your Emacs. Try C-h i m Emacs Lisp Intro RET or evaluate (info "(eintr) Top") in Emacs.
If this fails search the web for "Emacs Lisp Intro".
In my experience, the included tutorial on Emacs Lisp was not too helpful (I tried twice over the years and failed). Instead, I finally used the included Emacs Lisp Reference.
What finally did work:
Realize that there are two aspects to Emacs Lisp: The basic language itself, and the interaction with Emacs. Separate these two in your mind. Focus first on ...
If you can't use a particular key combination because of your terminal, you can often fake it by manually simulating the key modifier. The following combinations work exactly as though you had used the corresponding modifier key:
C-x @ a alt
C-x @ m meta
C-x @ c control
C-x @ h hyper
C-x @ s super (lowercase s)
C-x @ S shift (...
You've seen the basics, really. Your main problem was that this documentation was wrong, not that you weren't looking in the right place.
The slightly more direct way to read that documentation for a mode is by calling describe-function:
And the bit you missed is that, should the mode in question be indexed in the manual, you can ...
If you type C-h f <RET>, it describes the function called by the
innermost Lisp expression in the buffer around point, provided that
function name is a valid, defined Lisp function. (That name appears as
the default while you enter the argument.
You can use both make-button or make-text-button. For example
(defun button-pressed (button)
(message (format "Button pressed!")))
'help-echo "Click Button"
(make-button 1 10 :type 'custom-button)
This will create a button at char 1 to 10 in the current ...
Apropos help in Emacs is by no means limited to function apropos.
M-x apropos documentation. It lets you match keywords or a regexp against doc strings. Very helpful when you don't know how the function might be named but you might be able to guess some words used in its doc.
For example, M-x apropos-documentation RET shift bit RET shows you the names and ...
Eliza stems from 1960s research in AI. It goes beyond the fun as far as AI research is concerned; it's wildly out of date, but still a common, reasonably fun programming exercise. As far as psychotherapy is concerned, it is about fun. It can alleviate frustration, but it isn't supposed to bring serious psychological help.
doctor.el is in the lisp/play/ ...
I can't find this built-in. It is fairly easy to make a wrapper around describe-function that only completes command names when called interactively. In the implementation below, I duplicated the interactive form from describe-function and changed the fboundp test to commandp. As an added bonus, this function offers all function names when called with a ...
Customize the variable help-window-select:
"Non-nil means select help window for viewing.
never (nil) Select help window only if there is no other window
on its frame.
other Select help window unless the selected window is the
only other window on the help window's frame.
always (t) Always select the help ...
Yes. There is a function key-description that takes a list or vector of keys and returns a string that describes them. This is used by the built-in help facilities such as describe-key and describe-function to display information about key bindings. It calls single-key-description on each element of the input list. Both of these are written in C rather than ...
You can use rename-uniquely. Go to the help buffer, call rename-uniquely. It renames the buffer to something like *Help*<2>. Now If you open another help buffer, it doesn't affect *Help*<2>.
Rename current buffer to a similar name not already taken.
Start with the Emacs Wiki page Learn Emacs Lisp.
Not that that page itself will teach you Emacs Lisp. It will instead point to learning resources -- exactly what you're looking for here, with your question. Many users have contributed to it and edited it over a period of years. That presents advantages as well as disadvantages wrt one user's blog. The ...
To quote the Emacs Lisp Manual,
t is the preferred way to represent the truth value true. When you
need to choose a value that represents true, and there is no other
basis for choosing, use t. The symbol t always has the value t.
t stands for "True".
This is important because it is used for decision making. It is used in decisions such as "If ...
(with-help-window "*My Help Buffer*" ; Whatever buffer name you like.
;; Use `princ`, `prin1`, `terpri`, etc. to put text in the displayed buffer
Key q will automatically be bound to do what you want.
C-h f with-help-window says:
with-help-window is a Lisp macro in help.el.
(with-help-window BUFFER-OR-NAME &rest BODY)...
Menu bar items are represented as keybindings internally. So, this means that on the one hand keybinding-related actions will involve menu bar items and on the other one that clicking the "Search" item in the menu bar would yield a list where isearch-forward would be a valid action.
FWIW, the docs tell me something slightly different:
It is bound to C-s, &...
As far as I know, there is no such tool in Emacs or a 3rd-party library. But perhaps someone else will come up with one.
You have correctly pointed to the two main sources of info I would have mentioned: (1) pop-up info in tooltips and (2) studying mode-line-format and its doc (doc string and Elisp manual, node Mode Line Top).
A third source of info that ...
Emacs has a special case for this, hitting the help character (default: either C-h or F1) after an incomplete key sequence will execute describe-prefix-bindings and show you possible commands starting with it.