One of the most useful features of Emacs is its
interactive completion. Whenever you need to input the name of some item, Emacs allows you to type some parts of the name and then type TAB to see a list of items that match what you have typed so far. But completion is more sophisticated than just prefix-matching. You can use wildcards (for example *green TAB will show colour names containing the substring ‘green’) and when the completion items have multiple words (separated by hyphens or spaces), completion works on each word individually, so that you can type M-x t-d-o-e RET to run the command
toggle-debug-on-error. Naturally you can customize the set of completion mechanisms using the
completion-styles setting.
The Emacs/Perforce integration that I maintain,
p4.el, implements completion for each kind of Perforce item that you might need to name: branches, numbered pending changelists, clients, filespecs, groups, help topics, jobs, labels, and users. However,
this works poorly in the case of changelists and jobs, because (
all you get when you type TAB is a list of opaque identifiers that give you no help in choosing the item you want. )