Question: I want to be able to get a drop-down list of partial matches to Elisp function names (installed or those already defined in the buffer) as shown in the 
screen-shot below from the YouTube video: <https://youtu.be/QaX3AaK3_Lk?t=332>

How do I achieve this? Is there a standard library for this? 

[![enter image description here](https://i.stack.imgur.com/RUO2c.png)](https://i.stack.imgur.com/RUO2c.png)

Answer: 
I'd like to recommend the package [company-mode](http://company-mode.github.io). I found it easier to setup and config. For beginners, using the following configuration will enable the autocomplete out of box.

```
(use-package company
  :ensure t
  :config
  (progn
    (add-hook 'after-init-hook 'global-company-mode)))

```

Moreover, there's a lot of backends you can use for specific programming languages. The following is how to config auto complete for python.

```
(use-package company-jedi
  :ensure t
  :config
  (progn 
    (setq jedi:complete-on-dot t
          jedi:use-shortcuts t)
    (defun user/python-mode-hook ()
      (add-to-list 'company-backends 'company-jedi))
    (add-hook 'python-mode-hook 'user/python-mode-hook)))

```
Without using external packages you can get autocompletion visible in minibuffer. Add this to config:

```
(setq tab-always-indent 'complete)

```